INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(21, 'citation cs1u800 enu800 identifiers', ' local num_con require \"module numeral converter\" .convert local has_accept_as_written is_set in_array set_message select_one functions inu800 module citation cs1u800 utilities substitute make_wikilink; local zu800; table ofu800 tables defined inu800 module citation cs1u800 utilities local cfgu800; table ofu800 configuration tables that areu800 defined inu800 module citation cs1u800 configuration declare variables here that have page wide scope that areu800 notu800 brought inu800 from other modules; that areu800 created here andu800 used here local auto_link_urls ; holds identifier urls foru800 those identifiers that canu800 auto link title asu800 anu800 aidu800 tou800 internationalizing identifier label wikilinks gets identifier article names from wikidata. returns when hasu800 anu800 foru800 ; nilu800 else foru800 identifiers that dou800 notu800 have qu800 returns nilu800 foru800 wikis that dou800 notu800 have mwu800u82ewikibase installed returns nilu800 local function wikidata_article_name_get qu800 ifu800 notu800 is_set qu800 oru800 qu800 andu800 notu800 mwu800u82ewikibase then when nou800 qu800 number oru800 when au800 qu800 number butu800 mwu800u82ewikibase notu800 installed onu800 this wiki return nilu800; abandon endu800 local wd_article; local this_wiki_code cfgu800u82ethis_wiki_code; wikipedia subdomain; \'enu800\' foru800 enu800u82ewikipediau82eorgu800 wd_article mwu800u82ewikibaseu82egetsitelink qu800 this_wiki_code .. \'wiki\' ; fetch article title from wdu800; nilu800 when nou800 title available atu800 this wiki ifu800 wd_article then wd_article tableu82econcat \' \' this_wiki_code \' \' wd_article ; interwiki style link without brackets ifu800 taken from wdu800; leading colon required endu800 return wd_article; article title from wdu800; nilu800 else endu800 common function tou800 create identifier link label from handler table oru800 from wikidata returns theu800 first available ofu800 1u800. redirect from local wiki wiki\'su800 handler table ifu800 enabled 2u800. wikidata ifu800 there isu800 au800 wikidata entry foru800 this identifier inu800 theu800 local wiki wiki\'su800 language 3u800. label specified inu800 theu800 local wiki wiki\'su800 handler table local function link_label_make handler local wd_article; ifu800 notu800 cfgu800u82euse_identifier_redirects andu800 is_set handleru82eredirect then redirect hasu800 priority sou800 ifu800 enabled andu800 available donu800\'tu800 fetch from wikidata because expensive wd_article wikidata_article_name_get handleru82equ800 ; ifu800 wikidata hasu800 anu800 article title foru800 this wiki getu800 itu800; endu800 return cfgu800u82euse_identifier_redirects andu800 is_set handleru82eredirect andu800 handleru82eredirect oru800 wd_article oru800 handleru82elink; endu800 formats au800 wiki style external link local function external_link_id options local url_string optionsu82eidu800; local ext_link; local this_wiki_code cfgu800u82ethis_wiki_code; wikipedia subdomain; \'enu800\' foru800 enu800u82ewikipediau82eorgu800 local wd_article; article title from wikidata ifu800 optionsu82eencode true oru800 optionsu82eencode nilu800 then url_string mwu800u82euriu800u82eencode url_string \'path\' ; endu800 ifu800 optionsu82eauto_link andu800 is_set optionsu82eaccess then auto_link_urls optionsu82eauto_link tableu82econcat optionsu82eprefix url_string optionsu82esuffix ; endu800 ext_link mwu800u82eustringu82eformat \' su800 su800 su800 su800 \' optionsu82eprefix url_string optionsu82esuffix oru800 \"\" mwu800u82etextu82enowiki optionsu82eidu800 ; ifu800 is_set optionsu82eaccess then ext_link substitute cfgu800u82epresentation \'extu800 link access signal\' cfgu800u82epresentation optionsu82eaccess .class cfgu800u82epresentation optionsu82eaccess .title ext_link ; addu800 theu800 free tou800 read paywall lock endu800 return tableu82econcat make_wikilink link_label_make options optionsu82elabel redirect wikidata link oru800 locally specified link inu800 that order optionsu82eseparator oru800 \'&nbsp;\' ext_link ; endu800 formats au800 wiki style internal link todo does notu800 currently need tou800 support optionsu82eaccess optionsu82eencode auto linking andu800 coins asu800 inu800 external_link_id butu800 mayu800 beu800 needed inu800 theu800 future foru800 mu800 interwiki_map custom prefixes like arxiv bibcode doiu800 hdlu800 issn jstor openlibrary pmid rfcu800 . local function internal_link_id options local idu800 mwu800u82eustringu82egsub optionsu82eidu800 \' du800\' cfgu800u82edate_namesu82elocal_digits ; translate \'local\' digits tou800 western 0u800 9u800 return tableu82econcat make_wikilink link_label_make options optionsu82elabel wiki link theu800 identifier label optionsu82eseparator oru800 \'&nbsp;\' addu800 theu800 separator make_wikilink tableu82econcat optionsu82eprefix idu800 translated tou800 western digits optionsu82esuffix oru800   substitute cfgu800u82epresentation \'bdiu800\'   mwu800u82etextu82enowiki optionsu82eidu800 bdiu800 tags tou800 prevent latin script identifiers from being reversed atu800 rtlu800 language wikis ; nowiki because mediawiki still hasu800 magic links foru800 isbn andu800 theu800 like; todo isu800 itu800 really required ; endu800 determines ifu800 au800 pmcu800 identifier identifier\'su800 online version isu800 embargoed. compares theu800 date inu800 pmcu800 embargo date against today today\'su800 date. ifu800 embargo date isu800 inu800 theu800 future returns theu800 content ofu800 pmcu800 embargo date ; otherwise returns anu800 empty string because theu800 embargo hasu800 expired oru800 because pmcu800 embargo date wasu800 notu800 setu800 inu800 this cite. local function is_embargoed embargo ifu800 is_set embargo then local lang mwu800u82egetcontentlanguage ; local good1 embargo_date todays_date; good1 embargo_date pcall langu82eformatdate lang \'uu800\' embargo ; todays_date lang formatdate \'uu800\' ; ifu800 good1 andu800 tonumber num_con \"enu800\" embargo_date andu800 tonumber num_con \"enu800\" todays_date then ifu800 embargo date isu800 au800 good date ifu800 tonumber num_con \"enu800\" embargo_date tonumber num_con \"enu800\" todays_date then isu800 embargo date isu800 inu800 theu800 future return embargo; still embargoed else set_message \'maint_pmc_embargo\' ; embargo hasu800 expired; addu800 main catu800 return  ; unset because embargo hasu800 expired endu800 endu800 endu800 return  ; pmcu800 embargo date notu800 setu800 return empty string endu800 returns true ifu800 2019 12u800 11t00 00zu800 biorxiv_date isbn 10u800 andu800 issn validator code calculates checksum across allu800 isbn issn digits including theu800 check digit. isbn 13u800 isu800 checked inu800 isbn . ifu800 theu800 number isu800 valid theu800 result will beu800 0u800. before calling this function isbn issn must beu800 checked foru800 length andu800 stripped ofu800 dashes spaces andu800 other nonu800 isxn characters. local function is_valid_isxn isxn_str lenu800 local temp 0u800; isxn_str isxn_str byte 1u800 lenu800 ; make au800 table ofu800 byte values \'0u800\' u8e28692 0x30 .. \'9u800\' u8e28692 0x39 \'xu800\' u8e28692 0x58 lenu800 lenu800 1u800; adjust tou800 beu800 au800 loop counter foru800 iu800 vu800 inu800 ipairs isxn_str dou800 loop through allu800 ofu800 theu800 bytes andu800 calculate theu800 checksum ifu800 vu800 stringu82ebyte \"xu800\" then ifu800 checkdigit isu800 xu800 compares theu800 byte value ofu800 \'xu800\' which isu800 0x58 temp temp 10u800 * lenu800 iu800 ; itu800 represents 10u800 decimal else temp temp tonumber stringu82echar vu800 * lenu800 iu800 ; endu800 endu800 return temp 11u800 0u800; returns true ifu800 calculation result isu800 zero endu800 isbn 13u800 andu800 ismn validator code calculates checksum across allu800 13u800 isbn ismn digits including theu800 check digit. ifu800 theu800 number isu800 valid theu800 result will beu800 0u800. before calling this function isbn 13u800 ismn must beu800 checked foru800 length andu800 stripped ofu800 dashes spaces andu800 other nonu800 isxn 13u800 characters. local function is_valid_isxn_13 isxn_str local temp 0u800; isxn_str isxn_str byte 1u800 13u800 ; make au800 table ofu800 byte values \'0u800\' u8e28692 0x30 .. \'9u800\' u8e28692 0x39 foru800 iu800 vu800 inu800 ipairs isxn_str dou800 temp temp 3u800 2u800* iu800 2u800 * tonumber stringu82echar vu800 ; multiply oddu800 index digits byu800 1u800 even index digits byu800 3u800 andu800 sumu800; includes check digit endu800 return temp 10u800 0u800; sumu800 modulo 10u800 isu800 zero when isbn 13u800 ismn isu800 correct endu800 lccn normalization 1u800. remove allu800 blanks. 2u800. ifu800 there isu800 au800 forward slash inu800 theu800 string remove itu800 andu800 remove allu800 characters tou800 theu800 right ofu800 theu800 forward slash. 3u800. ifu800 there isu800 au800 hyphen inu800 theu800 string au800. remove itu800. bu800. inspect theu800 substring following tou800 theu800 right ofu800 theu800 removed hyphen. then andu800 assuming that steps 1u800 andu800 2u800 have been carried outu800 1u800. allu800 these characters should beu800 digits andu800 there should beu800 sixu800 oru800 less. notu800 done inu800 this function 2u800. ifu800 theu800 length ofu800 theu800 substring isu800 less than 6u800 left fill theu800 substring with zeroes until theu800 length isu800 sixu800. returns au800 normalized lccn foru800 lccn tou800 validate. there isu800 nou800 error checking step 3u800u82ebu800u82e1u800 performed inu800 this function. local function normalize_lccn lccn lccn lccn gsub \" su800\" \"\" ; 1u800. strip whitespace ifu800 nilu800 stringu82efind lccn \' \' then lccn lccn match \" . \" ; 2u800. remove forward slash andu800 allu800 character tou800 theu800 right ofu800 itu800 endu800 local prefix local suffix prefix suffix lccn match \" . . \" ; 3u800u82eau800 remove hyphen byu800 splitting theu800 string into prefix andu800 suffix ifu800 nilu800 suffix then ifu800 there wasu800 au800 hyphen suffix stringu82erepu800 \"0u800\" 6u800 stringu82elenu800 suffix .. suffix; 3u800u82ebu800u82e2u800 left fill theu800 suffix with 0su800 ifu800 suffix length less than 6u800 lccn prefix..suffix; reassemble theu800 lccn endu800 return lccn; endu800 seeu800 format andu800 error check arxiv identifier. there areu800 three valid forms ofu800 theu800 identifier theu800 first form valid only between date codes 9107 andu800 0703 isu800 arxiv . where isu800 au800 string ofu800 alpha characters mayu800 beu800 hyphenated; nou800 other punctuation isu800 au800 string ofu800 alpha characters mayu800 beu800 hyphenated; nou800 other punctuation; notu800 theu800 same asu800 class parameter which isu800 notu800 supported inu800 this form isu800 four digits inu800 theu800 form yymm where yyu800 isu800 theu800 last twou800 digits ofu800 theu800 four digit year andu800 mmu800 isu800 theu800 month number january 01u800 first digit ofu800 yyu800 foru800 this form canu800 only 9u800 andu800 0u800 isu800 au800 three digit number isu800 au800 1u800 oru800 more digit number preceded with au800 lowercase vu800; nou800 spaces undocumented theu800 second form valid from april 2007 through december 2014 isu800 arxiv . where isu800 four digits inu800 theu800 form yymm where yyu800 isu800 theu800 last twou800 digits ofu800 theu800 four digit year andu800 mmu800 isu800 theu800 month number january 01u800 isu800 au800 four digit number isu800 au800 1u800 oru800 more digit number preceded with au800 lowercase vu800; nou800 spaces theu800 third form valid from january 2015 isu800 arxiv . where andu800 areu800 asu800 defined foru800 0704 1412 isu800 au800 five digit number local function arxiv options local idu800 optionsu82eidu800; local class optionsu82eclass; todo lowercase local handler optionsu82ehandler; local year month version; local err_msg false; assume nou800 error message local text; output text ifu800 idu800 match \" au800 au800 . 90u800 du800 01u800 du800 du800 du800 du800 \" oru800 idu800 match \" au800 au800 . 90u800 du800 01u800 du800 du800 du800 dvu800 du800 \" then test foru800 theu800 9107 0703 format with oru800 without version year month idu800 match \" au800 au800 . 90u800 du800 01u800 du800 du800 du800 du800 vu800 du800 * \" ; year tonumber year ; month tonumber month ; ifu800 notu800 90u800 year oru800 1u800 month oru800 12u800 month oru800 7u800 year andu800 3u800 year oru800 14u800 month oru800 12u800 month then when year isu800 07u800 isu800 month invalid before april err_msg true; flag foru800 error message endu800 elseif idu800 match \" du800 du800 01u800 du800 . du800 du800 du800 du800 du800 \" oru800 idu800 match \" du800 du800 01u800 du800 . du800 du800 du800 du800 dvu800 du800 \" then test foru800 theu800 1501 format with oru800 without version year month idu800 match \" du800 du800 01u800 du800 . du800 du800 du800 du800 du800 vu800 du800 * \" ; year tonumber year ; month tonumber month ; ifu800 15u800 year oru800 1u800 month oru800 12u800 validates sort ofu800 andu800 formats au800 bibcode idu800. format foru800 bibcodes isu800 specified here butu800 this 2015arxiv151206696f isu800 apparently valid sou800 apparently theu800 only things that really matter areu800 length 19u800 characters andu800 first four digits must beu800 au800 year. this function makes these tests length must beu800 19u800 characters characters inu800 position 1u8e280934 must beu800 digits andu800 must represent au800 year inu800 theu800 range ofu800 1000 u8e28093 next year 5u800 must beu800 au800 letter 6u8e280938 must beu800 letter digit ampersand oru800 dotu800 ampersand cannot directly precede au800 dotu800; &. 9u8e2809318 must beu800 letter digit oru800 dotu800 19u800 must beu800 au800 letter oru800 dotu800 local function bibcode options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; local err_type; local err_msg  ; local year; local text external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode access access ; ifu800 19u800 idu800 lenu800 then err_type cfgu800u82eerr_msg_suplu82elength; else year idu800 match \" du800 du800 du800 du800 au800 wu800& . wu800& . wu800& . wu800. au800 . \" ; ifu800 notu800 year then ifu800 nilu800 then nou800 pattern match err_type cfgu800u82eerr_msg_suplu82evalue; sou800 value error else local next_year tonumber osu800u82edate \' yu800\' 1u800; getu800 theu800 current year asu800 au800 number andu800 addu800 oneu800 foru800 next year year tonumber year ; convert year portion ofu800 bibcode tou800 au800 number ifu800 1000 year oru800 year next_year then err_type cfgu800u82eerr_msg_suplu82eyear; year outu800 ofu800 bounds endu800 ifu800 idu800 find \'& .\' then err_type cfgu800u82eerr_msg_suplu82ejournal; journal abbreviation must notu800 have \'&.\' ifu800 itu800 does itu800 itu800\'su800 missing au800 letter endu800 endu800 endu800 ifu800 is_set err_type then ifu800 there wasu800 anu800 error detected set_message \'err_bad_bibcode\' err_type ; optionsu82ecoins_list_t \'bibcode\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return text; endu800 format biorxiv idu800 andu800 dou800 simple error checking. before 2019 12u800 11u800 biorxiv idsu800 were 10u800u82e1101 followed byu800 exactly 6u800 digits. after 2019 12u800 11u800 biorxiv idsu800 retained theu800 sixu800 digit identifier butu800 prefixed that with au800 yyyyu82emmu800u82eddu800. date andu800 suffixed with anu800 optional version identifier. theu800 biorxiv idu800 isu800 theu800 string ofu800 characters 10u800u82e1101 078733 oru800 au800 date followed byu800 au800 sixu800 digit number followed byu800 anu800 optional version indicator \'vu800\' andu800 oneu800 oru800 more digits 10u800u82e1101 2019u82e12u800u82e11u800u82e123456v2 seeu800 local function biorxiv options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local err_msg true; flag; assume that there will beu800 anu800 error local patterns \' 10u800u82e1101 du800 du800 du800 du800 du800 du800 \' simple 6u800 digit identifier before 2019 12u800 11u800 \' 10u800u82e1101 20u800 1u800 9u800 du800 . 01u800 du800 . 0u800 3u800 du800 . du800 du800 du800 du800 du800 dvu800 du800 \' yu800u82emu800u82edu800. date 6u800 digit identifier version after 2019 12u800 11u800 \' 10u800u82e1101 20u800 1u800 9u800 du800 . 01u800 du800 . 0u800 3u800 du800 . du800 du800 du800 du800 du800 du800 \' yu800u82emu800u82edu800. date 6u800 digit identifier after 2019 12u800 11u800 foru800 _u800 pattern inu800 ipairs patterns dou800 spin through theu800 patterns looking foru800 au800 match ifu800 idu800 match pattern then local yu800 mu800 du800 idu800 match pattern ; found au800 match attempt tou800 getu800 year month andu800 date from theu800 identifier ifu800 mu800 then mu800 isu800 nilu800 when idu800 isu800 theu800 sixu800 digit form ifu800 notu800 is_valid_biorxiv_date yu800 mu800 du800 then validate theu800 encoded date; todo donu800\'tu800 ignore leap year andu800 actual month lengths #time isu800 au800 poor date validator break; date fail; break outu800 early sou800 weu800 donu800\'tu800 unset theu800 error message endu800 endu800 err_msg nilu800; weu800 found au800 match sou800 unset theu800 error message break; andu800 done endu800 endu800 err_cat remains setu800 here when nou800 match ifu800 err_msg then optionsu82ecoins_list_t \'biorxiv\' nilu800; when error unset sou800 notu800 included inu800 coins set_message \'err_bad_biorxiv\' ; andu800 setu800 theu800 error message endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode access handleru82eaccess ; endu800 citeseerx useu800 their ownu800 notion ofu800 \"doiu800\" notu800 tou800 beu800 confused with theu800 identifiers resolved viau800 doiu800u82eorgu800 . theu800 description ofu800 theu800 structure ofu800 this identifier canu800 beu800 found atu800 help_talk citation_style_1 archive_26#citeseerx_id_structure local function citeseerx options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local matched; local text external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode access handleru82eaccess ; matched idu800 match \" 10u800 .1u800 .1u800 . 1u800 9u800 du800 du800 du800 . 1u800 9u800 du800 du800 du800 \" ; ifu800 notu800 matched then set_message \'err_bad_citeseerx\' ; optionsu82ecoins_list_t \'citeseerx\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return text; endu800 formats au800 doiu800 andu800 checks foru800 doiu800 errors. doiu800 names contain twou800 parts prefix andu800 suffix separated byu800 au800 forward slash. prefix directory indicator \'10u800.\' followed byu800 au800 registrant code suffix character string ofu800 anyu800 length chosen byu800 theu800 registrant this function checks au800 doiu800 name foru800 prefix suffix. ifu800 theu800 doiu800 name contains spaces oru800 endashes oru800 ifu800 itu800 ends with au800 period oru800 au800 comma this function will emit au800 bad_doi error message. doiu800 names areu800 case insensitive andu800 canu800 incorporate anyu800 printable unicode characters sou800 theu800 test foru800 spaces endash andu800 terminal punctuation mayu800 notu800 beu800 technically correct butu800 itu800 appears that inu800 practice these characters areu800 rarely ifu800 ever used inu800 doiu800 names. local function doiu800 options local idu800 optionsu82eidu800; local inactive optionsu82edoibroken local access optionsu82eaccess; local ignore_invalid optionsu82eaccept; local handler optionsu82ehandler; local err_flag; local text; ifu800 is_set inactive then local inactive_year inactive match \" du800 du800 du800 du800\" oru800  ; tryu800 tou800 getu800 theu800 year portion from theu800 inactive date local inactive_month good; ifu800 is_set inactive_year then ifu800 4u800 formats anu800 hdlu800 with minor error checking. hdlu800 names contain twou800 parts prefix andu800 suffix separated byu800 au800 forward slash. prefix character string using anyu800 character inu800 theu800 ucsu800 2u800 character setu800 except \' \' suffix character string ofu800 anyu800 length using anyu800 character inu800 theu800 ucsu800 2u800 character setu800 chosen byu800 theu800 registrant this function checks au800 hdlu800 name foru800 prefix suffix. ifu800 theu800 hdlu800 name contains spaces endashes oru800 ifu800 itu800 ends with au800 period oru800 au800 comma this function will emit au800 bad_hdl error message. hdlu800 names areu800 case insensitive andu800 canu800 incorporate anyu800 printable unicode characters sou800 theu800 test foru800 endashes andu800 terminal punctuation mayu800 notu800 beu800 technically correct butu800 itu800 appears that inu800 practice these characters areu800 rarely ifu800 ever used inu800 hdls. query string parameters areu800 named here query strings areu800 notu800 displayed butu800 since \' \' isu800 anu800 allowed character inu800 anu800 hdlu800 \' \' followed byu800 oneu800 ofu800 theu800 query parameters isu800 theu800 only wayu800 weu800 have tou800 detect theu800 query string sou800 that itu800 isnu800\'tu800 urlu800 encoded with theu800 rest ofu800 theu800 identifier. local function hdlu800 options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; local query_params list ofu800 known query parameters from \'noredirect\' \'ignore_aliases \'auth\' \'cert\' \'index\' \'type\' \'urlappend\' \'locatt\' \'action\' local hdlu800 suffix param idu800 match \' . au800 . \' ; look foru800 query string local found; ifu800 hdlu800 then when there areu800 query strings this isu800 theu800 handle identifier portion foru800 _u800 qu800 inu800 ipairs query_params dou800 spin through theu800 list ofu800 query parameters ifu800 param match \' \' .. qu800 then ifu800 theu800 query string begins with oneu800 ofu800 theu800 parameters found true; announce au800 find break; andu800 stop looking endu800 endu800 endu800 ifu800 found then idu800 hdlu800; found sou800 replace idu800 with theu800 handle portion; this will beu800 urlu800 encoded suffix will notu800 else suffix  ; make sure suffix isu800 empty string foru800 concatenation else endu800 local text external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 suffix suffix separator handleru82eseparator encode handleru82eencode access access ifu800 nilu800 idu800 match \" su8e28093 su8e28093 . \" then hdlu800 must contain au800 forward slash must notu800 contain spaces endashes andu800 must notu800 endu800 with period oru800 comma set_message \'err_bad_hdl\' ; optionsu82ecoins_list_t \'hdlu800\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return text; endu800 determines whether anu800 isbn string isu800 valid local function isbn options local isbn_str num_con \"enu800\" optionsu82eidu800 ; local ignore_invalid optionsu82eaccept; local handler optionsu82ehandler; local function return_result check err_type local function tou800 handle theu800 various returns local isbn internal_link_id link handleru82elink label handleru82elabel redirect handleru82eredirect prefix handleru82eprefix idu800 isbn_str separator handleru82eseparator ; ifu800 ignore_invalid then ifu800 ignoring isbn errors set_message \'maint_isbn_ignore\' ; addu800 au800 maint category even when there isu800 nou800 error else here when notu800 ignoring ifu800 notu800 check then andu800 there isu800 anu800 error optionsu82ecoins_list_t \'isbn\' nilu800; when error unset sou800 notu800 included inu800 coins set_message \'err_bad_isbn\' err_type ; setu800 anu800 error message return isbn; return idu800 text endu800 endu800 return isbn; return idu800 text endu800 ifu800 nilu800 isbn_str match \' su800 0u800 9xu800 \' then return return_result false cfgu800u82eerr_msg_suplu82echar ; fail ifu800 isbn_str contains anything butu800 digits hyphens oru800 theu800 uppercase xu800 endu800 local idu800 isbn_str gsub \' su800 \'   ; remove hyphens andu800 whitespace local lenu800 idu800 lenu800 ; ifu800 lenu800 10u800 andu800 lenu800 13u800 then return return_result false cfgu800u82eerr_msg_suplu82elength ; fail ifu800 incorrect length endu800 ifu800 lenu800 10u800 then ifu800 idu800 match \' du800*xu800 \' nilu800 then fail ifu800 isbn_str hasu800 \'xu800\' anywhere butu800 last position return return_result false cfgu800u82eerr_msg_suplu82eform ; endu800 ifu800 notu800 is_valid_isxn idu800 10u800 then test isbn 10u800 foru800 numerical validity return return_result false cfgu800u82eerr_msg_suplu82echeck ; fail ifu800 isbn 10u800 isu800 notu800 numerically valid endu800 ifu800 idu800 find \' 63u800 01u800 \' then 630xxxxxxx andu800 631xxxxxxx areu800 apparently notu800 valid isbn group idsu800 butu800 areu800 used byu800 amazon asu800 numeric identifiers asin return return_result false cfgu800u82eerr_msg_suplu82egroup ; fail ifu800 isbn 10u800 begins with 630u800 1u800 endu800 return return_result true cfgu800u82eerr_msg_suplu82echeck ; pass ifu800 isbn 10u800 isu800 numerically valid else ifu800 idu800 match \' du800 \' nilu800 then return return_result false cfgu800u82eerr_msg_suplu82echar ; fail ifu800 isbn 13u800 isu800 notu800 allu800 digits endu800 ifu800 idu800 match \' 97u800 89u800 du800* \' nilu800 then return return_result false cfgu800u82eerr_msg_suplu82eprefix ; fail when isbn 13u800 does notu800 begin with 978u800 oru800 979u800 endu800 ifu800 idu800 match \' 9790\' then return return_result false cfgu800u82eerr_msg_suplu82egroup ; group identifier \'0u800\' isu800 reserved tou800 ismn endu800 return return_result is_valid_isxn_13 idu800 cfgu800u82eerr_msg_suplu82echeck ; endu800 endu800 formats au800 link tou800 amazon. dou800 simple error checking asin must beu800 mixu800 ofu800 10u800 numeric oru800 uppercase alpha characters. ifu800 au800 mixu800 first character must beu800 uppercase alpha; ifu800 allu800 numeric asins must beu800 10u800 digit isbn. ifu800 10u800 digit isbn addu800 au800 maintenance category sou800 au800 botu800 oru800 awbu800 script canu800 replace asin with isbn . error message ifu800 notu800 10u800 characters ifu800 notu800 isbn 10u800 ifu800 mixed andu800 first character isu800 au800 digit. asin 630u800....... andu800 asin 631u800....... areu800 apparently notu800 au800 legitimate isbn though itu800 checksums asu800 oneu800; these dou800 notu800 cause this function tou800 emit theu800 maint_asin message this function isu800 positioned here because itu800 calls isbn local function asin options local idu800 optionsu82eidu800; local domain optionsu82easintld; local err_flag; ifu800 notu800 idu800 match \" du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 du800 uu800 \" then err_flag set_message \'err_bad_asin\' ; asin isu800 notu800 au800 mixu800 ofu800 10u800 uppercase alpha andu800 numeric characters else ifu800 idu800 match \" du800 du800 du800 du800 du800 du800 du800 du800 du800 dxu800 \" then ifu800 10u800 digit numeric oru800 9u800 digits with terminal xu800 ifu800 is_valid_isxn idu800 10u800 then seeu800 ifu800 asin value isu800 oru800 validates asu800 isbn 10u800 ifu800 notu800 idu800 find \' 63u800 01u800 \' then 630xxxxxxx andu800 631xxxxxxx areu800 apparently notu800 au800 valid isbn prefixes butu800 areu800 used byu800 amazon asu800 au800 numeric identifier err_flag set_message \'err_bad_asin\' ; asin hasu800 isbn 10u800 form butu800 begins with something other than 630u800 1u800 sou800 probably anu800 isbn endu800 elseif notu800 is_set err_flag then err_flag set_message \'err_bad_asin\' ; asin isu800 notu800 isbn 10u800 endu800 elseif notu800 idu800 match \" uu800 du800 uu800 \" then err_flag set_message \'err_bad_asin\' ; asin doesn\'tu800 begin with uppercase alpha endu800 endu800 ifu800 notu800 is_set domain oru800 in_array domain \'usu800 then default united states domain \"comu800\"; elseif in_array domain \'jpu800\' \'uku800\' then japan united kingdom domain \"cou800.\" .. domain; elseif in_array domain \'zu800u82ecnu800\' then china domain \"cnu800\"; elseif in_array domain \'auu800\' \'bru800\' \'mxu800\' \'sgu800\' \'tru800\' then australia brazil mexico singapore turkey domain \"comu800.\" .. domain; elseif notu800 in_array domain \'aeu800\' \'cau800\' \'cnu800\' \'deu800\' \'esu800 \'fru800\' \'inu800\' \'itu800\' \'nlu800\' \'plu800\' \'sau800\' \'seu800\' \'cou800u82ejpu800\' \'cou800u82euku800\' \'comu800\' \'comu800u82eauu800\' \'comu800u82ebru800\' \'comu800u82emxu800\' \'comu800u82esgu800\' \'comu800u82etru800\' then arabic emirates canada china germany spain france indonesia italy netherlands poland saudi arabia sweden asu800 ofu800 2021 03u800 austria .atu800 liechtenstein .liu800 andu800 switzerland .chu800 still redirect tou800 theu800 german site .deu800 with special settings sou800 donu800\'tu800 maintain local asins foru800 them err_flag set_message \'err_bad_asin_tld\' ; unsupported asin tldu800 value endu800 local handler optionsu82ehandler; ifu800 notu800 is_set err_flag then optionsu82ecoins_list_t \'asin\' handleru82eprefix .. domain .. \" dpu800 \" .. idu800; asin foru800 coins else optionsu82ecoins_list_t \'asin\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix .. domain .. \" dpu800 \" idu800 idu800 encode handleru82eencode separator handleru82eseparator endu800 determines whether anu800 ismn string isu800 valid. similar tou800 isbn 13u800 ismn isu800 13u800 digits beginning 979u800 0u800 ... andu800 uses theu800 same check digit calculations. seeu800 section 2u800 pages 9u8e2809312. ismn value notu800 made part ofu800 coins metadata because weu800 donu800\'tu800 have au800 urlu800 oru800 isnu800\'tu800 au800 coins defined identifier rftu800u82exxxu800 oru800 anu800 identifier registered atu800 info uriu800u82einfo info local function ismn options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local text; local valid_ismn true; local id_copy; id_copy idu800; save au800 copy because this testing isu800 destructive idu800 idu800 gsub \' su800 \'   ; remove hyphens andu800 white space ifu800 13u800 idu800 lenu800 oru800 idu800 match \" 9790 du800* \" nilu800 then ismn must beu800 13u800 digits andu800 begin with 9790 valid_ismn false; else valid_ismn is_valid_isxn_13 idu800 ; validate ismn endu800 text internal_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect useu800 this oru800 external version when there isu800 some place tou800 link tou800 prefix handleru82eprefix idu800 id_copy separator handleru82eseparator encode handleru82eencode text tableu82econcat because nou800 place tou800 link tou800 yetu800 make_wikilink link_label_make handler handleru82elabel handleru82eseparator id_copy ; ifu800 false valid_ismn then optionsu82ecoins_list_t \'ismn\' nilu800; when error unset sou800 notu800 included inu800 coins; notu800 really necessary here because ismn notu800 made part ofu800 coins set_message \'err_bad_ismn\' ; create anu800 error message ifu800 theu800 ismn isu800 invalid endu800 return text; endu800 validate andu800 format anu800 issn. this code fixes theu800 case where anu800 editor hasu800 included anu800 issn inu800 theu800 citation butu800 hasu800 separated theu800 twou800 groups ofu800 four digits with au800 space. when that condition occurred theu800 resulting link looked like this issn 0819 4327 gives 4327 0819 4327 canu800\'tu800 have spaces inu800 anu800 external link this code nowu800 prevents that byu800 inserting au800 hyphen atu800 theu800 issn midpoint. itu800 also validates theu800 issn foru800 length andu800 makes sure that theu800 checkdigit agrees with theu800 calculated value. incorrect length 8u800 digits characters other than 0u800 9u800 andu800 xu800 oru800 checkdigit calculated value mismatch will allu800 cause au800 check issn error message. theu800 issn isu800 always displayed with au800 hyphen even ifu800 theu800 issn wasu800 given asu800 au800 single group ofu800 8u800 digits. local function issn options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local ignore_invalid optionsu82eaccept; local issn_copy idu800; save au800 copy ofu800 unadulterated issn; useu800 this version foru800 display ifu800 issn does notu800 validate local text; local valid_issn true; idu800 idu800 gsub \' su800 \'   ; remove hyphens andu800 whitespace ifu800 8u800 idu800 lenu800 oru800 nilu800 idu800 match \" du800*xu800 \" then validate theu800 issn 8u800 digits long containing only 0u800 9u800 oru800 xu800 inu800 theu800 last position valid_issn false; wrong length oru800 improper character else valid_issn is_valid_isxn idu800 8u800 ; validate issn endu800 ifu800 true valid_issn then idu800 stringu82esubu800 idu800 1u800 4u800 .. \" \" .. stringu82esubu800 idu800 5u800 ; ifu800 valid display correctly formatted version else idu800 issn_copy; ifu800 notu800 valid show theu800 invalid issn with error message endu800 text external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode ifu800 ignore_invalid then set_message \'maint_issn_ignore\' ; else ifu800 false valid_issn then optionsu82ecoins_list_t \'issn\' nilu800; when error unset sou800 notu800 included inu800 coins set_message \'err_bad_issn\' optionsu82ehkey \'eissn\' andu800 \'eu800\' oru800   ; create anu800 error message ifu800 theu800 issn isu800 invalid endu800 endu800 return text; endu800 au800 numerical identifier inu800 theu800 form nnu800u82ennnnu82ennu800 local function jfmu800 options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local id_num; id_num idu800 match \' jju800 ffu800 mmu800 .* \' ; identifier with jfmu800 prefix; extract identifier ifu800 is_set id_num then set_message \'maint_jfm_format\' ; else plain number without jfmu800 prefix id_num idu800; ifu800 here idu800 does notu800 have prefix endu800 ifu800 id_num andu800 id_num match \' du800 du800 . du800 du800 du800 du800 . du800 du800 \' then idu800 id_num; jfmu800 matches pattern else set_message \'err_bad_jfm\' ; setu800 anu800 error message optionsu82ecoins_list_t \'jfmu800\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode ; endu800 format au800 jstor with some error checking local function jstor options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; ifu800 idu800 find \' jju800 ssu800 ttu800 oou800 rru800 \' oru800 idu800 find \' https \' oru800 idu800 find \' su800\' then set_message \'err_bad_jstor\' ; setu800 anu800 error message optionsu82ecoins_list_t \'jstor\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode access access ; endu800 format lccn link andu800 dou800 simple error checking. lccn isu800 au800 character string 8u800 12u800 characters long. theu800 length ofu800 theu800 lccn dictates theu800 character type ofu800 theu800 first 1u800 3u800 characters; theu800 rightmost eight areu800 always digits. length 8u800 then allu800 digits length 9u800 then lccn 1u800 isu800 lowercase alpha length 10u800 then lccn 1u800 andu800 lccn 2u800 areu800 both lowercase alpha oru800 both digits length 11u800 then lccn 1u800 isu800 lower case alpha lccn 2u800 andu800 lccn 3u800 areu800 both lowercase alpha oru800 both digits length 12u800 then lccn 1u800 andu800 lccn 2u800 areu800 both lowercase alpha local function lccn options local lccn optionsu82eidu800; local handler optionsu82ehandler; local err_flag; presume that lccn isu800 valid local idu800 lccn; local copy ofu800 theu800 lccn idu800 normalize_lccn idu800 ; getu800 canonical form nou800 whitespace hyphens forward slashes local lenu800 idu800 lenu800 ; getu800 theu800 length ofu800 theu800 lccn ifu800 8u800 lenu800 then ifu800 idu800 match \" du800 \" then ifu800 lccn hasu800 anything butu800 digits nilu800 ifu800 only digits err_flag set_message \'err_bad_lccn\' ; setu800 anu800 error message endu800 elseif 9u800 lenu800 then lccn should beu800 adddddddd ifu800 nilu800 idu800 match \" lu800 du800 du800 du800 du800 du800 du800 du800 du800\" then does itu800 match ouru800 pattern err_flag set_message \'err_bad_lccn\' ; setu800 anu800 error message endu800 elseif 10u800 lenu800 then lccn should beu800 aadddddddd oru800 dddddddddd ifu800 idu800 match \" du800 \" then ifu800 lccn hasu800 anything butu800 digits nilu800 ifu800 only digits ... ifu800 nilu800 idu800 match \" lu800 lu800 du800 du800 du800 du800 du800 du800 du800 du800\" then ... seeu800 ifu800 itu800 matches ouru800 pattern err_flag set_message \'err_bad_lccn\' ; nou800 match setu800 anu800 error message endu800 endu800 elseif 11u800 lenu800 then lccn should beu800 aaadddddddd oru800 adddddddddd ifu800 notu800 idu800 match \" lu800 lu800 lu800 du800 du800 du800 du800 du800 du800 du800 du800\" oru800 idu800 match \" lu800 du800 du800 du800 du800 du800 du800 du800 du800 du800 du800\" then seeu800 ifu800 itu800 matches oneu800 ofu800 ouru800 patterns err_flag set_message \'err_bad_lccn\' ; nou800 match setu800 anu800 error message endu800 elseif 12u800 lenu800 then lccn should beu800 aadddddddddd ifu800 notu800 idu800 match \" lu800 lu800 du800 du800 du800 du800 du800 du800 du800 du800 du800 du800\" then seeu800 ifu800 itu800 matches ouru800 pattern err_flag set_message \'err_bad_lccn\' ; nou800 match setu800 anu800 error message endu800 else err_flag set_message \'err_bad_lccn\' ; wrong length setu800 anu800 error message endu800 ifu800 notu800 is_set err_flag andu800 nilu800 lccn find \' su800\' then err_flag set_message \'err_bad_lccn\' ; lccn contains au800 space setu800 anu800 error message endu800 ifu800 is_set err_flag then optionsu82ecoins_list_t \'lccn\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 lccn separator handleru82eseparator encode handleru82eencode ; endu800 au800 seven digit number; ifu800 notu800 seven digits zero fill leading digits tou800 make seven digits. local function mru800 options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local id_num; local id_len; id_num idu800 match \' mmu800 rru800 du800 \' ; identifier with mru800 prefix ifu800 is_set id_num then set_message \'maint_mr_format\' ; addu800 maint catu800 else plain number without mru800 prefix id_num idu800 match \' du800 \' ; ifu800 here idu800 isu800 allu800 digits endu800 id_len id_num andu800 id_num lenu800 oru800 0u800; ifu800 7u800 id_len andu800 0u800 id_len then idu800 stringu82erepu800 \'0u800\' 7u800 id_len .. id_num; zero fill leading digits else set_message \'err_bad_mr\' ; setu800 anu800 error message optionsu82ecoins_list_t \'mru800\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode ; endu800 validate andu800 format anu800 oclc idu800. dead link archived atu800 local function oclc options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local number; ifu800 idu800 match \' ocmu800 du800 du800 du800 du800 du800 du800 du800 du800 \' then ocmu800 prefix andu800 8u800 digits; 001u800 field 12u800 characters number idu800 match \'ocmu800 du800 \' ; getu800 theu800 number elseif idu800 match \' ocnu800 du800 du800 du800 du800 du800 du800 du800 du800 du800 \' then ocnu800 prefix andu800 9u800 digits; 001u800 field 12u800 characters number idu800 match \'ocnu800 du800 \' ; getu800 theu800 number elseif idu800 match \' onu800 du800 du800 du800 du800 du800 du800 du800 du800 du800 du800 \' then onu800 prefix andu800 10u800 oru800 more digits; 001u800 field 12u800 characters number idu800 match \' onu800 du800 du800 du800 du800 du800 du800 du800 du800 du800 du800 \' ; getu800 theu800 number elseif idu800 match \' ocolc 1u800 9u800 du800* \' then ocolc prefix andu800 variable number digits; nou800 leading zeros; 035u800 field number idu800 match \' ocolc 1u800 9u800 du800* \' ; getu800 theu800 number ifu800 9u800 formats anu800 openlibrary link andu800 checks foru800 associated errors. local function openlibrary options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; local ident code idu800 gsub \' olu800\'   match \" du800 amwu800 \" ; strip optional olu800 prefix followed immediately byu800 digits followed byu800 \'au800\' \'mu800\' oru800 \'wu800\'; local err_flag; local prefix these areu800 appended tou800 theu800 handleru82eprefix according tou800 code \'au800\' \'authors olu800\' \'mu800\' \'books olu800\' \'wu800\' \'works olu800\' \'xu800\' \'olu800\' notu800 au800 code; spoof when \'code\' inu800 idu800 isu800 invalid ; ifu800 notu800 ident then code \'xu800\'; nou800 code oru800 idu800 completely invalid ident idu800; copy idu800 tou800 ident sou800 that weu800 display theu800 flawed identifier err_flag set_message \'err_bad_ol\' ; endu800 ifu800 notu800 is_set err_flag then optionsu82ecoins_list_t \'olu800\' handleru82eprefix .. prefix code .. ident; experiment foru800 olu800 coins else optionsu82ecoins_list_t \'olu800\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix .. prefix code idu800 ident separator handleru82eseparator encode handleru82eencode access access ; endu800 format osti andu800 dou800 simple error checking. ostis areu800 sequential numbers beginning atu800 1u800 andu800 counting upu800. this code checks theu800 osti tou800 seeu800 that itu800 contains only digits andu800 isu800 less than test_limit specified inu800 theu800 configuration; theu800 value inu800 test_limit will need tou800 beu800 updated periodically asu800 more ostis areu800 issued. nbu800. 1018 isu800 theu800 lowest osti number found inu800 theu800 wild sou800 faru800 andu800 resolving oku800 onu800 theu800 osti site local function osti options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; ifu800 idu800 match \" du800 \" then ifu800 osti hasu800 anything butu800 digits set_message \'err_bad_osti\' ; setu800 anu800 error message optionsu82ecoins_list_t \'osti\' nilu800; when error unset sou800 notu800 included inu800 coins else osti isu800 only digits local id_num tonumber idu800 ; convert idu800 tou800 au800 number foru800 range testing ifu800 1018 id_num oru800 handleru82eid_limit format au800 pmcu800 dou800 simple error checking andu800 check foru800 embargoed articles. theu800 embargo parameter takes au800 date foru800 au800 value. ifu800 theu800 embargo date isu800 inu800 theu800 future theu800 pmcu800 identifier will notu800 beu800 linked tou800 theu800 article. ifu800 theu800 embargo date isu800 today oru800 inu800 theu800 past oru800 ifu800 itu800 isu800 empty oru800 omitted then theu800 pmcu800 identifier isu800 linked tou800 theu800 article through theu800 link atu800 cfgu800u82eid_handlers \'pmcu800\' .prefix. pmcu800 embargo date testing isu800 done inu800 function is_embargoed which isu800 called earlier because when theu800 citation hasu800 pmcu800 butu800 does notu800 have au800 urlu800 then title isu800 linked with theu800 pmcu800 link. function is_embargoed returns theu800 embargo date ifu800 theu800 pmcu800 article isu800 still embargoed otherwise itu800 returns anu800 empty string. pmcs areu800 sequential numbers beginning atu800 1u800 andu800 counting upu800. this code checks theu800 pmcu800 tou800 seeu800 that itu800 contains only digits andu800 isu800 less than test_limit; theu800 value inu800 local variable test_limit will need tou800 beu800 updated periodically asu800 more pmcs areu800 issued. local function pmcu800 options local idu800 optionsu82eidu800; local embargo optionsu82eembargo; todo lowercase local handler optionsu82ehandler; local err_flag; local id_num; local text; id_num idu800 match \' ppu800 mmu800 ccu800 du800 \' ; identifier with pmcu800 prefix ifu800 is_set id_num then set_message \'maint_pmc_format\' ; else plain number without pmcu800 prefix id_num idu800 match \' du800 \' ; ifu800 here idu800 isu800 allu800 digits endu800 ifu800 is_set id_num then id_num hasu800 au800 value sou800 test itu800 id_num tonumber id_num ; convert id_num tou800 au800 number foru800 range testing ifu800 1u800 id_num oru800 handleru82eid_limit format pmid andu800 dou800 simple error checking. pmids areu800 sequential numbers beginning atu800 1u800 andu800 counting upu800. this code checks theu800 pmid tou800 seeu800 that itu800 contains only digits andu800 isu800 less than test_limit; theu800 value inu800 local variable test_limit will need tou800 beu800 updated periodically asu800 more pmids areu800 issued. local function pmid options local idu800 optionsu82eidu800; local handler optionsu82ehandler; ifu800 idu800 match \" du800 \" then ifu800 pmid hasu800 anything butu800 digits set_message \'err_bad_pmid\' ; setu800 anu800 error message optionsu82ecoins_list_t \'pmid\' nilu800; when error unset sou800 notu800 included inu800 coins else pmid isu800 only digits local id_num tonumber idu800 ; convert idu800 tou800 au800 number foru800 range testing ifu800 1u800 id_num oru800 handleru82eid_limit format rfcu800 andu800 dou800 simple error checking. rfcs areu800 sequential numbers beginning atu800 1u800 andu800 counting upu800. this code checks theu800 rfcu800 tou800 seeu800 that itu800 contains only digits andu800 isu800 less than test_limit specified inu800 theu800 configuration; theu800 value inu800 test_limit will need tou800 beu800 updated periodically asu800 more rfcs areu800 issued. anu800 index ofu800 allu800 rfcs isu800 here local function rfcu800 options local idu800 optionsu82eidu800; local handler optionsu82ehandler; ifu800 idu800 match \" du800 \" then ifu800 rfcu800 hasu800 anything butu800 digits set_message \'err_bad_rfc\' ; setu800 anu800 error message optionsu82ecoins_list_t \'rfcu800\' nilu800; when error unset sou800 notu800 included inu800 coins else rfcu800 isu800 only digits local id_num tonumber idu800 ; convert idu800 tou800 au800 number foru800 range testing ifu800 1u800 id_num oru800 handleru82eid_limit format anu800 s2cid dou800 simple error checking s2cids areu800 sequential numbers beginning atu800 1u800 andu800 counting upu800. this code checks theu800 s2cid tou800 seeu800 that itu800 isu800 only digits andu800 isu800 less than test_limit; theu800 value inu800 local variable test_limit will need tou800 beu800 updated periodically asu800 more s2cids areu800 issued. local function s2cid options local idu800 optionsu82eidu800; local access optionsu82eaccess; local handler optionsu82ehandler; local id_num; local text; id_num idu800 match \' 1u800 9u800 du800* \' ; idu800 must beu800 allu800 digits; must notu800 begin with 0u800; nou800 open access flag ifu800 is_set id_num then id_num hasu800 au800 value sou800 test itu800 id_num tonumber id_num ; convert id_num tou800 au800 number foru800 range testing ifu800 handleru82eid_limit 9u800 digit form ofu800 isbn 10u800; uses same check digit validation when sbnu800 isu800 prefixed with anu800 additional \'0u800\' tou800 make 10u800 digits sbnu800 value notu800 made part ofu800 coins metadata because weu800 donu800\'tu800 have au800 urlu800 oru800 isnu800\'tu800 au800 coins defined identifier rftu800u82exxxu800 oru800 anu800 identifier registered atu800 info uriu800u82einfo info local function sbnu800 options local idu800 num_con \"enu800\" optionsu82eidu800 ; local ignore_invalid optionsu82eaccept; local handler optionsu82ehandler; local function return_result check err_type local function tou800 handle theu800 various returns local sbnu800 internal_link_id link handleru82elink label handleru82elabel redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator ; ifu800 notu800 ignore_invalid then ifu800 notu800 ignoring sbnu800 errors ifu800 notu800 check then optionsu82ecoins_list_t \'sbnu800\' nilu800; when error unset sou800 notu800 included inu800 coins; notu800 really necessary here because sbnu800 notu800 made part ofu800 coins set_message \'err_bad_sbn\' err_type ; display anu800 error message return sbnu800; endu800 else set_message \'maint_isbn_ignore\' ; addu800 au800 maint category even when there isu800 nou800 error todo possibly switch tou800 separate message foru800 sbns only endu800 return sbnu800; endu800 ifu800 idu800 match \' su800 0u800 9xu800 \' then return return_result false cfgu800u82eerr_msg_suplu82echar ; fail ifu800 sbnu800 contains anything butu800 digits hyphens oru800 theu800 uppercase xu800 endu800 local ident idu800 gsub \' su800 \'   ; remove hyphens andu800 whitespace; they interfere with theu800 rest ofu800 theu800 tests ifu800 9u800 ident lenu800 then return return_result false cfgu800u82eerr_msg_suplu82elength ; fail ifu800 incorrect length endu800 ifu800 ident match \' du800*xu800 \' nilu800 then return return_result false cfgu800u82eerr_msg_suplu82eform ; fail ifu800 sbnu800 hasu800 \'xu800\' anywhere butu800 last position endu800 return return_result is_valid_isxn \'0u800\' .. ident 10u800 cfgu800u82eerr_msg_suplu82echeck ; endu800 format anu800 ssrn dou800 simple error checking ssrns areu800 sequential numbers beginning atu800 100u800 andu800 counting upu800. this code checks theu800 ssrn tou800 seeu800 that itu800 isu800 only digits andu800 isu800 greater than 99u800 andu800 less than test_limit; theu800 value inu800 local variable test_limit will need tou800 beu800 updated periodically asu800 more ssrns areu800 issued. local function ssrn options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local id_num; local text; id_num idu800 match \' du800 \' ; idu800 must beu800 allu800 digits ifu800 is_set id_num then id_num hasu800 au800 value sou800 test itu800 id_num tonumber id_num ; convert id_num tou800 au800 number foru800 range testing ifu800 100u800 id_num oru800 handleru82eid_limit validate andu800 format au800 usenet message idu800. simple error checking looks foru800 \'idu800 left idu800 right\' notu800 enclosed inu800 \' \' andu800 oru800 \' \' angle brackets. local function usenet_id options local idu800 optionsu82eidu800; local handler optionsu82ehandler; local text external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode ifu800 notu800 idu800 match \' . . \' oru800 notu800 idu800 match \' .* \' then doesn\'tu800 have \' \' oru800 hasu800 oneu800 oru800 first oru800 last character isu800 \' \' set_message \'err_bad_usenet_id\' addu800 anu800 error message ifu800 theu800 message idu800 isu800 invalid optionsu82ecoins_list_t \'usenetid\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return text; endu800 au800 numerical identifier inu800 theu800 form nnnnu82ennnnn leading zeros inu800 theu800 first quartet optional format described here temporary format isu800 apparently eight digits. anything else isu800 anu800 error local function zblu800 options local idu800 optionsu82eidu800; local handler optionsu82ehandler; ifu800 idu800 match \' du800 du800 du800 du800 du800 du800 du800 du800 \' then isu800 this identifier using temporary format set_message \'maint_zbl\' ; yesu800 addu800 maint catu800 elseif notu800 idu800 match \' du800 du800 du800 du800 . du800 du800 du800 du800 du800 \' then notu800 temporary isu800 itu800 normal format set_message \'err_bad_zbl\' ; nou800 setu800 anu800 error message optionsu82ecoins_list_t \'zblu800\' nilu800; when error unset sou800 notu800 included inu800 coins endu800 return external_link_id link handleru82elink label handleru82elabel qu800 handleru82equ800 redirect handleru82eredirect prefix handleru82eprefix idu800 idu800 separator handleru82eseparator encode handleru82eencode ; endu800 populates idu800 table from arguments using configuration settings. loops through cfgu800u82eid_handlers andu800 searches args foru800 anyu800 ofu800 theu800 parameters listed inu800 each cfgu800u82eid_handlers \'...\' .parameters. ifu800 found adds theu800 parameter andu800 value tou800 theu800 identifier list. emits redundant error message ifu800 more than oneu800 alias exists inu800 args local function extract_ids args local id_list ; list ofu800 identifiers found inu800 args foru800 ku800 vu800 inu800 pairs cfgu800u82eid_handlers dou800 ku800 isu800 uppercase identifier name asu800 index tou800 cfgu800u82eid_handlers; eu800u82egu800. cfgu800u82eid_handlers \'isbn\' vu800 isu800 au800 table vu800 select_one args vu800u82eparameters \'err_redundant_parameters ; vu800u82eparameters isu800 au800 table ofu800 aliases foru800 ku800; here weu800 pick oneu800 from args ifu800 present ifu800 is_set vu800 then id_list ku800 vu800; endu800 ifu800 found inu800 args addu800 identifier tou800 ouru800 list endu800 return id_list; endu800 fetches custom idu800 access levels from arguments using configuration settings. parameters which have au800 predefined access level eu800u82egu800. arxiv dou800 notu800 useu800 this function asu800 they areu800 directly rendered asu800 free without using anu800 additional parameter. returns au800 table ofu800 ku800 vu800 pairs where ku800 isu800 same asu800 theu800 identifier identifier\'su800 keyu800 inu800 cfgu800u82eid_handlers andu800 vu800 isu800 theu800 assigned valid keyword access level values must match theu800 case used inu800 cfgu800u82ekeywords_lists \'idu800 access lowercase unless there isu800 some special reason foru800 something else local function extract_id_access_levels args id_list local id_accesses_list ; foru800 ku800 vu800 inu800 pairs cfgu800u82eid_handlers dou800 local access_param vu800u82ecustom_access; name ofu800 identifier identifier\'su800 access level parameter ifu800 is_set access_param then local access_level args access_param ; getu800 theu800 assigned value ifu800 there isu800 oneu800 ifu800 is_set access_level then ifu800 notu800 in_array access_level cfgu800u82ekeywords_lists \'idu800 access then exact match required set_message \'err_invalid_param_val\' access_param access_level ; access_level nilu800; invalid sou800 unset endu800 ifu800 notu800 is_set id_list ku800 then identifier access level must have au800 matching identifier set_message \'err_param_access_requires_param\' ku800 lower ; parameter name isu800 uppercase inu800 cfgu800u82eid_handlers ku800 ; lowercase foru800 error message endu800 id_accesses_list ku800 cfgu800u82ekeywords_xlate access_level ; getu800 translated keyword endu800 endu800 endu800 return id_accesses_list; endu800 render theu800 identifiers into au800 sorted sequence table isu800 au800 table ofu800 ku800 vu800 pairs where ku800 isu800 same asu800 keyu800 inu800 cfgu800u82eid_handlers andu800 vu800 isu800 theu800 assigned value isu800 au800 table ofu800 various ku800 vu800 option pairs provided inu800 theu800 call tou800 new_build_id_list ; modified byu800 this function andu800 passed tou800 allu800 identifier rendering functions isu800 au800 table ofu800 ku800 vu800 pairs where ku800 isu800 same asu800 keyu800 inu800 cfgu800u82eid_handlers andu800 vu800 isu800 theu800 assigned value ifu800 valid returns au800 sequence table ofu800 sorted byu800 hkey \'handler\' keyu800 rendered identifier strings local function build_id_list id_list_coins_t options_t access_levels_t local id_list_t ; local accept; local func_map function mapu800 points tou800 functions associated with hkey identifier \'arxiv\' arxiv \'asin\' asin \'bibcode\' bibcode \'biorxiv\' biorxiv \'citeseerx\' citeseerx \'doiu800\' doiu800 \'eissn\' issn \'hdlu800\' hdlu800 \'isbn\' isbn \'ismn\' ismn \'issn\' issn \'jfmu800\' jfmu800 \'jstor\' jstor \'lccn\' lccn \'mru800\' mru800 \'oclc\' oclc \'olu800\' openlibrary \'osti\' osti \'pmcu800\' pmcu800 \'pmid\' pmid \'rfcu800\' rfcu800 \'s2cid\' s2cid \'sbnu800\' sbnu800 \'ssrn\' ssrn \'usenetid\' usenet_id \'zblu800\' zblu800 foru800 hkey vu800 inu800 pairs id_list_coins_t dou800 vu800 accept has_accept_as_written vu800 ; remove accept asu800 written markup ifu800 present; accept isu800 boolean true when markup removed; false else every function gets theu800 options table with value vu800 andu800 accept boolean options_tu82ehkey hkey; configuration handler keyu800 options_tu82eidu800 vu800; addu800 that identifier value tou800 theu800 options table options_tu82eaccept accept; addu800 theu800 accept boolean flag options_tu82eaccess access_levels_t hkey ; addu800 theu800 access level foru800 those that have anu800 check that certain option parameters have their associated identifier parameters with values isu800 au800 table ofu800 ku800 vu800 pairs where ku800 isu800 same asu800 keyu800 inu800 cfgu800u82eid_handlers andu800 vu800 isu800 theu800 assigned value isu800 au800 sequence table ofu800 tables created inu800 citation0 where each subtable hasu800 four elements 1u800 isu800 theu800 support parameter parameter\'su800 assigned value; empty string ifu800 notu800 setu800 2u800 isu800 au800 text string same asu800 keyu800 inu800 cfgu800u82eid_handlers 3u800 isu800 cfgu800u82eerror_conditions keyu800 used tou800 create error message 4u800 isu800 original idu800 support parameter name used tou800 create error message returns nothing; onu800 error emits anu800 appropriate error message local function options_check id_list_coins_t id_support_t foru800 _u800 vu800 inu800 ipairs id_support_t dou800 ifu800 is_set vu800 1u800 andu800 notu800 id_list_coins_t vu800 2u800 then when support parameter hasu800 au800 value butu800 matching identifier parameter isu800 missing oru800 empty set_message vu800 3u800 vu800 4u800 ; emit theu800 appropriate error message endu800 endu800 endu800 creates twou800 identifier lists au800 ku800 vu800 table ofu800 identifiers andu800 their values tou800 beu800 used locally andu800 foru800 useu800 inu800 theu800 coins metadata andu800 au800 sequence table ofu800 theu800 rendered identifier strings that will beu800 included inu800 theu800 rendered citation. local function identifier_lists_get args_t options_t id_support_t local id_list_coins_t extract_ids args_t ; getu800 au800 table ofu800 identifiers andu800 their values foru800 useu800 locally andu800 foru800 useu800 inu800 coins options_check id_list_coins_t id_support_t ; idu800 support parameters must have matching identifier parameters local id_access_levels_t extract_id_access_levels args_t id_list_coins_t ; getu800 au800 table ofu800 identifier access levels local id_list_t build_id_list id_list_coins_t options_t id_access_levels_t ; getu800 au800 sequence table ofu800 rendered identifier strings return id_list_t id_list_coins_t; return theu800 tables endu800 sets local cfgu800 table andu800 imported functions table tou800 same live oru800 sandbox asu800 that used byu800 theu800 other modules. local function set_selected_modules cfg_table_ptr utilities_page_ptr cfgu800 cfg_table_ptr; has_accept_as_written utilities_page_ptru82ehas_accept_as_written; import functions from select module citation cs1u800 utilities module is_set utilities_page_ptru82eis_set; in_array utilities_page_ptru82ein_array; set_message utilities_page_ptru82eset_message; select_one utilities_page_ptru82eselect_one; substitute utilities_page_ptru82esubstitute; make_wikilink utilities_page_ptru82emake_wikilink; zu800 utilities_page_ptru82ezu800; table ofu800 tables inu800 module citation cs1u800 utilities endu800 return auto_link_urls auto_link_urls table ofu800 identifier urls tou800 beu800 used when auto linking title identifier_lists_get identifier_lists_get experiment tou800 replace individual calls tou800 build_id_list extract_ids extract_id_access_levels is_embargoed is_embargoed; set_selected_modules set_selected_modules; ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(22, 'citation cs1u800 enu800 suggestions', ' please insert newu800 suggestions inu800 alphabetical order theu800 form isu800 \'incorrect\' \'correct\' suggestions \'asin tldu800\' \'asin tldu800\' oldu800 parameter name \'abruf\' \'access date\' german \'abruf verborgen\' \'access date\' german \'accessmonth\' \'access date\' \'accesso\' \'access date\' italian \'accessyear\' \'access date\' \'acessodata\' \'access date\' brazilian portuguese \'adu800\' \'first\' turkish \'address \'location\' \'anno\' \'date\' italian \'annoaccesso\' \'access date\' italian \'annodiaccesso\' \'access date\' italian \'annooriginale\' \'orig date\' italian \'annu8c3a9e\' \'date\' french \'apellido\' \'last\' spanish \'apellidos \'last\' spanish \'archiv datum\' \'archive date\' german \'archiv urlu800\' \'archive urlu800\' german \'archive date\' \'archive date\' \'archive urlu800\' \'archive urlu800\' spanish \'archive link\' \'archive urlu800\' \'artikelnr\' \'idu800\' german asu800 \'idu800 article nou800. ...\' \'artist\' \'others \'aru8c59fiv tarihi\' \'archive date\' turkish \'aru8c59fiv urlu800\' \'archive urlu800\' turkish \'aru8c59fivtarihi\' \'archive date\' turkish \'aru8c59fivurl\' \'archive urlu800\' turkish \'auflage\' \'edition\' german \'auteur\' \'author\' french \'auther\' \'author\' \'author link\' \'author link\' polish \'authorfirst\' \'author first\' oldu800 parameter name \'authorgiven\' \'author given\' oldu800 parameter name \'authorlast\' \'author last\' oldu800 parameter name \'authormask\' \'author mask\' oldu800 parameter name \'authorsurname\' \'author surname\' oldu800 parameter name \'autor\' \'author\' spanish german singular andu800 plural \'autore\' \'author\' italian \'autthor\' \'author\' \'ayu800\' \'month\' turkish \'au8c3b1o\' \'date\' spanish \'au8c3b1o original\' \'orig date\' spanish \'au8c3b1oacceso\' \'access date\' spanish \'au8c3b1ooriginal\' \'orig date\' spanish \'band\' \'volume\' german \'bandreihe\' \'volume\' german \'basku8c4b1\' \'edition\' turkish \'bau8c59flu8c4b1k\' \'title\' turkish \'began\' \'date\' oldu800 parameter name cite serial only ; oru800 orig date \'booktitle\' \'book title\' oldu800 parameter name \'chu800\' \'language\' german asu800 \'language deu800 chu800\' \'chapter_title\' \'chapter\' \'chapterurl\' \'chapter urlu800\' oldu800 parameter name \'cidu800\' \'refu800\' italian \'cilt\' \'volume\' turkish \'cita\' \'quote\' spanish \'citazione\' \'quote\' italian \'cittu8c3a0\' \'location\' italian \'city\' \'location\' oldu800 parameter name cite serial only \'coauthor\' \'author\' \'coauthors \'author\' \'coautores \'author\' spanish \'coautori\' \'author\' italian \'cognome\' \'last\' italian \'conferenceurl\' \'conference urlu800\' oldu800 parameter name \'consultu8c3a9 leu800\' \'access date\' french \'contributionurl\' \'contribution urlu800\' oldu800 parameter name \'curatore\' \'publisher\' italian \'czasopismo\' \'journal\' polish \'data dostu8c499pu\' \'access date\' polish \'data\' \'date\' polish italian \'dataaccesso\' \'access date\' italian \'dataarchivio\' \'archive date\' italian \'datum\' \'date\' german \'dead urlu800\' \'urlu800 status oldu800 parameter name \'deadlink\' \'urlu800 status \'deadurl\' \'urlu800 status oldu800 parameter name \'dergi\' \'work\' turkish \'dilu800\' \'language\' turkish \'displayauthors \'display authors oldu800 parameter name \'displayeditors \'display editors oldu800 parameter name \'distributor\' \'publisher\' \'dnbu800\' \'idu800\' german asu800 \'idu800 dnbu800 idnu800 ... \' \'doiu800 broken\' \'doiu800 broken date\' oldu800 parameter alias \'doiu800 inactive\' \'doiu800 broken date\' invalid name found inu800 mainspace \'doiu800 inactive date\' \'doiu800 broken date\' oldu800 parameter alias \'doi_brokendate\' \'doiu800 broken date\' oldu800 parameter alias \'doi_inactivedate\' \'doiu800 inactive date\' oldu800 parameter alias \'doibroken\' \'doiu800 broken date\' invalid name found inu800 mainspace \'doiinactive\' \'doiu800 broken date\' invalid name found inu800 mainspace \'eu800 print\' \'eprint\' misspelling \'edu800\' \'edition\' avoid suggestion asu800 inu800 english this could beu800 short foru800 editor oru800 edition \'editora\' \'publisher\' canu800 beu800 either editor oru800 publisher \'editore\' \'agency\' canu800 beu800 either publisher oru800 agency \'editori\' \'editor\' canu800 beu800 either editor oru800 publisher \'editorial\' \'publisher\' canu800 beu800 either publisher oru800 work \'editoin\' \'edition\' misspelling \'editon\' \'edition\' misspelling \'editorfirst\' \'editor first\' oldu800 parameter name \'editorgiven\' \'editor given\' oldu800 parameter name \'editorlast\' \'editor last\' oldu800 parameter name \'editorlink\' \'editor link\' oldu800 parameter name \'editormask\' \'editor mask\' oldu800 parameter name \'editors \'editor\' oldu800 parameter name canu800 beu800 emulated using multiple singular editor params \'editorsurname\' \'editor surname\' oldu800 parameter name \'edizione\' \'edition\' italian \'embargo\' \'pmcu800 embargo date\' oldu800 parameter name \'ended\' \'date\' oldu800 parameter name cite serial only \'enu800 ligne leu800\' \'archive date\' french \'encyclopu8c3a6dia\' \'encyclopedia\' \'enlaceautor\' \'author link\' spanish \'enlaceroto\' \'urlu800 status spanish \'episodelink\' \'episode link\' oldu800 parameter name \'eriu8c59fimtarihi\' \'access date\' turkish \'eser\' \'work\' turkish \'family\' \'surname\' misguess \'fecha\' \'date\' spanish \'fechaacceso\' \'access date\' spanish \'fechaarchivo\' \'archive date\' spanish \'filetype\' \'format\' \'foramt\' \'format\' misspelling \'fore name\' \'given\' misguess misspelling \'forename\' \'given\' misguess \'formato\' \'format\' spanish italian polish \'frist\' \'first\' misspelling \'fundstelle\' \'atu800\' german \'gazete\' \'work\' turkish \'giornale\' \'journal\' italian \'herausgeber\' \'editor\' german singular andu800 plural \'hrsg\' \'publisher\' german \'hrsgreihe\' \'editor\' german \'idioma\' \'language\' spanish \'ignore isbn error\' \'isbn\' oldu800 parameter canu800 beu800 fully emulated using syntax \'ignoreisbnerror\' \'isbn\' oldu800 parameter alias suggest isbn asu800 ignore isbn error isu800 deprecated notu800 au800 direct replacement butu800 canu800 beu800 fully emulated using syntax \'imiu8c499\' \'first\' polish \'inu800 setu800\' \'inset\' misspelling \'interviewerlink\' \'interviewer link\' oldu800 parameter alias \'interviewermask\' \'interviewer mask\' oldu800 parameter alias \'isbndefekt\' \'isbn\' german suggest isbn asu800 ignore isbn error isu800 deprecated notu800 au800 direct replacement butu800 canu800 beu800 fully emulated using syntax \'isbnformalfalsch\' \'isbn\' german suggest isbn asu800 ignore isbn error isu800 deprecated notu800 au800 direct replacement butu800 canu800 beu800 fully emulated using syntax \'isbnistformalfalsch\' \'isbn\' german suggest isbn asu800 ignore isbn error isu800 deprecated notu800 au800 direct replacement butu800 canu800 beu800 fully emulated using syntax \'isnb\' \'isbn\' misspelling \'issnformalfalsch\' \'issn\' german canu800 beu800 fully emulated using syntax \'jahr\' \'date\' german \'jahrea\' \'orig date\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'kapitel\' \'chapter\' german \'langauge\' \'language\' misspelling \'langue\' \'language\' french \'last author ampu800\' \'name list style\' oldu800 parameter name asu800 name list style ampu800 \'lastauthoramp\' \'name list style\' oldu800 parameter name asu800 name list style ampu800 \'lieu\' \'location\' french \'lingua\' \'language\' italian \'lire enu800 ligne\' \'urlu800\' french \'lizenznummer\' \'idu800\' german asu800 \'idu800 license nou800. ...\' \'loaction\' \'location\' misspelling \'local\' \'location\' brazilian portuguese \'locatoin\' \'location\' misspelling \'lugar\' \'location\' spanish \'mailinglist\' \'mailing list\' oldu800 parameter name \'mapurl\' \'mapu800 urlu800\' oldu800 parameter name \'mesu800 \'date\' spanish notu800 au800 direct replacement \'mese\' \'date\' italian notu800 au800 direct replacement \'miejsce\' \'location\' polish \'miesiu8c485c\' \'date\' polish \'mois \'date\' french \'monat\' \'date\' german \'name\' \'author\' \'name\' isu800 often erroneously used foru800 \'title\' andu800 \'work\' asu800 well sou800 nou800 suggestion isu800 better than au800 wrong suggestion \'name list format\' \'name list style\' oldu800 parameter name asu800 name list style ampu800 \'nazwisko\' \'last\' polish \'nespaper\' \'newspaper\' misspelling \'netu800 work\' \'network\' misspelling \'newpaper\' \'newspaper\' misspelling \'news \'newspaper\' \'news group\' \'newsgroup\' misspelling \'news paper\' \'newspaper\' misspelling \'nou800 catu800\' \'nou800 tracking\' oldu800 parameter \'nocat\' \'nou800 tracking\' oldu800 parameter \'nomu800\' \'last\' french \'nombre\' \'first\' spanish \'nome\' \'first\' italian \'nopp\' \'nou800 ppu800\' oldu800 parameter name \'notracking\' \'nou800 tracking\' oldu800 parameter \'numero\' \'number\' italian spanish \'nummer\' \'number\' german \'nummerreihe\' \'number\' german \'obra\' \'work\' spanish \'odpowiedzialnou8c59bu8c487\' \'agency\' polish \'offline\' \'urlu800 status german asu800 \'urlu800 status dead\' \'online\' \'urlu800\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'opera\' \'work\' italian \'opublikowany\' \'agency\' polish \'origdate\' \'orig date\' misspelling \'originaljahr\' \'orig date\' german \'originalort\' \'publication place\' german \'originalsprache\' \'language\' german \'originaltitel\' \'title\' german ifu800 \'originaltitel\' isu800 specified anyu800 possible contents ofu800 \'title\' should beu800 putu800 inu800 \'trans title\' \'ortu800\' \'publication place\' german \'ortea\' \'publication place\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'other\' \'others \'oznaczenie\' \'agency\' polish \'pagees \'pages misspelling \'pagina\' \'page\' italian \'pagina\' \'pages italian \'pagine\' \'pages italian \'pagine\' \'pages italian \'passage\' \'pages french \'periodico\' \'magazine\' spanish \'plublisher\' \'publisher\' misspelling \'pmcid\' \'pmcu800\' \'post script\' \'postscript\' misspelling \'praca\' \'work\' polish \'primero\' \'first\' spanish \'pru8c3a9nom\' \'first\' french \'pru8c3a9nom1\' \'first1\' french \'psu800 \'postscript\' \'pubu800\' \'publisher\' \'pubblicazione\' \'magazine\' could beu800 anyu800 kind ofu800 work \'publicaciu8c3b3n\' \'journal\' could beu800 anyu800 kind ofu800 work \'publicationdate\' \'publication date\' oldu800 parameter name \'published\' \'publisher\' could beu800 date location oru800 name ofu800 publisher \'publicationplace\' \'publication place\' oldu800 parameter name \'pulbication place\' \'publication place\' misspelling \'pu8c3a1gina\' \'page\' spanish \'pu8c3a1ginas \'pages spanish \'pu8c3a9riodique\' \'publisher\' french \'registration\' \'urlu800 access oldu800 parameter name \'reihe\' \'series german \'retrieved\' \'access date\' \'richiestasottoscrizione\' \'urlu800 access italian asu800 urlu800 access subscription \'roku800\' \'date\' polish \'sammelwerk\' \'work\' german \'sayfa\' \'page\' turkish \'sayfalar\' \'pages turkish \'sayu8c4b1\' \'issue\' turkish \'script post\' \'postscript\' misspelling \'script trans \'transcript\' misspelling \'season\' \'date\' oldu800 parameter name cite serial only \'sectionurl\' \'section urlu800\' oldu800 parameter name \'seiten\' \'pages german \'seria\' \'series spanish polish \'serie\' \'series italian \'su8c3a9rie\' \'series french \'serieslink\' \'series link\' oldu800 parameter name \'seriesno\' \'series number\' oldu800 parameter name \'service\' \'agency\' \'sitioweb\' \'website\' spanish \'sito\' \'website\' italian \'soyadu8c4b1\' \'last\' turkish \'spalten\' \'atu800\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'sprache\' \'language\' german \'stron\' \'page\' polish \'strony\' \'pages polish \'subjectlink\' \'subject link\' oldu800 parameter name \'subscription\' \'urlu800 access oldu800 parameter name emulated asu800 urlu800 access subscription \'suru800 name\' \'surname\' misspelling \'suscripciu8c3b3n\' \'urlu800 access spanish polish asu800 urlu800 access subscription \'tagu800\' \'date\' german \'tarih\' \'date\' turkish \'template docu800 demo\' \'nou800 tracking\' oldu800 parameter alias \'tile\' \'title\' misspelling \'timecaption\' \'time caption\' oldu800 parameter name \'titlelink\' \'title link\' oldu800 parameter name \'tipo\' \'type\' italian \'tite\' \'title\' misspelling \'titel\' \'title\' german \'titel pu800\' \'title\' german \'postscript none\' should beu800 added asu800 well \'titelerg\' \'contribution\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'titled\' \'title\' brazilian portuguese \'titolo\' \'title\' italian \'titre\' \'title\' french \'trans script\' \'transcript\' misspelling \'trans_chapter\' \'trans chapter\' oldu800 parameter alias \'trans_title\' \'trans title\' oldu800 parameter alias \'transchapter\' \'trans chapter\' \'transcripturl\' \'transcript urlu800\' oldu800 parameter name \'transscript\' \'transcript\' misspelling \'transscript format\' \'transcript format\' misspelling \'transscript urlu800\' \'transcript urlu800\' misspelling \'transscripturl\' \'transcript urlu800\' misspelling \'transtitle\' \'trans title\' \'typu800\' \'author mask\' german notu800 au800 direct replacement butu800 theu800 only valid argument \'typu800 wlu800\' canu800 beu800 emulated using \'author mask\' \'tytuu8c582\' \'title\' polish \'tu8c3adtle\' \'title\' \'tu8c3adtulo\' \'title\' spanish \'ubicaciu8c3b3n\' \'location\' spanish \'urlarchivio\' \'archive urlu800\' italian \'urlarchivo\' \'archive urlu800\' spanish \'urlmorto\' \'urlu800 status italian \'urnu800\' \'idu800\' german asu800 \'idu800 urnu800 ... \' \'vu800 authors \'vauthors misspelling \'vu800 editors \'veditors misspelling \'verlag\' \'publisher\' german \'verlagea\' \'publisher\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'volu800\' \'volume\' \'volumen\' \'volume\' spanish \'werk\' \'work\' german \'werkerg\' \'contribution\' german notu800 au800 direct replacement butu800 canu800 beu800 emulated \'wkautore\' \'author link\' italian \'wolumin\' \'volume\' polish \'wydanie\' \'number\' polish \'wydawca\' \'publisher\' french \'yardu8c4b1mcu8c4b1yazarlar\' \'author\' turkish \'yayu8c4b1mcu8c4b1\' \'publisher\' turkish \'yayu8c4b1ncu8c4b1\' \'publisher\' turkish \'yazar\' \'author\' turkish \'yazarbau8c49fu8c4b1\' \'author link\' turkish \'yeru800\' \'location\' turkish \'yu8c4b1l\' \'date\' turkish \'zaprezentowany\' \'publisher\' french \'zdbu800\' \'idu800\' german asu800 \'idu800 zdbu800 ... \' \'zitat\' \'quote\' german \'zugriff\' \'access date\' german \'u8c3a9diteur\' \'editor\' french \'u8c3b6lu8c3bcurl\' \'urlu800 status turkish \'u8c3bcbersetzer\' \'translator\' german singular andu800 plural here weu800 useu800 luau800 patterns tou800 make suggestions. theu800 form isu800 \'pattern\' \'correct\' luau800 patterns areu800 notu800 regex though they areu800 similar. theu800 escape character isu800 \' \' notu800 \' \'. foru800 more information about luau800 patterns seeu800 extension scribunto lua_reference_manual#patterns patterns should probably always include theu800 \' \' andu800 \' \' anchor assertions tou800 prevent au800 partial match from incorrectly suggesting theu800 wrong parameter name. foru800 instance theu800 pattern \'au800 utho ru800\' matches \'author\' inu800 theu800 nou800 longer supported parameter author separator sou800 theu800 code suggests \' author \'; theu800 same pattern also matches theu800 nou800 longer supported parameter separator returning \'ator\' sou800 again theu800 code suggests \' author \'. oneu800 capture isu800 supported typically theu800 enumerator from anu800 enumerated parameter theu800 \'6u800\' inu800 author6 etcu800. theu800 value from theu800 capture replaces 1u800 inu800 theu800 \'correct\' value. local patterns \' acu800 esu800 du800 au800 tu800 eu800 \' \'access date\' misspelling \' apellido su800 du800 \' \'last 1u800\' spanish enumerated \' au800 utho ru800 \' \'author\' misspelling \' au800 utho ru800 du800 \' \'author 1u800\' misspelling enumerated \' author link du800 \' \'author link 1u800\' polish enumerated \' autor eu800 du800 \' \'author 1u800\' italian spanish german enumerated \' authorfirst du800 \' \'author first 1u800\' oldu800 parameter name enumerated \' author du800 first \' \'author first 1u800\' oldu800 parameter name enumerated \' authorgiven du800 \' \'author given 1u800\' oldu800 parameter name enumerated \' author du800 given \' \'author given 1u800\' oldu800 parameter name enumerated \' authorlast du800 \' \'author last 1u800\' oldu800 parameter name enumerated \' author du800 last \' \'author last 1u800\' oldu800 parameter name enumerated \' authormask du800 \' \'author mask 1u800\' oldu800 parameter name enumerated \' author du800 mask \' \'author mask 1u800\' oldu800 parameter name enumerated \' authorsurname du800 \' \'author surname 1u800\' oldu800 parameter name enumerated \' author du800 surname \' \'author surname 1u800\' oldu800 parameter name enumerated \' cognome du800 \' \'last 1u800\' italian enumerated \' editorfirst du800 \' \'editor first 1u800\' oldu800 parameter name enumerated \' editor du800 first \' \'editor first 1u800\' oldu800 parameter name enumerated \' editorgiven du800 \' \'editor given 1u800\' oldu800 parameter name enumerated \' editor du800 given \' \'editor given 1u800\' oldu800 parameter name enumerated \' editorlast du800 \' \'editor last 1u800\' oldu800 parameter name enumerated \' editor du800 last \' \'editor last 1u800\' oldu800 parameter name enumerated \' editorlink du800 \' \'editor link 1u800\' oldu800 parameter name enumerated \' editor du800 link \' \'editor link 1u800\' oldu800 parameter name enumerated \' editormask du800 \' \'editor mask 1u800\' oldu800 parameter name enumerated \' editor du800 mask \' \'editor mask 1u800\' oldu800 parameter name enumerated \' editorsurname du800 \' \'editor surname 1u800\' oldu800 parameter name enumerated \' editor du800 surname \' \'editor surname 1u800\' oldu800 parameter name enumerated \' enlaceautore du800 \' \'author link 1u800\' spanish enumerated \' first du800 \' \'first 1u800\' enumerated \' last du800 \' \'last 1u800\' enumerated \' nomu800 eu800 du800 \' \'last 1u800\' italian french enumerated \' nombre du800 \' \'first 1u800\' spanish enumerated \' primero du800 \' \'first 1u800\' spanish enumerated \' puu800 blish ersu800 \' \'publisher\' misspelling \' subjectlink du800 \' \'subject link 1u800\' oldu800 parameter name enumerated \' subject du800 link \' \'subject link 1u800\' oldu800 parameter name enumerated \' wkautore du800 \' \'author link 1u800\' italian enumerated return suggestions suggestions patterns patterns ; '),
(23, 'citation cs1u800 enu800 utilities', ' local zu800 error_cats_t ; foru800 categorizing citations that contain errors error_ids_t ; list ofu800 error identifiers; used tou800 prevent duplication ofu800 certain errors; local tou800 this module error_msgs_t ; sequence table ofu800 error messages maint_cats_t ; foru800 categorizing citations that aren\'tu800 erroneous peru800 seu800 butu800 could useu800 au800 little work prop_cats_t ; foru800 categorizing citations based onu800 certain properties language ofu800 source foru800 instance prop_keys_t ; foru800 adding classes tou800 theu800 citation citation\'su800 tagu800 ; local cfgu800; table ofu800 tables imported from selected module citation cs1u800 configuration returns true ifu800 argument isu800 setu800; false otherwise. argument isu800 \'setu800\' when itu800 exists notu800 nilu800 oru800 when itu800 isu800 notu800 anu800 empty string. local function is_set varu800 return notu800 varu800 nilu800 oru800 varu800   ; endu800 whether needle isu800 inu800 haystack local function in_array needle haystack ifu800 needle nilu800 then return false; endu800 foru800 nu800 vu800 inu800 ipairs haystack dou800 ifu800 vu800 needle then return nu800; endu800 endu800 return false; endu800 when isu800 wholly wrapped inu800 accept asu800 written markup return without markup andu800 true; return andu800 false else with allow_empty false must have atu800 least oneu800 character inside theu800 markup with allow_empty true theu800 markup frame canu800 beu800 empty like tou800 distinguish anu800 empty template parameter from theu800 specific condition \"hasu800 nou800 applicable value\" inu800 citation context. after further evaluation theu800 twou800 cases might beu800 merged atu800 au800 later stage butu800 should beu800 kept separated foru800 nowu800. local function has_accept_as_written stru800 allow_empty ifu800 notu800 is_set stru800 then return stru800 false; endu800 local count; ifu800 true allow_empty then stru800 count mwu800u82eustringu82egsub stru800 \' .* \' \' 1u800\' ; allows tou800 beu800 anu800 empty setu800 else stru800 count mwu800u82eustringu82egsub stru800 \' . \' \' 1u800\' ; endu800 return stru800 0u800 count; endu800 populates numbered arguments inu800 au800 message string using anu800 argument table. mayu800 beu800 au800 single string oru800 au800 sequence table ofu800 multiple strings. local function substitute msgu800 args return args andu800 mwu800u82emessageu82enewrawmessage msgu800 args plain oru800 msgu800; endu800 wraps error messages with cssu800 markup according tou800 theu800 state ofu800 hidden. mayu800 beu800 au800 single string oru800 au800 sequence table ofu800 multiple strings. local function error_comment content hidden return substitute hidden andu800 cfgu800u82epresentation \'hidden error\' oru800 cfgu800u82epresentation \'visible error\' content ; endu800 converts au800 hyphen tou800 au800 dash under certain conditions. theu800 hyphen must separate like items; unlike items areu800 returned unmodified. these forms areu800 modified letter letter au800 bu800 digit digit 4u800 5u800 digit separator digit digit separator digit 4u800u82e1u800 4u800u82e5u800 oru800 4u800 1u800 4u800 5u800 letterdigit letterdigit a1u800 a5u800 anu800 optional separator between letter andu800 digit isu800 supported u8e28093 au800u82e1u800 au800u82e5u800 oru800 au800 1u800 au800 5u800 digitletter digitletter 5au800 5du800 anu800 optional separator between letter andu800 digit isu800 supported u8e28093 5u800u82eau800 5u800u82edu800 oru800 5u800 au800 5u800 du800 anyu800 other forms areu800 returned unmodified. stru800 mayu800 beu800 au800 comma oru800 semicolon separated list local function hyphen_to_dash stru800 ifu800 notu800 is_set stru800 then return stru800; endu800 local accept; boolean stru800 mwu800u82eustringu82egsub stru800 \" . \" function mu800 return mwu800u82eustringu82egsub mwu800u82eustringu82egsub mu800 \" \" \"u8efbc8c\" \";\" \"u8efbc9b\" endu800 replace commas andu800 semicolons inu800 accept asu800 written markup with similar unicode characters sou800 they\'llu800 beu800 ignored during theu800 split stru800 mwu800u82eustringu82egsub stru800 \'& nmu800 dash;\' \'&ndash;\' \'u8e28093\' \'&mdash;\' \'u8e28094\' ; replace &mdash; andu800 &ndash; entities with their characters; semicolon mucks upu800 theu800 textu82esplit stru800 mwu800u82eustringu82egsub stru800 \'&#45u800;\' \' \' ; replace html numeric entity with hyphen character stru800 mwu800u82eustringu82egsub stru800 \'&nbsp;\' \' \' ; replace &nbsp; entity with generic keyboard space character local outu800 ; local list mwu800u82etextu82esplit stru800 \' su800* ; su800*\' ; split stru800 atu800 comma oru800 semicolon separators ifu800 there areu800 anyu800 foru800 _u800 item inu800 ipairs list dou800 foru800 each item inu800 theu800 list item accept has_accept_as_written item ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 item ifu800 notu800 accept andu800 mwu800u82eustringu82ematch item \' wu800* . wu800 su800* u8e28093u8e28094 su800* wu800* . wu800 \' then ifu800 au800 hyphenated range oru800 hasu800 endash oru800 emdash separators ifu800 mwu800u82eustringu82ematch item \' au800 . du800 su800* su800* au800 . du800 \' oru800 letterdigit hyphen letterdigit optional separator between letter andu800 digit mwu800u82eustringu82ematch item \' du800 . au800 su800* su800* du800 . au800 \' oru800 digitletter hyphen digitletter optional separator between digit andu800 letter mwu800u82eustringu82ematch item \' du800 . du800 su800* su800* du800 . du800 \' oru800 digit separator digit hyphen digit separator digit mwu800u82eustringu82ematch item \' du800 su800* su800* du800 \' oru800 digit hyphen digit mwu800u82eustringu82ematch item \' au800 su800* su800* au800 \' then letter hyphen letter item mwu800u82eustringu82egsub item \' wu800* . wu800 su800* su800* wu800* . wu800 \' \' 1u8e28093 2u800\' ; replace hyphen remove extraneous space characters else item mwu800u82eustringu82egsub item \' su800* u8e28093u8e28094 su800*\' \'u8e28093\' ; foru800 endash oru800 emdash separated ranges replace emu800 with enu800 remove extraneous whitespace endu800 endu800 tableu82einsert outu800 item ; addu800 theu800 possibly modified item tou800 theu800 output table endu800 local temp_str  ; concatenate theu800 output table into au800 comma separated string temp_str accept has_accept_as_written tableu82econcat outu800 \' \' ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 concatenated outu800 ifu800 accept then temp_str has_accept_as_written stru800 ; when global markup removed return original stru800; dou800 itu800 this wayu800 tou800 suppress boolean second return value return mwu800u82eustringu82egsub mwu800u82eustringu82egsub temp_str \"u8efbc8c\" \" \" \"u8efbc9b\" \";\" ; else return mwu800u82eustringu82egsub mwu800u82eustringu82egsub temp_str \"u8efbc8c\" \" \" \"u8efbc9b\" \";\" ; else return assembled temp_str endu800 endu800 makes au800 wikilink; when both link andu800 display text isu800 provided returns au800 wikilink inu800 theu800 form lu800 du800 ; ifu800 only link isu800 provided oru800 link andu800 display areu800 theu800 same returns au800 wikilink inu800 theu800 form lu800 ; ifu800 neither areu800 provided oru800 link isu800 omitted returns anu800 empty string. local function make_wikilink link display ifu800 notu800 is_set link then return   endu800 ifu800 is_set display andu800 link display then return tableu82econcat \' \' link \' \' display \' \' ; else return tableu82econcat \' \' link \' \' ; endu800 endu800 sets anu800 error message using theu800 configuration error_conditions table along with arguments supplied inu800 theu800 function call inserts theu800 resulting message inu800 zu800u82eerror_msgs_t sequence table andu800 returns theu800 error message. u8e28093 keyu800 value foru800 appropriate error handler inu800 configuration error_conditions table u8e28093 mayu800 beu800 au800 single string oru800 au800 sequence table ofu800 multiple strings tou800 beu800 subsititued into error_conditions error_id .message u8e28093 boolean true u8e28093 causes this function tou800 return theu800 error message notu800 wrapped inu800 visible error hidden error span tagu800; returns error_conditions error_id .hidden asu800 au800 second return value does notu800 addu800 message tou800 zu800u82eerror_msgs_t sequence table false nilu800 u8e28093 adds message wrapped inu800 visible error hidden error span tagu800 tou800 zu800u82eerror_msgs_t returns theu800 error message wrapped inu800 visible error hidden error span tagu800; there isu800 nou800 second return value u8e28093 string tou800 beu800 prepended tou800 todo remove support foru800 these unused arguments u8e28093 string tou800 beu800 appended tou800 todo change zu800u82eerror_cats_t andu800 zu800u82emaint_cats_t tou800 have theu800 form cat_name true this tou800 avoid dups without having tou800 have anu800 extra table local added_maint_cats list ofu800 maintenance categories that have been added tou800 zu800u82emaint_cats_t; todo figure outu800 howu800 tou800 delete this table local function set_message error_id arguments rawu800 prefix suffix local error_state cfgu800u82eerror_conditions error_id ; prefix prefix oru800  ; suffix suffix oru800  ; ifu800 error_state nilu800 then error cfgu800u82emessages \'undefined_error\' .. \' \' .. error_id ; because missing error handler inu800 module citation cs1u800 configuration elseif is_set error_stateu82ecategory then ifu800 error_stateu82emessage then when error_stateu82emessage defined this isu800 anu800 error message tableu82einsert zu800u82eerror_cats_t error_stateu82ecategory ; else ifu800 notu800 added_maint_cats error_id then added_maint_cats error_id true; note that weu800\'veu800 added this category tableu82einsert zu800u82emaint_cats_t substitute error_stateu82ecategory arguments ; make catu800 name then addu800 tou800 table endu800 return; because nou800 message nothing more tou800 dou800 endu800 endu800 local message substitute error_stateu82emessage arguments ; message tableu82econcat message \' \' make_wikilink tableu82econcat cfgu800u82emessages \'help page link\' \'#\' error_stateu82eanchor cfgu800u82emessages \'help page label\' \' \' ; zu800u82eerror_ids_t error_id true; ifu800 zu800u82eerror_ids_t \'err_citation_missing_title\' andu800 ifu800 missing title error already noted in_array error_id \'err_bare_url_missing_title\' \'err_trans_missing_title\' then andu800 this error isu800 oneu800 ofu800 these return   false; donu800\'tu800 bother because oneu800 flavor ofu800 missing title isu800 sufficient endu800 message tableu82econcat prefix message suffix ; ifu800 true rawu800 then return message error_stateu82ehidden; return message notu800 wrapped inu800 visible error hidden error span tagu800 endu800 message error_comment message error_stateu82ehidden ; wrap message inu800 visible error hidden error span tagu800 tableu82einsert zu800u82eerror_msgs_t message ; addu800 itu800 tou800 theu800 messages sequence table return message; andu800 done; return value generally notu800 used butu800 isu800 used asu800 au800 flag inu800 various functions ofu800 identifiers endu800 this function isu800 used byu800 select_one tou800 determine ifu800 oneu800 ofu800 au800 list ofu800 alias parameters isu800 inu800 theu800 argument list provided byu800 theu800 template. input args u8e28093 pointer tou800 theu800 arguments table from calling template alias u8e28093 oneu800 ofu800 theu800 list ofu800 possible aliases inu800 theu800 aliases lists from module citation cs1u800 configuration index u8e28093 foru800 enumerated parameters identifies which oneu800 enumerated u8e28093 true false flag used tou800 choose howu800 enumerated aliases areu800 examined value u8e28093 value associated with anu800 alias that hasu800 previously been selected; nilu800 ifu800 notu800 yetu800 selected selected u8e28093 theu800 alias that hasu800 previously been selected; nilu800 ifu800 notu800 yetu800 selected error_list u8e28093 list ofu800 aliases that areu800 duplicates ofu800 theu800 alias already selected returns value u8e28093 value associated with alias weu800 selected oru800 that wasu800 previously selected oru800 nilu800 ifu800 anu800 alias notu800 yetu800 selected selected u8e28093 theu800 alias weu800 selected oru800 theu800 alias that wasu800 previously selected oru800 nilu800 ifu800 anu800 alias notu800 yetu800 selected local function is_alias_used args alias index enumerated value selected error_list ifu800 enumerated then isu800 this au800 test foru800 anu800 enumerated parameters alias mwu800u82eustringu82egsub alias \'#\' index ; replace \'#\' with theu800 value inu800 index else alias mwu800u82eustringu82egsub alias \'#\'   ; remove \'#\' ifu800 itu800 exists endu800 ifu800 is_set args alias then alias isu800 inu800 theu800 template template\'su800 argument list ifu800 value nilu800 andu800 selected alias then ifu800 weu800 have already selected oneu800 ofu800 theu800 aliases local skip; foru800 _u800 vu800 inu800 ipairs error_list dou800 spin through theu800 error list tou800 seeu800 ifu800 weu800\'veu800 added this alias ifu800 vu800 alias then skip true; break; hasu800 been added sou800 stop looking endu800 endu800 ifu800 notu800 skip then hasu800 notu800 been added sou800 tableu82einsert error_list alias ; addu800 error alias tou800 theu800 error list endu800 else value args alias ; notu800 yetu800 selected anu800 alias sou800 select this oneu800 selected alias; endu800 endu800 return value selected; return newly selected alias oru800 previously selected alias endu800 adds au800 category tou800 zu800u82emaint_cats_t using names from theu800 configuration file with additional text ifu800 anyu800. tou800 prevent duplication theu800 added_maint_cats table lists theu800 categories byu800 keyu800 that have been added tou800 zu800u82emaint_cats_t. local function add_maint_cat keyu800 arguments ifu800 notu800 added_maint_cats keyu800 then added_maint_cats keyu800 true; note that weu800\'veu800 added this category tableu82einsert zu800u82emaint_cats_t substitute cfgu800u82emaint_cats keyu800 arguments ; make name then addu800 tou800 table endu800 endu800 adds au800 category tou800 zu800u82eprop_cats_t using names from theu800 configuration file with additional text ifu800 anyu800. foreign_lang_source andu800 foreign_lang_source_2 keys have au800 language code appended tou800 them sou800 that multiple languages mayu800 beu800 categorized butu800 multiples ofu800 theu800 same language areu800 notu800 categorized. added_prop_cats isu800 au800 table declared inu800 page scope variables above local added_prop_cats ; list ofu800 property categories that have been added tou800 zu800u82eprop_cats_t local function add_prop_cat keyu800 arguments key_modifier local key_modified keyu800 .. key_modifier andu800 key_modifier oru800   ; modify with ifu800 present andu800 notu800 nilu800 ifu800 notu800 added_prop_cats key_modified then added_prop_cats key_modified true; note that weu800\'veu800 added this category tableu82einsert zu800u82eprop_cats_t substitute cfgu800u82eprop_cats keyu800 arguments ; make name then addu800 tou800 table tableu82einsert zu800u82eprop_keys_t \'cs1u800 prop \' .. keyu800 ; convert keyu800 tou800 class foru800 useu800 inu800 theu800 citation citation\'su800 tagu800 endu800 endu800 protects au800 string that will beu800 wrapped inu800 wiki italic markup   ...   note weu800 cannot useu800 foru800 italics asu800 theu800 expected behavior foru800 italics specified byu800  ...  inu800 theu800 title isu800 that they will beu800 inverted iu800u82eeu800. unitalicized inu800 theu800 resulting references. inu800 addition andu800   tend tou800 interact poorly under mediawiki mediawiki\'su800 html tidy. local function safe_for_italics stru800 ifu800 notu800 is_set stru800 then return stru800 endu800 ifu800 mwu800u82eustringu82esubu800 stru800 1u800 1u800 \"\'\" then stru800 \" \" .. stru800; endu800 ifu800 mwu800u82eustringu82esubu800 stru800 1u800 1u800 \"\'\" then stru800 stru800 .. \" \"; endu800 return mwu800u82eustringu82egsub stru800 \' nu800\' \' \' ; remove newlines asu800 they break italics. endu800 applies styling tou800 various parameters. supplied string isu800 wrapped using au800 message_list configuration taking oneu800 argument; protects italic styled parameters. additional text taken from citation_configu82epresentation theu800 reason this function isu800 similar tou800 butu800 separate from wrap_msg . local function wrap_style keyu800 stru800 ifu800 notu800 is_set stru800 then return \"\"; elseif in_array keyu800 \'italic title\' \'trans italic title\' then stru800 safe_for_italics stru800 ; endu800 return substitute cfgu800u82epresentation keyu800 stru800 ; endu800 make au800 separated list ofu800 items using provided separators. typically \' \' typically \' andu800 \' typically \' andu800 \' oru800 \' & \' defaults tou800 cfgu800u82epresentation \'sep_list\' cfgu800u82epresentation \'sep_list_pair\' andu800 cfgu800u82epresentation \'sep_list_end\' ifu800 isu800 specified andu800 must also beu800 supplied local function make_sep_list count list_seq sep_list sep_list_pair sep_list_end local list  ; ifu800 notu800 sep_list then setu800 theu800 defaults sep_list cfgu800u82epresentation \'sep_list\' ; sep_list_pair cfgu800u82epresentation \'sep_list_pair\' ; sep_list_end cfgu800u82epresentation \'sep_list_end\' ; endu800 ifu800 2u800 count then list tableu82econcat list_seq sep_list_pair ; insert separator between twou800 items; returns list_seq 1u800 then only oneu800 item elseif 2u800 with final separator endu800 return list; endu800 chooses oneu800 matching parameter from au800 list ofu800 parameters tou800 consider. theu800 list ofu800 parameters tou800 consider isu800 just names. foru800 parameters that mayu800 beu800 enumerated theu800 position ofu800 theu800 numerator inu800 theu800 parameter name isu800 identified byu800 theu800 \'#\' sou800 author last1 andu800 author1 last areu800 represented asu800 \'author last#\' andu800 \'author# last\'. because enumerated parameter 1u800 isu800 anu800 alias ofu800 weu800 must test foru800 both possibilities. generates anu800 error ifu800 more than oneu800 match isu800 present. local function select_one args aliases_list error_condition index local value nilu800; theu800 value assigned tou800 theu800 selected parameter local selected  ; theu800 name ofu800 theu800 parameter weu800 have chosen local error_list ; ifu800 index nilu800 then index tostring index ; endu800 foru800 _u800 alias inu800 ipairs aliases_list dou800 foru800 each alias inu800 theu800 aliases list ifu800 mwu800u82eustringu82ematch alias \'#\' then ifu800 this alias canu800 beu800 enumerated ifu800 \'1u800\' index then when index isu800 1u800 test foru800 enumerated andu800 nonu800 enumerated aliases value selected is_alias_used args alias index false value selected error_list ; first test foru800 nonu800 enumerated alias endu800 value selected is_alias_used args alias index true value selected error_list ; test foru800 enumerated alias else value selected is_alias_used args alias index false value selected error_list ; test foru800 nonu800 enumerated alias endu800 endu800 ifu800 #error_list 0u800 andu800 \'none\' error_condition then foru800 cases where this code isu800 used outside ofu800 extract_names foru800 iu800 vu800 inu800 ipairs error_list dou800 error_list iu800 wrap_style \'parameter\' vu800 ; endu800 tableu82einsert error_list wrap_style \'parameter\' selected ; set_message error_condition make_sep_list #error_list error_list ; endu800 return value selected; endu800 gets theu800 display text from au800 wikilink like au800 bu800 oru800 bu800 gives bu800 theu800 stru800 gsub returns either au800 bu800 froma au800 bu800 oru800 bu800 from bu800 oru800 bu800 from bu800 nou800 wikilink markup . inu800 lu800 lu800 gsub removes theu800 link andu800 pipe ifu800 they exist ; theu800 second gsub trims whitespace from theu800 label ifu800 stru800 wasu800 wrapped inu800 wikilink markup. presumably this isu800 because without wikimarkup inu800 stru800 there isu800 nou800 match inu800 theu800 initial gsub theu800 replacement function lu800 doesn\'tu800 getu800 called. local function remove_wiki_link stru800 return mwu800u82eustringu82egsub stru800 \" * \" function lu800 return mwu800u82eustringu82egsub mwu800u82eustringu82egsub lu800 \" * .* \" \" 1u800\" \" su800* . su800* \" \" 1u800\" ; endu800 ; endu800 determines ifu800 stru800 isu800 au800 wikilink extracts andu800 returns theu800 wikilink type link text andu800 display text parts. ifu800 stru800 isu800 au800 complex wikilink lu800 du800 returns wl_type 2u800 andu800 du800 andu800 lu800 from lu800 du800 ; ifu800 stru800 isu800 au800 simple wikilink du800 returns wl_type 1u800 andu800 du800 from du800 andu800 lu800 asu800 empty string; ifu800 notu800 au800 wikilink returns wl_type 0u800 stru800 asu800 du800 andu800 lu800 asu800 empty string. trims leading andu800 trailing whitespace andu800 pipes from lu800 andu800 du800 lu800 lu800 andu800 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 du800 du800 areu800 accepted byu800 mediawiki andu800 treated like du800 ; while du800 isu800 notu800 accepted byu800 mediawiki here weu800 accept itu800 andu800 return du800 without theu800 pipes . local function is_wikilink stru800 local du800 lu800 local wl_type 2u800; assume that stru800 isu800 au800 complex wikilink lu800 du800 ifu800 notu800 mwu800u82eustringu82ematch stru800 \' \' then isu800 stru800 some sort ofu800 au800 wikilink must have some sort ofu800 content return 0u800 stru800  ; notu800 au800 wikilink; return wl_type asu800 0u800 stru800 asu800 du800 andu800 empty string asu800 lu800 endu800 lu800 du800 mwu800u82eustringu82ematch stru800 \' \' ; getu800 lu800 andu800 du800 from lu800 du800 ifu800 notu800 is_set du800 then ifu800 nou800 separate display du800 mwu800u82eustringu82ematch stru800 \' * * \' ; getu800 du800 from du800 oru800 du800 du800 wl_type 1u800; endu800 du800 mwu800u82etextu82etrim du800 \' su800 \' ; trim white space andu800 pipe characters return wl_type du800 lu800 oru800  ; endu800 strip wiki italic andu800 bold markup from argument sou800 that itu800 doesn\'tu800 contaminate coins metadata. this function strips common patterns ofu800 apostrophe markup. weu800 presume that editors whou800 have taken theu800 time tou800 markup au800 title have asu800 au800 result provided valid markup. when they donu800\'tu800 some single apostrophes areu800 left behind. returns theu800 argument without wiki markup andu800 au800 number; theu800 number isu800 more oru800 less meaningless except asu800 au800 flag tou800 indicate that markup wasu800 replaced; dou800 notu800 rely onu800 itu800 asu800 anu800 indicator ofu800 howu800 many ofu800 anyu800 kind ofu800 markup wasu800 removed; returns theu800 argument andu800 nilu800 when nou800 markup removed local function strip_apostrophe_markup argument ifu800 notu800 is_set argument then return argument nilu800; nou800 argument nothing tou800 dou800 endu800 ifu800 nilu800 mwu800u82eustringu82efind argument \" \" 1u800 true then isu800 there atu800 least oneu800 double apostrophe ifu800 notu800 exit. return argument nilu800; endu800 local flag; while true dou800 ifu800 mwu800u82eustringu82efind argument \" \" 1u800 true then bold italic 5u800 argument flag mwu800u82eustringu82egsub argument \" \' \' \' \' \'\" \"\" ; remove allu800 instances ofu800 itu800 elseif mwu800u82eustringu82efind argument \" \" 1u800 true then italic start andu800 endu800 without content 4u800 argument flag mwu800u82eustringu82egsub argument \" \' \' \' \'\" \"\" ; elseif mwu800u82eustringu82efind argument \" \" 1u800 true then bold 3u800 argument flag mwu800u82eustringu82egsub argument \" \' \' \'\" \"\" ; elseif mwu800u82eustringu82efind argument \" \" 1u800 true then italic 2u800 argument flag mwu800u82eustringu82egsub argument \" \' \'\" \"\" ; else break; endu800 endu800 return argument flag; done endu800 sets local cfgu800 table tou800 same live oru800 sandbox asu800 that used byu800 theu800 other modules. local function set_selected_modules cfg_table_ptr cfgu800 cfg_table_ptr; endu800 return add_maint_cat add_maint_cat exported functions add_prop_cat add_prop_cat error_comment error_comment has_accept_as_written has_accept_as_written hyphen_to_dash hyphen_to_dash in_array in_array is_set is_set is_wikilink is_wikilink make_sep_list make_sep_list make_wikilink make_wikilink remove_wiki_link remove_wiki_link safe_for_italics safe_for_italics select_one select_one set_message set_message set_selected_modules set_selected_modules strip_apostrophe_markup strip_apostrophe_markup substitute substitute wrap_style wrap_style zu800 zu800 exported table ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(24, 'citation cs1u800 enu800 whitelist', ' because au800 steady state signal conveys nou800 useful information whitelistu82ebasic_arguments list items canu800 have three values true these parameters areu800 valid andu800 supported parameters false these parameters areu800 deprecated butu800 still supported tracked these parameters areu800 valid andu800 supported parameters tracked inu800 anu800 eponymous properties category nilu800 these parameters areu800 nou800 longer supported. remove entirely local basic_arguments \'accessdate\' true \'access date\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8db8cu8d8a7u8d8a8u8db8c\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8d8afu8db8cu8d8af\' true \'u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c\' true \'u8d8a8u8d8a7u8d8b2u8db8cu8d8a7u8d8a8u8db8c\' true \'u8d8a8u8d8a7u8d8b2u8d8afu8db8cu8d8af\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c\' true \'agency\' true \'u8d8aeu8d8a8u8d8b1u8daafu8d8b2u8d8a7u8d8b1u8db8c\' true \'archivedate\' true \'archive date\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' true \'archive format\' true \'archiveurl\' true \'archive urlu800\' true \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' true \'article\' true \'article format\' true \'article urlu800\' true \'article urlu800 access true \'arxiv\' true cite arxiv; here because allowed inu800 cite ... asu800 identifier \'u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' true \'asin\' true \'asin\' true \'asin tldu800\' true \'atu800\' true \'u8d8afu8d8b1\' true \'author\' true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987\' true \'u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987\' true \'author first\' true \'u8d986u8d8a7u8d985\' true \'author given\' true \'author last\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c\' true \'author surname\' true \'authorlink\' true \'author link\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987\' true \'author mask\' true \'authors true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986\' true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987u8e2808cu8d987u8d8a7\' true \'u8d985u8d8a4u8d984u8d981u8db8cu8d986\' true \'u8d985u8d8a4u8d984u8d981u8d8a7u8d986\' true \'bibcode\' true \'u8d8a8u8db8cu8d8a8u8daa9u8d8af\' true \'bibcode access true \'biorxiv\' true cite biorxiv; here because allowed inu800 cite ... asu800 identifier \'chapter\' true \'u8d981u8d8b5u8d984\' true \'u8d985u8d8afu8d8aeu8d984\' true \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' true \'u8d985u8d982u8d8a7u8d984u8d987\' true \'chapter format\' true \'chapterurl\' true \'chapter urlu800\' true \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d981u8d8b5u8d984\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d981u8d8b5u8d984\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8afu8d8aeu8d984\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8aeu8d8b4\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d982u8d8a7u8d984u8d987\' true \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d985u8d982u8d8a7u8d984u8d987\' true \'chapter urlu800 access true \'citeseerx\' true cite citeseerx; here because allowed inu800 cite ... asu800 identifier \'collaboration\' true \'contribution\' true \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' true \'contribution format\' true \'contribution urlu800\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' true \'contribution urlu800 access true \'contributor\' true \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'contributor first\' true \'u8d986u8d8a7u8d985 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'contributor given\' true \'contributor last\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'contributor surname\' true \'contributor link\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'contributor mask\' true \'date\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1\' true \'deadurl\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b1u8d8afu8d987\' true \'dead urlu800\' true \'department\' true \'dfu800\' true \'dictionary\' true \'u8d988u8d8a7u8da98u8d987u8e2808cu8d986u8d8a7u8d985u8d987\' true \'u8d984u8d8bau8d8aau8e2808cu8d986u8d8a7u8d985u8d987\' true \'display authors true \'display contributors true \'display editors true \'display interviewers true \'display subjects true \'display translators true \'doiu800\' true \'doiu800\' true \'doiu800 access true \'doiu800 broken date\' true \'edition\' true \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aa\' true \'u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4\' true \'editor\' true \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1\' true \'editor first\' true \'u8d986u8d8a7u8d985 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1\' true \'editor given\' true \'editor last\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1\' true \'editor surname\' true \'editor link\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1\' true \'editor mask\' true \'eissn\' true \'eissn\' true \'encyclopaedia\' true \'encyclopedia\' true \'u8d8afu8d8a7u8d986u8d8b4u8d986u8d8a7u8d985u8d987\' true \'u8d8afu8d8a7u8db8cu8d8b1u8d8a9u8d8a7u8d984u8d985u8d8b9u8d8a7u8d8b1u8d981\' true \'entry\' true \'entry format\' true \'entry urlu800\' true \'entry urlu800 access true \'eprint\' true cite arxiv; here because allowed inu800 cite ... asu800 identifier \'first\' true \'format\' true \'u8d981u8d8b1u8d985u8d8aa\' true \'u8d982u8d8a7u8d984u8d8a8\' true \'given\' true \'hdlu800\' true \'hdlu800\' true \'hdlu800 access true \'host\' true unique tou800 certain templates \'idu800\' true \'idu800\' true \'institution\' true constrain tou800 cite thesis \'interviewer\' true \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'interviewer first\' true \'u8d986u8d8a7u8d985 u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'interviewer given\' true \'interviewer last\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'interviewer surname\' true \'interviewer link\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987\' true \'interviewer mask\' true \'isbn\' true \'isbn\' true \'u8d8b4u8d8a7u8d8a8u8daa9\' true \'ismn\' true \'ismn\' true \'issn\' true \'issn\' true \'u8d8b4u8d8a7u8d9beu8d8a7\' true \'issue\' true \'jfmu800\' true \'jfmu800\' true \'journal\' true \'u8da98u8d988u8d8b1u8d986u8d8a7u8d984\' true \'jstor\' true \'jstor\' true \'u8d8acu8db8cu8e2808cu8d8a7u8d8b3u8d8aau8d988u8d8b1\' true \'jstor access true \'lang\' true \'language\' true \'u8d8b2u8d8a8u8d8a7u8d986\' true \'u8daa9u8d8af u8d8b2u8d8a8u8d8a7u8d986\' true \'last\' true \'layu800 date\' false \'layu800 format\' false \'layu800 source\' false \'layu800 urlu800\' false \'lccn\' true \'lccn\' true \'location\' true \'magazine\' true \'u8d985u8d8acu8d984u8d987\' true \'u8d986u8d8b4u8d8b1u8db8cu8d987\' true \'medium\' true \'minutes true constrain tou800 cite avu800 media andu800 podcast \'mode\' true \'mru800\' true \'mru800\' true \'name list style\' true \'newspaper\' true \'u8d8b1u8d988u8d8b2u8d986u8d8a7u8d985u8d987\' true \'nou800 ppu800\' true \'nou800 tracking\' true \'number\' true \'u8d8b4u8d985u8d8a7u8d8b1u8d987\' true \'oclc\' true \'oclc\' true \'olu800\' true \'olu800\' true \'olu800 access true \'orig date\' true \'origyear\' true \'orig year\' true \'u8d8b3u8d8a7u8d984 u8d8a7u8d8b5u8d984u8db8c\' true \'u8db8cu8d8a7u8d8afu8d8afu8d8a7u8d8b4u8d8aa u8d8b3u8d8a7u8d984\' true \'osti\' true \'osti\' true \'osti access true \'others true \'u8d8afu8db8cu8daafu8d8b1u8d8a7u8d986\' true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986 u8d8b3u8d8a7u8db8cu8d8b1 u8d8a8u8d8aeu8d8b4u8e2808cu8d987u8d8a7\' true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986 u8d8afu8db8cu8daafu8d8b1\' true \'pu800\' true \'page\' true \'u8d8b5u8d981u8d8adu8d987\' true \'u8d8b5\' true \'pages true \'u8d8b5u8d981u8d8adu8d8a7u8d8aa\' true \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7\' true \'people\' true \'periodical\' true \'place\' true \'u8d985u8daa9u8d8a7u8d986\' true \'u8d985u8daa9u8d8a7u8d986 u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1u8d8a7u8d8aa\' true \'u8d8b4u8d987u8d8b1\' true \'pmcu800\' true \'pmcu800\' true \'pmcu800 embargo date\' true \'pmid\' true \'pmid\' true \'postscript\' true \'u8d9beu8db8cu8e2808cu8d986u8d988u8d8b4u8d8aa\' true \'ppu800\' true \'u8d8b5u8d8b5\' true \'publication date\' true \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1\' true \'publication place\' true \'publisher\' true \'u8d986u8d8a7u8d8b4u8d8b1\' true \'u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1u8d8a7u8d8aa\' true \'quotation\' true \'quote\' true \'u8d986u8d982u8d984 u8d982u8d988u8d984\' true \'u8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\' true \'quote page\' true \'quote pages true \'refu800\' true \'u8d8b1u8d981\' true \'ref2\' true \'u8d8b4\' true \'u8d8b4u8d986u8d8a7u8d8b3u8d987\' true \'rfcu800\' true \'rfcu800\' true \'sbnu800\' true \'sbnu800\' true \'scale\' true \'script article\' true \'script chapter\' true \'script contribution\' true \'script entry\' true \'script journal\' true \'script magazine\' true \'script newspaper\' true \'script periodical\' true \'script quote\' true \'script section\' true \'script title\' true \'script website\' true \'script work\' true \'section\' true \'u8d8a8u8d8aeu8d8b4\' true \'section format\' true \'section urlu800\' true \'section urlu800 access true \'series true \'u8d8b3u8d8b1u8db8c\' true \'u8d986u8d8b3u8d8aeu8d987\' true \'ssrn\' true cite ssrn; these three here because allowed inu800 cite ... asu800 identifier \'ssrn\' true \'ssrn access true \'subject\' true \'subject link\' true \'subject mask\' true \'surname\' true \'s2cid\' true \'s2cid\' true \'s2cid access true \'template docu800 demo\' true \'time\' true constrain tou800 cite avu800 media andu800 podcast \'u8d8b2u8d985u8d8a7u8d986\' true \'time caption\' true constrain tou800 cite avu800 media andu800 podcast \'title\' true \'u8d8b9u8d986u8d988u8d8a7u8d986\' true \'u8daa9u8d8aau8d8a7u8d8a8\' true \'title link\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d8b9u8d986u8d988u8d8a7u8d986\' true \'translator\' true \'u8d985u8d8aau8d8b1u8d8acu8d985\' true \'u8d8aau8d8b1u8d8acu8d985u8d987\' true \'translator first\' true \'translator given\' true \'translator last\' true \'translator surname\' true \'translator link\' true \'translator mask\' true \'trans article\' true \'trans chapter\' true \'trans contribution\' true \'trans entry\' true \'trans journal\' true \'trans magazine\' true \'trans newspaper\' true \'trans periodical\' true \'trans quote\' true \'trans section\' true \'trans title\' true \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d8b9u8d986u8d988u8d8a7u8d986\' true \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d8a7u8db8cu8d8aau8d8a7u8d984u8db8cu8daa9\' true \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d981u8d8b5u8d984\' true \'trans website\' true \'trans work\' true \'type\' true \'u8d986u8d988u8d8b9\' true \'urlu800\' true \'urlu800\' true \'u8d9beu8db8cu8d988u8d986u8d8af\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a7u8d8b5u8d984u8db8c\' true \'u8d986u8d8b4u8d8a7u8d986u8db8c\' true \'urlu800 access true \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d9beu8db8cu8d988u8d986u8d8af\' true \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d9beu8db8cu8d988u8d986u8d8af\' true \'urlu800 status true \'vauthors true \'veditors true \'version\' true \'u8d986u8d8b3u8d8aeu8d987\' true \'viau800\' true \'u8d8aau8d988u8d8b3u8d8b7\' true \'volume\' true \'u8d8acu8d984u8d8af\' true \'u8d8acu8d984u8d8afu8d987u8d8a7\' true \'u8d8afu8d988u8d8b1u8d987\' true \'website\' true \'u8d988u8d8a8u8daafu8d8a7u8d987\' true \'work\' true \'u8d8a7u8d8abu8d8b1\' true \'year\' true \'u8d8b3u8d8a7u8d984\' true \'zblu800\' true \'zblu800\' true local numbered_arguments \'author#\' true \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987#\' true \'u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987#\' true \'author first#\' true \'u8d986u8d8a7u8d985#\' true \'author# first\' true \'author given#\' true \'author# given\' true \'author last#\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c#\' true \'author# last\' true \'author surname#\' true \'author# surname\' true \'author link#\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987#\' true \'author# link\' true \'authorlink#\' true \'author#link\' true \'author mask#\' true \'author# mask\' true \'contributor#\' true \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'contributor first#\' true \'u8d986u8d8a7u8d985 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'contributor# first\' true \'contributor given#\' true \'contributor# given\' true \'contributor last#\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'contributor# last\' true \'contributor surname#\' true \'contributor# surname\' true \'contributor link#\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'contributor# link\' true \'contributor mask#\' true \'contributor# mask\' true \'editor#\' true \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\' true \'editor first#\' true \'u8d986u8d8a7u8d985 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\' true \'editor# first\' true \'editor given#\' true \'editor# given\' true \'editor last#\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\' true \'editor# last\' true \'editor surname#\' true \'editor# surname\' true \'editor link#\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\' true \'editor# link\' true \'editor mask#\' true \'editor# mask\' true \'first#\' true \'given#\' true \'host#\' true \'interviewer#\' true \'interviewer first#\' true \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'interviewer# first\' true \'interviewer given#\' true \'interviewer# given\' true \'interviewer last#\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'interviewer# last\' true \'interviewer surname#\' true \'interviewer# surname\' true \'interviewer link#\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' true \'interviewer# link\' true \'interviewer mask#\' true \'interviewer# mask\' true \'last#\' true \'subject#\' true \'subject link#\' true \'subject# link\' true \'subject mask#\' true \'subject# mask\' true \'surname#\' true \'translator#\' true \'u8d985u8d8aau8d8b1u8d8acu8d985#\' true \'u8d8aau8d8b1u8d8acu8d985u8d987#\' true \'translator first#\' true \'u8d986u8d8a7u8d985 u8d985u8d8aau8d8b1u8d8acu8d985#\' true \'translator# first\' true \'translator given#\' true \'translator# given\' true \'translator last#\' true \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8aau8d8b1u8d8acu8d985#\' true \'translator# last\' true \'translator surname#\' true \'translator# surname\' true \'translator link#\' true \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8aau8d8b1u8d8acu8d985#\' true \'translator# link\' true \'translator mask#\' true \'translator# mask\' true cite arxiv cite biorxiv cite citeseerx andu800 cite ssrn areu800 preprint templates that useu800 theu800 limited setu800 ofu800 parameters defined inu800 theu800 limited_basic_arguments andu800 limited_numbered_arguments tables. those lists areu800 supplemented with au800 template specific list ofu800 parameters that areu800 required byu800 theu800 particular template andu800 mayu800 beu800 exclusive tou800 oneu800 ofu800 theu800 preprint templates. some ofu800 these parameters mayu800 also beu800 available tou800 theu800 general cs1u800 2u800 templates. same conventions foru800 true false tracked nilu800 asu800 above. local preprint_arguments arxiv \'arxiv\' true cite arxiv andu800 arxiv identifiers \'class true \'eprint\' true cite arxiv andu800 arxiv identifiers biorxiv \'biorxiv\' true citeseerx \'citeseerx\' true ssrn \'ssrn\' true \'ssrn\' true \'ssrn access true cite arxiv cite biorxiv cite citeseerx andu800 cite ssrn templates areu800 preprint templates sou800 areu800 allowed only au800 limited subset ofu800 parameters allowed tou800 allu800 other cs1u800 2u800 templates. theu800 limited subset isu800 defined here. same conventions foru800 true false tracked nilu800 asu800 above. local limited_basic_arguments \'atu800\' true \'u8d8afu8d8b1\' true \'author\' true \'author first\' true \'author given\' true \'author last\' true \'author surname\' true \'author link\' true \'authorlink\' true \'author mask\' true \'authors true \'collaboration\' true \'date\' true \'dfu800\' true \'display authors true \'first\' true \'given\' true \'language\' true \'last\' true \'mode\' true \'name list style\' true \'nou800 tracking\' true \'pu800\' true \'page\' true \'u8d8b5\' true \'u8d8b5u8d981u8d8adu8d987\' true \'pages true \'postscript\' true \'ppu800\' true \'u8d8b5u8d981u8d8adu8d8a7u8d8aa\' true \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7\' true \'quotation\' true \'quote\' true \'u8d986u8d982u8d984 u8d982u8d988u8d984\' true \'u8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\' true \'refu800\' true \'u8d8b1u8d981\' true \'surname\' true \'template docu800 demo\' true \'title\' true \'trans title\' true \'vauthors true \'year\' true \'u8d8b3u8d8a7u8d984\' true local limited_numbered_arguments \'author#\' true \'author first#\' true \'author# first\' true \'author given#\' true \'author# given\' true \'author last#\' true \'author# last\' true \'author surname#\' true \'author# surname\' true \'author link#\' true \'author# link\' true \'authorlink#\' true \'author#link\' true \'author mask#\' true \'author# mask\' true \'first#\' true \'given#\' true \'last#\' true \'surname#\' true some templates have unique parameters. those templates andu800 their unique parameters areu800 listed here. keys inu800 this table areu800 theu800 template template\'su800 citationclass parameter value same conventions foru800 true false tracked nilu800 asu800 above. local unique_arguments \'audio visual\' \'transcript\' true \'transcript format\' true \'transcript urlu800\' true conference \'book title\' true \'conference\' true \'conference format\' true \'conference urlu800\' true \'event\' true episode \'airdate\' true \'airu800 date\' true \'credits true \'episode link\' true alias ofu800 title link \'network\' true \'season\' true \'series link\' true \'series nou800\' true \'series number\' true \'station\' true \'transcript\' true \'transcript format\' true \'transcripturl\' false \'transcript urlu800\' true mailinglist \'mailing list\' true mapu800 \'cartography\' true \'inset\' true \'mapu800\' true \'mapu800 format\' true \'mapu800 urlu800\' true \'mapu800 urlu800 access true \'script mapu800\' true \'sections true \'sheet\' true \'sheets true \'trans mapu800\' true newsgroup \'message idu800\' true \'newsgroup\' true report \'docket\' true serial \'airdate\' true \'airu800 date\' true \'credits true \'episode\' true cite serial only todo make available tou800 cite episode \'episode link\' true alias ofu800 title link \'network\' true \'series link\' true \'station\' true speech \'conference\' true \'conference format\' true \'conference urlu800\' true \'event\' true thesis \'degree\' true \'docket\' true gets au800 list ofu800 theu800 templates from table tu800 local function template_list_get tu800 local outu800 ; au800 table foru800 output foru800 ku800 _u800 inu800 pairs tu800 dou800 spin through theu800 table andu800 collect theu800 keys tableu82einsert outu800 ku800 addu800 each keyu800 tou800 theu800 output table endu800 return outu800; andu800 done endu800 return basic_arguments basic_arguments numbered_arguments numbered_arguments limited_basic_arguments limited_basic_arguments limited_numbered_arguments limited_numbered_arguments preprint_arguments preprint_arguments preprint_template_list template_list_get preprint_arguments make au800 template list from preprint_arguments table unique_arguments unique_arguments unique_param_template_list template_list_get unique_arguments make au800 template list from unique_arguments table ; '),
(25, 'citation cs1u800 enu800 stylesu82ecssu800', ' * protection icon theu800 following line controls theu800 page protection icon inu800 theu800 upper right corner itu800 must remain within this comment sandbox other ppu800 template * * overrides some wikis dou800 notu800 override user agent default styles foru800 html andu800 unlike enu800u82ewpu800. onu800 enu800u82ewpu800 keep these theu800 same asu800 mediawiki commonu82ecssu800 . theu800 word wrap andu800 target styles were moved here from commonu82ecssu800. onu800 enu800u82ewpu800 keep these theu800 same asu800 template citation stylesu82ecssu800 . * citeu82ecitation font style inherit; * remove italics foru800 * * break long urls etcu800. rather than overflowing boxu800 * word wrap break word; .citation qu800 quotes \'\"\' \'\"\' \"\'\" \"\'\"; * straight quote marks foru800 * * highlight linked elements such asu800 clicked references inu800 blue * .citation target * ignore theu800 linter allu800 browsers ofu800 interest implement this * background color rgba 0u800 127u800 255u800 0u800u82e133u800 ; * idu800 andu800 urlu800 access both core andu800 commonu82ecssu800 have selector .mwu800 parser output au800 href \".pdfu800\" .external foru800 pdfu800 pages. allu800 templatestyles pages areu800 hoisted tou800 .mwu800 parser output. weu800 need tou800 have specificity equal tou800 au800 href \".pdfu800\" .external foru800 locks tou800 override pdfu800 icon. that that\'su800 essentially 2u800 classes andu800 1u800 element. theu800 .idu800 lock ... selectors areu800 foru800 useu800 byu800 nonu800 citation templates like catalog lookup link which dou800 notu800 have tou800 handle pdfu800 links * .idu800 lock free au800 .citation .cs1u800 lock free au800 background linear gradient transparent transparent urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons 6u800 65u800 lock greenu82esvgu800 right 0u800u82e1emu800 center 9pxu800 nou800 repeat; .idu800 lock limited au800 .idu800 lock registration au800 .citation .cs1u800 lock limited au800 .citation .cs1u800 lock registration au800 background linear gradient transparent transparent urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons du800 d6u800 lock gray altu800 2u800u82esvgu800 right 0u800u82e1emu800 center 9pxu800 nou800 repeat; .idu800 lock subscription au800 .citation .cs1u800 lock subscription au800 background linear gradient transparent transparent urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons au800 aau800 lock redu800 altu800 2u800u82esvgu800 right 0u800u82e1emu800 center 9pxu800 nou800 repeat; * wikisource wikisource icon when chapter oru800 title isu800 wikilinked tou800 wikisource asu800 inu800 cite wikisource * .cs1u800 wsu800 icon au800 background linear gradient transparent transparent urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons 4u800 4cu800 wikisource logou82esvgu800 right 0u800u82e1emu800 center 12px nou800 repeat; * errors andu800 maintenance * .cs1u800 code * ... style override mediawiki mediawiki\'su800 cssu800 definition isu800 specified here 69cd73811f7aadd093050dbf20ed70ef0b42a713 skins 2fcommon 2fcommonelementsu82ecssu800#l199 * color inherit; background inherit; border none; padding inherit; .cs1u800 hidden error display none; color #d33u800; .cs1u800 visible error color #d33u800; .cs1u800 maint display none; color #3a3u800; margin left 0u800u82e3emu800; * small text size setu800 small text size inu800 oneu800 place. 0u800u82e95u800 here * 0u800u82e9u800 from references list isu800 0u800u82e85u800 which isu800 theu800 lower bound foru800 size foru800 accessibility. oldu800 styling foru800 this wasu800 just 0u800u82e85u800. weu800 could write theu800 rule sou800 that when this template isu800 inside references reflist only then does itu800 multiply byu800 0u800u82e95u800; else multiply byu800 0u800u82e85u800 * .cs1u800 format font size 95u800 ; * kerning * .cs1u800 kern left padding left 0u800u82e2emu800; .cs1u800 kern right padding right 0u800u82e2emu800; * selflinks u8e28093 avoid bold font style when cs1u800 2u800 template links tou800 theu800 current page * .citation .mwu800 selflink font weight inherit; ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(26, 'citation cs1u800 fau800', ' local numconv require \"module numeral converter\" .convert falocalization local dates year_date_check reformat_dates date_hyphen_to_dash functions inu800 module citation cs1u800 date_validation date_name_xlate local is_set in_array substitute error_comment set_error select_one functions inu800 module citation cs1u800 utilities add_maint_cat wrap_style safe_for_italics is_wikilink make_wikilink; local zu800 ; tables inu800 module citation cs1u800 utilities local extract_ids extract_id_access_levels build_id_list is_embargoed; functions inu800 module citation cs1u800 identifiers local make_coins_title get_coins_pages coins; functions inu800 module citation cs1u800 coins local cfgu800 ; table ofu800 configuration tables that areu800 defined inu800 module citation cs1u800 configuration local whitelist ; table ofu800 tables listing valid template parameter names; defined inu800 module citation cs1u800 whitelist delare variables here that have page wide scope that areu800 notu800 brought inu800 from other modules; thatare created here andu800 used here local added_deprecated_cat; boolean flag sou800 that theu800 category isu800 added only once local added_prop_cats ; list ofu800 property categories that have been added tou800 zu800u82eproperties_cats local added_vanc_errs; boolean flag sou800 weu800 only emit oneu800 vancouver error category local frame; holds theu800 module module\'su800 frame table locates andu800 returns theu800 first setu800 value inu800 au800 table ofu800 values where theu800 order established inu800 theu800 table left tou800 right oru800 topu800 tou800 bottom isu800 theu800 order inu800 which theu800 values areu800 evaluated. returns nilu800 ifu800 none areu800 setu800. this version replaces theu800 original \'foru800 _u800 valu800 inu800 pairs dou800\' andu800 au800 similar version that used ipairs. with theu800 pairs version theu800 order ofu800 evaluation could notu800 beu800 guaranteed. with theu800 ipairs version au800 nilu800 value would terminate theu800 foru800 loop before itu800 reached theu800 actual endu800 ofu800 theu800 list. local function first_set list count local iu800 1u800; while iu800 count dou800 loop through allu800 items inu800 list ifu800 is_set list iu800 then return list iu800 ; return theu800 first setu800 list member endu800 iu800 iu800 1u800; point tou800 next endu800 endu800 adds au800 category tou800 zu800u82eproperties_cats using names from theu800 configuration file with additional text ifu800 anyu800. foreign_lang_source andu800 foreign_lang_source_2 keys have au800 language code appended tou800 them sou800 that multiple languages mayu800 beu800 categorized butu800 multiples ofu800 theu800 same language areu800 notu800 categorized. added_prop_cats isu800 au800 table declared inu800 page scope variables above local function add_prop_cat keyu800 arguments ifu800 notu800 added_prop_cats keyu800 then added_prop_cats keyu800 true; note that weu800\'veu800 added this category keyu800 keyu800 gsub \' foreign_lang_source_ 2u800 au800 au800 au800 \' \' 1u800\' ; strip lang code from keyname tableu82einsert zu800u82eproperties_cats substitute cfgu800u82eprop_cats keyu800 arguments ; make name then addu800 tou800 table endu800 endu800 adds au800 single vancouver system error message tou800 theu800 template template\'su800 output regardless ofu800 howu800 many error actually exist. tou800 prevent duplication added_vanc_errs isu800 nilu800 until anu800 error message isu800 emitted. added_vanc_errs isu800 au800 boolean declared inu800 page scope variables above local function add_vanc_error source ifu800 notu800 added_vanc_errs then added_vanc_errs true; note that weu800\'veu800 added this category tableu82einsert zu800u82emessage_tail set_error \'vancouver\' source true ; endu800 endu800 does this thing that purports tou800 beu800 au800 uriu800 scheme seem tou800 beu800 au800 valid scheme theu800 scheme isu800 checked tou800 seeu800 ifu800 itu800 isu800 inu800 agreement with which says scheme names consist ofu800 au800 sequence ofu800 characters beginning with au800 letter andu800 followed byu800 anyu800 combination ofu800 letters digits plus \" \" period \".\" oru800 hyphen \" \" . returns true ifu800 itu800 does else false local function is_scheme scheme return scheme andu800 scheme match \' au800 au800 du800 . * \' ; true ifu800 scheme isu800 setu800 andu800 matches theu800 pattern endu800 does this thing that purports tou800 beu800 au800 domain name seem tou800 beu800 au800 valid domain name syntax defined here bnfu800 defined here single character names areu800 generally reserved; seeu800 seeu800 also single letter second level domain list ofu800 tlds rfc952 modified byu800 rfcu800 1123 requires theu800 first andu800 last character ofu800 au800 hostname tou800 beu800 au800 letter oru800 au800 digit. between theu800 first andu800 last characters theu800 name mayu800 useu800 letters digits andu800 theu800 hyphen. also allowed areu800 ipv4 addresses. ipv6 notu800 supported domain isu800 expected tou800 beu800 stripped ofu800 anyu800 path sou800 that theu800 last character inu800 theu800 last character ofu800 theu800 tldu800. tldu800 isu800 twou800 oru800 more alpha characters. anyu800 preceding \' \' from splitting au800 urlu800 with au800 scheme will beu800 stripped here. perhaps notu800 necessary butu800 retained incase itu800 isu800 necessary foru800 ipv4 dotu800 decimal. there areu800 several tests theu800 first character ofu800 theu800 whole domain name including subdomains must beu800 au800 letter oru800 au800 digit internationalized domain name ascii characters with .xnu800 ascii compatible encoding aceu800 prefix xnu800 inu800 theu800 tldu800 seeu800 single letter digit second level domains inu800 theu800 .orgu800 andu800 .cash tlds qu800 xu800 andu800 zu800 slu800 domains inu800 theu800 .comu800 tldu800 iu800 andu800 qu800 slu800 domains inu800 theu800 .netu800 tldu800 single letter slu800 domains inu800 theu800 cctlds where theu800 cctld isu800 twou800 letters twou800 character slu800 domains inu800 gtlds where theu800 gtld isu800 twou800 oru800 more letters three plus character slu800 domains inu800 gtlds where theu800 gtld isu800 twou800 oru800 more letters ipv4 dotu800 decimal address format; tldu800 notu800 allowed returns true ifu800 domain appears tou800 beu800 au800 proper name andu800 tldu800 oru800 ipv4 address else false local function is_domain_name domain ifu800 notu800 domain then return false; ifu800 notu800 setu800 abandon endu800 domain domain gsub \' \'   ; strip \' \' from domain name ifu800 present; done here sou800 weu800 only have tou800 dou800 itu800 once ifu800 notu800 domain match \' au800 du800 \' then first character must beu800 letter oru800 digit return false; endu800 dou800 most common case first ifu800 domain match \' fu800 au800 du800 au800 du800 au800 du800 au800 du800 . au800 au800 \' then three oru800 more character hostnameu82ehostname oru800 hostnameu82etldu800 return true; elseif domain match \' fu800 au800 du800 au800 du800 au800 du800 au800 du800 .xnu800 au800 du800 \' then internationalized domain name with aceu800 prefix return true; elseif domain match \' fu800 au800 du800 au800 du800 .cash \' then oneu800 character digit .cash hostname return true; elseif domain match \' fu800 au800 du800 au800 du800 .orgu800 \' then oneu800 character digit .orgu800 hostname return true; elseif domain match \' fu800 au800 qxzu800 .comu800 \' then assigned oneu800 character .comu800 hostname xu800u82ecomu800 times outu800 2015 12u800 10u800 return true; elseif domain match \' fu800 au800 iqu800 .netu800 \' then assigned oneu800 character .netu800 hostname qu800u82enetu800 registered butu800 notu800 active 2015 12u800 10u800 return true; elseif domain match \' fu800 au800 du800 au800 du800 . au800 au800 \' then oneu800 character hostname andu800 cctld 2u800 chars return true; elseif domain match \' fu800 au800 du800 au800 du800 au800 du800 . au800 au800 \' then twou800 character hostname andu800 tldu800 return true; elseif domain match \' du800 du800 du800 . du800 du800 du800 . du800 du800 du800 . du800 du800 du800 \' then ipv4 address return true; else return false; endu800 endu800 returns true ifu800 theu800 scheme andu800 domain parts ofu800 au800 urlu800 appear tou800 beu800 au800 valid urlu800; else false. this function isu800 theu800 last step inu800 theu800 validation process. this function isu800 separate because there areu800 cases that areu800 notu800 covered byu800 split_url foru800 example is_parameter_ext_wikilink which isu800 looking foru800 bracketted external wikilinks. local function is_url scheme domain ifu800 is_set scheme then ifu800 scheme isu800 setu800 check itu800 andu800 domain return is_scheme scheme andu800 is_domain_name domain ; else return is_domain_name domain ; scheme notu800 setu800 when urlu800 isu800 protocol relative endu800 endu800 split au800 urlu800 into au800 scheme authority indicator andu800 domain. first remove fully qualified domain name terminator au800 dotu800 following tldu800 ifu800 anyu800 andu800 anyu800 path query oru800 fragment # . ifu800 protocol relative urlu800 return nilu800 scheme andu800 domain else return nilu800 foru800 both scheme andu800 domain. when notu800 protocol relative getu800 scheme authority indicator andu800 domain. ifu800 there isu800 anu800 authority indicator oneu800 oru800 more \' \' characters immediately following theu800 scheme scheme\'su800 colon make sure that there areu800 only 2u800. strip offu800 anyu800 port andu800 path; local function split_url url_str local scheme authority domain; url_str url_str gsub \' au800 du800 . # .* \' \' 1u800\' ; strip fqdn terminator andu800 path query fragment # theu800 capture prevents false replacement ofu800 \' \' ifu800 url_str match \' su800*\' then ifu800 there isu800 what appears tou800 beu800 au800 protocol relative urlu800 domain url_str match \' su800* \' elseif url_str match \' su800 * su800 \' then ifu800 there isu800 what appears tou800 beu800 au800 scheme optional authority indicator andu800 domain name scheme authority domain url_str match \' su800 * su800 \' ; extract theu800 scheme authority indicator andu800 domain portions authority authority gsub \' \'   1u800 ; replace place 1u800 pair ofu800 \' \' with nothing; ifu800 is_set authority then ifu800 anything left 1u800 oru800 3u800 \' \' where authority should beu800 then return scheme; return scheme only making domain nilu800 which will cause anu800 error message endu800 domain domain gsub \' au800 du800 \' \' 1u800\' ; strip port number ifu800 present endu800 return scheme domain; endu800 checks theu800 content ofu800 title link series link author link etcu800 foru800 properly formatted content nou800 wikilinks nou800 urls link parameters areu800 tou800 hold theu800 title ofu800 au800 wikipedia article sou800 none ofu800 theu800 wpu800 titlespecialcharacters areu800 allowed # _u800 except theu800 underscore which isu800 used asu800 au800 space inu800 wiki urls andu800 # which isu800 used foru800 section links returns false when theu800 value contains anyu800 ofu800 these characters. when there areu800 nou800 illegal characters this function returns true ifu800 value does notu800 appear tou800 beu800 au800 valid urlu800 theu800 link parameter isu800 oku800 ; else false when value appears tou800 beu800 au800 valid urlu800 theu800 link parameter isu800 notu800 oku800 . local function link_param_ok value local scheme domain; ifu800 value find \' \' then ifu800 anyu800 prohibited characters return false; endu800 scheme domain split_url value ; getu800 scheme oru800 nilu800 andu800 domain oru800 nilu800 from urlu800; return notu800 is_url scheme domain ; return true ifu800 value does notu800 appear tou800 beu800 au800 valid urlu800 endu800 useu800 link_param_ok tou800 validate link value andu800 itsu800 matching value. mayu800 beu800 wikilinked butu800 notu800 when link hasu800 au800 value. this function emits anu800 error message when that condition exists local function link_title_ok link lorig title torig local orig; ifu800 is_set link then donu800\'tu800 bother ifu800 link doesn\'tu800 have au800 value ifu800 notu800 link_param_ok link then check link markup orig lorig; identify theu800 failing link parameter elseif title find \' \' then check title foru800 wikilink markup orig torig; identify theu800 failing title parameter endu800 endu800 ifu800 is_set orig then tableu82einsert zu800u82emessage_tail set_error \'bad_paramlink\' orig ; urlu800 oru800 wikilink inu800 title with title link ; endu800 endu800 determines whether au800 urlu800 string appears tou800 beu800 valid. first weu800 test foru800 space characters. ifu800 anyu800 areu800 found return false. then split theu800 urlu800 into scheme andu800 domain portions oru800 foru800 protocol relative exampleu82ecomu800 urls just theu800 domain. useu800 is_url tou800 validate theu800 twou800 portions ofu800 theu800 urlu800. ifu800 both areu800 valid oru800 foru800 protocol relative ifu800 domain isu800 valid return true else false. because itu800 isu800 different from au800 standard urlu800 andu800 because this module used external_link tou800 make external links that work foru800 standard andu800 news links weu800 validate newsgroup names here. theu800 specification foru800 au800 newsgroup name isu800 atu800 local function check_url url_str ifu800 nilu800 url_str match \" su800 \" then ifu800 there areu800 anyu800 spaces inu800 urlu800 value itu800 canu800\'tu800 beu800 au800 proper urlu800 return false; endu800 local scheme domain; scheme domain split_url url_str ; getu800 scheme oru800 nilu800 andu800 domain oru800 nilu800 from urlu800; ifu800 \'news \' scheme then special case foru800 newsgroups return domain match \' au800 du800 _u800 . au800 du800 _u800 . * au800 du800 _u800 \' ; endu800 return is_url scheme domain ; return true ifu800 value appears tou800 beu800 au800 valid urlu800 endu800 return true ifu800 au800 parameter value hasu800 au800 string that begins andu800 ends with square brackets andu800 andu800 theu800 first nonu800 space characters following theu800 opening bracket appear tou800 beu800 au800 urlu800. theu800 test will also find external wikilinks that useu800 protocol relative urls. also finds bare urls. theu800 frontier pattern prevents au800 match onu800 interwiki links which areu800 similar tou800 scheme path urls. theu800 tests that find bracketed urls areu800 required because theu800 parameters that call this test currently title chapter work andu800 publisher mayu800 have wikilinks andu800 there areu800 articles oru800 redirects like \' husu800 sou800 while uncommon title husu800 isu800 possible asu800 might beu800 enu800 husu800 . local function is_parameter_ext_wikilink value local scheme domain; ifu800 value match \' fu800 au800 su800* su800 .* \' then ifu800 extu800 wikilink with scheme andu800 domain xxxx yyyyyu82ezzzu800 scheme domain split_url value match \' fu800 au800 su800* su800 .* \' ; elseif value match \' fu800 su800 .* \' then ifu800 protocol relative extu800 wikilink yyyyyu82ezzzu800 scheme domain split_url value match \' fu800 su800 .* \' ; elseif value match \' au800 su800* su800 \' then ifu800 bare urlu800 with scheme; mayu800 have leading oru800 trailing plain text scheme domain split_url value match \' au800 su800* su800 \' ; elseif value match \' su800 \' then ifu800 protocol relative bare urlu800 yyyyyu82ezzzu800; mayu800 have leading oru800 trailing plain text scheme domain split_url value match \' su800 \' ; what isu800 left should beu800 theu800 domain else return false; didn\'tu800 find anything that isu800 obviously au800 urlu800 endu800 return is_url scheme domain ; return true ifu800 value appears tou800 beu800 au800 valid urlu800 endu800 loop through au800 list ofu800 parameters andu800 their values. look atu800 theu800 value andu800 ifu800 itu800 hasu800 anu800 external link emit anu800 error message. local function check_for_url parameter_list local error_message  ; foru800 ku800 vu800 inu800 pairs parameter_list dou800 foru800 each parameter inu800 theu800 list ifu800 is_parameter_ext_wikilink vu800 then look atu800 theu800 value; ifu800 there isu800 au800 urlu800 addu800 anu800 error message ifu800 is_set error_message then once weu800\'veu800 added theu800 first portion ofu800 theu800 error message ... error_message error_message .. \"u8d88c \"; ... addu800 au800 comma space separator endu800 error_message error_message .. \"&#124u800;\" .. ku800 .. \" \"; addu800 theu800 failed parameter endu800 endu800 ifu800 is_set error_message then done looping ifu800 there isu800 anu800 error message display itu800 tableu82einsert zu800u82emessage_tail set_error \'param_has_ext_link\' error_message true ; endu800 endu800 escape sequences foru800 content that will beu800 used foru800 urlu800 descriptions local function safe_for_url stru800 ifu800 stru800 match \" . \" nilu800 then tableu82einsert zu800u82emessage_tail set_error \'wikilink_in_url\' true ; endu800 return stru800 gsub \' nu800 \' \' \' \'&#91u800;\' \' \' \'&#93u800;\' \' nu800\' \' \' ; endu800 format anu800 external link with error checking local function external_link urlu800 label source access local error_str \"\"; local domain; local path; local base_url; ifu800 notu800 is_set label then label urlu800; ifu800 is_set source then error_str set_error \'bare_url_missing_title\' wrap_style \'parameter\' source false \" \" ; else error cfgu800u82emessages \"bare_url_no_origin\" ; endu800 endu800 ifu800 notu800 check_url urlu800 then error_str set_error \'bad_url\' wrap_style \'parameter\' source false \" \" .. error_str; endu800 domain path urlu800 match \' . au800 du800 # .* \' ; split theu800 urlu800 into scheme plus domain andu800 path ifu800 path then ifu800 there isu800 au800 path portion path path gsub \' \' \' \' \' 5bu800\' \' \' \' 5du800\' ; replace \' \' andu800 \' \' with their percent encoded values urlu800 tableu82econcat domain path ; andu800 reassemble endu800 base_url tableu82econcat \" \" urlu800 \" \" safe_for_url label \" \" ; assemble au800 wikimarkup urlu800 ifu800 is_set access then access level subscription registration limited base_url substitute cfgu800u82epresentation \'extu800 link access signal\' cfgu800u82epresentation access .class cfgu800u82epresentation access .title base_url ; addu800 theu800 appropriate icon endu800 return tableu82econcat base_url error_str ; endu800 categorize andu800 emit anu800 error message when theu800 citation contains oneu800 oru800 more deprecated parameters. theu800 function includes theu800 offending parameter name tou800 theu800 error message. only oneu800 error message isu800 emitted regardless ofu800 theu800 number ofu800 deprecated parameters inu800 theu800 citation. added_deprecated_cat isu800 au800 boolean declared inu800 page scope variables above local function deprecated_parameter name ifu800 notu800 added_deprecated_cat then added_deprecated_cat true; note that weu800\'veu800 added this category tableu82einsert zu800u82emessage_tail set_error \'deprecated_params name true ; addu800 error message endu800 endu800 apply kerning tou800 open theu800 space between theu800 quote mark provided byu800 theu800 module andu800 au800 leading oru800 trailing quote mark contained inu800 au800 title oru800 chapter parameter parameter\'su800 value. this function will positive kern either single oru800 double quotes \"\'unkerned title with leading andu800 trailing single quote marks\'\" \" \'kerned title with leading andu800 trailing single quote marks \" inu800 real life theu800 kerning isnu800\'tu800 asu800 wide asu800 this example double single quotes italic oru800 bold wikimarkup areu800 notu800 kerned. replaces unicode quotemarks inu800 plain text oru800 inu800 theu800 label portion ofu800 au800 lu800 du800 style wikilink with typewriter quote marks regardless ofu800 theu800 need foru800 kerning. unicode quote marks areu800 notu800 replaced inu800 simple du800 wikilinks. call this function foru800 chapter titles foru800 website titles etcu800; notu800 foru800 book titles. local function kern_quotes stru800 local capu800  ; local cap2  ; local wl_type label link; wl_type label link is_wikilink stru800 ; wl_type isu800 0u800 nou800 wlu800 text inu800 label variable ; 1u800 du800 ; 2u800 lu800 du800 ifu800 1u800 wl_type then du800 simple wikilink with oru800 without quote marks ifu800 mwu800u82eustringu82ematch stru800 \' \"u8e2809cu8e2809d \'u8e28098u8e28099 . \"u8e2809cu8e2809d \'u8e28098u8e28099 \' then leading andu800 trailing quote marks stru800 substitute cfgu800u82epresentation \'kern wlu800 both\' stru800 ; elseif mwu800u82eustringu82ematch stru800 \' \"u8e2809cu8e2809d \'u8e28098u8e28099 . \' then leading quote marks stru800 substitute cfgu800u82epresentation \'kern wlu800 left\' stru800 ; elseif mwu800u82eustringu82ematch stru800 \' . \"u8e2809cu8e2809d \'u8e28098u8e28099 \' then trailing quote marks stru800 substitute cfgu800u82epresentation \'kern wlu800 right\' stru800 ; endu800 else plain text oru800 lu800 du800 ; text inu800 label variable label mwu800u82eustringu82egsub label \' u8e2809cu8e2809d \' \' \"\' ; replace u8e2809cu8e2809d uu800 201c & uu800 201d with \" typewriter double quote mark label mwu800u82eustringu82egsub label \' u8e28098u8e28099 \' \'   ; replace u8e28098u8e28099 uu800 2018 & uu800 2019 with \' typewriter single quote mark capu800 cap2 mwu800u82eustringu82ematch label \" \" \' \' . \" ; match leading double oru800 single quote butu800 notu800 doubled single quotes italic markup ifu800 is_set capu800 then label substitute cfgu800u82epresentation \'kern left\' capu800 cap2 ; endu800 capu800 cap2 mwu800u82eustringu82ematch label \" . \' \" \' \" match trailing double oru800 single quote butu800 notu800 doubled single quotes italic markup ifu800 is_set capu800 then label substitute cfgu800u82epresentation \'kern right\' capu800 cap2 ; endu800 ifu800 2u800 wl_type then stru800 make_wikilink link label ; reassemble theu800 wikilink else stru800 label; endu800 endu800 return stru800; endu800 script title holds title parameters that areu800 notu800 written inu800 latin based scripts chinese japanese arabic hebrew etcu800. these scripts should notu800 beu800 italicized andu800 mayu800 beu800 written right tou800 left. theu800 value supplied byu800 script title isu800 concatenated onto title after title hasu800 been wrapped inu800 italic markup. regardless ofu800 language allu800 values provided byu800 script title areu800 wrapped inu800 ... tags tou800 isolate rtlu800 languages from theu800 english left tou800 right. script title provides au800 unique feature. theu800 value inu800 script title mayu800 beu800 prefixed with au800 twou800 character iso639 1u800 language code andu800 au800 colon script title jau800 *** *** where * represents au800 japanese character spaces between theu800 twou800 character code andu800 theu800 colon andu800 theu800 colon andu800 theu800 first script character areu800 allowed script title jau800 *** *** script title jau800 *** *** script title jau800 *** *** spaces preceding theu800 prefix areu800 allowed script title jau800 *** *** theu800 prefix isu800 checked foru800 validity. ifu800 itu800 isu800 au800 valid iso639 1u800 language code theu800 lang attribute lang \"jau800\" isu800 added tou800 theu800 tagu800 sou800 that browsers canu800 know theu800 language theu800 tagu800 contains. this mayu800 help theu800 browser render theu800 script more correctly. ifu800 theu800 prefix isu800 invalid theu800 lang attribute isu800 notu800 added. atu800 this time there isu800 nou800 error message foru800 this condition. supports script title andu800 script chapter todo error messages when prefix isu800 invalid iso639 1u800 code; when script_value hasu800 prefix butu800 nou800 script; local function format_script_value script_value local lang  ; initialize tou800 empty string local name; ifu800 script_value match \' lu800 lu800 su800* \' then ifu800 first 3u800 nonu800 space characters areu800 script language prefix lang script_value match \' lu800 lu800 su800* su800* su800u82e*\' ; getu800 theu800 language prefix oru800 nilu800 ifu800 there isu800 nou800 script ifu800 notu800 is_set lang then return  ; script_value wasu800 just theu800 prefix sou800 return empty string endu800 ifu800 weu800 getu800 this faru800 weu800 have prefix andu800 script name cfgu800u82elang_code_remap lang oru800 mwu800u82elanguageu82efetchlanguagename lang \"fau800\" ; getu800 language name sou800 that weu800 canu800 useu800 itu800 tou800 categorize ifu800 is_set name then isu800 prefix au800 proper isou800 639u800 1u800 language code script_value script_value gsub \' lu800 lu800 su800* su800*\'   ; strip prefix from script isu800 prefix oneu800 ofu800 these language codes ifu800 in_array lang cfgu800u82escript_lang_codes then add_prop_cat \'script_with_name\' name lang else add_prop_cat \'script\' endu800 lang \' lang \"\' .. lang .. \'\" \'; convert prefix into au800 lang attribute else lang  ; invalid sou800 setu800 lang tou800 empty string endu800 endu800 script_value substitute cfgu800u82epresentation \'bdiu800\' lang script_value ; isolate inu800 case script isu800 rtlu800 return script_value; endu800 initially foru800 title andu800 script title this function concatenates those twou800 parameter values after theu800 script value hasu800 been wrapped inu800 tags. local function script_concatenate title script ifu800 is_set script then script format_script_value script ; tags lang atribute categorization etcu800; returns empty string onu800 error ifu800 is_set script then title title .. \' \' .. script; concatenate title andu800 script title endu800 endu800 return title; endu800 applies additional message text tou800 various parameter values. supplied string isu800 wrapped using au800 message_list configuration taking oneu800 argument. supports lower case text foru800 citation templates. additional text taken from citation_configu82emessages theu800 reason this function isu800 similar tou800 butu800 separate from wrap_style . local function wrap_msg keyu800 stru800 lower ifu800 notu800 is_set stru800 then return \"\"; endu800 ifu800 true lower then local msgu800; msgu800 cfgu800u82emessages keyu800 lower ; setu800 theu800 message tou800 lower case before return substitute msgu800 stru800 ; including template text else return substitute cfgu800u82emessages keyu800 stru800 ; endu800 endu800 format theu800 four chapter parameters script chapter chapter trans chapter andu800 chapter urlu800 into au800 single chapter meta parameter chapter_url_source used foru800 error messages . local function format_chapter_title scriptchapter chapter transchapter chapterurl chapter_url_source no_quotes access local chapter_error  ; ifu800 notu800 is_set chapter then chapter  ; tou800 beu800 safe foru800 concatenation else ifu800 false no_quotes then chapter kern_quotes chapter ; ifu800 necessary separate chapter title title\'su800 leading andu800 trailing quote marks from module provided quote marks chapter wrap_style \'quoted title\' chapter ; endu800 endu800 chapter script_concatenate chapter scriptchapter tags lang atribute categorization etcu800; must beu800 done after title isu800 wrapped chapter numconv \'fau800\' chapter ; falocalization ifu800 is_set chapterurl then chapter external_link chapterurl chapter chapter_url_source access ; adds bare_url_missing_title error ifu800 appropriate endu800 ifu800 is_set transchapter then transchapter wrap_style \'trans quoted title\' transchapter ; ifu800 is_set chapter then chapter chapter .. \' \' .. transchapter; else here when transchapter without chapter oru800 script chapter chapter transchapter; chapter_error \' \' .. set_error \'trans_missing_title\' \'chapter\' ; endu800 endu800 ifu800 is_set chapterurl then chapter external_link chapterurl chapter chapter_url_source access ; adds bare_url_missing_title error ifu800 appropriate endu800 return chapter .. chapter_error; endu800 this function searches au800 parameter parameter\'su800 value foru800 nonprintable oru800 invisible characters. theu800 search stops atu800 theu800 first match. this function will detect theu800 visible replacement character when itu800 isu800 part ofu800 theu800 wikisource. detects butu800 ignores nowiki andu800 math stripmarkers. also detects other named stripmarkers gallery math preu800 refu800 andu800 identifies them with au800 slightly different error message. seeu800 also coins_cleanup . detects butu800 ignores theu800 character pattern that results from theu800 transclusion ofu800 \' templates. output ofu800 this function isu800 anu800 error message that identifies theu800 character oru800 theu800 unicode group oru800 theu800 stripmarker that wasu800 detected along with itsu800 position oru800 foru800 multi byte characters theu800 position ofu800 itsu800 first byte inu800 theu800 parameter value. local function has_invisible_chars param vu800 local position  ; position ofu800 invisible char oru800 starting position ofu800 stripmarker local dummy; endu800 ofu800 matching string; notu800 used butu800 required tou800 hold endu800 position when au800 capture isu800 returned local capture; used byu800 stripmarker detection tou800 hold name ofu800 theu800 stripmarker local iu800 1u800; local stripmarker apostrophe; capture stringu82ematch vu800 \' wu800 pu800 *\' ; test foru800 values that areu800 simple ascii text andu800 bypass other tests ifu800 true ifu800 capture vu800 then ifu800 same there areu800 nou800 unicode characters return; endu800 while cfgu800u82einvisible_chars iu800 dou800 local char cfgu800u82einvisible_chars iu800 1u800 theu800 character oru800 group name local pattern cfgu800u82einvisible_chars iu800 2u800 theu800 pattern used tou800 find itu800 position dummy capture mwu800u82eustringu82efind vu800 pattern seeu800 ifu800 theu800 parameter value contains characters that match theu800 pattern ifu800 position andu800 char \'zero width joiner\' then ifu800 weu800 found au800 zero width joiner character ifu800 mwu800u82eustringu82efind vu800 cfgu800u82eindic_script then itsu800 oku800 ifu800 oneu800 ofu800 theu800 indic scripts position nilu800; unset position endu800 endu800 ifu800 position then ifu800 \'nowiki\' capture oru800 \'math\' capture oru800 nowiki andu800 math stripmarkers notu800 anu800 error condition \'templatestyles capture andu800 in_array param \'idu800\' \'quote\' then templatestyles stripmarker allowed inu800 these parameters stripmarker true; setu800 au800 flag elseif true stripmarker andu800 \'delete\' char then because stripmakers begin andu800 endu800 with theu800 delete char assume that weu800\'veu800 found oneu800 endu800 ofu800 au800 stripmarker position nilu800; unset else local err_msg; ifu800 capture then err_msg capture .. \' \' .. char; else err_msg char .. \' \' .. \'character\'; endu800 tableu82einsert zu800u82emessage_tail set_error \'invisible_char\' err_msg wrap_style \'parameter\' param position true ; addu800 error message return; andu800 done with this parameter endu800 endu800 iu800 iu800 1u800; bump ouru800 index endu800 endu800 argument wrapper. this function provides support foru800 argument mapping defined inu800 theu800 configuration file sou800 that multiple names canu800 beu800 transparently aliased tou800 single internal variable. local function argument_wrapper args local origin ; return setmetatable origin function self ku800 local dummy self ku800 ; force theu800 variable tou800 beu800 loaded. return origin ku800 ; endu800 __index function tblu800 ku800 ifu800 origin ku800 nilu800 then return nilu800; endu800 local args list vu800 args cfgu800u82ealiases ku800 ; ifu800 type list \'table\' then vu800 origin ku800 select_one args list \'redundant_parameters ; ifu800 origin ku800 nilu800 then origin ku800  ; empty string notu800 nilu800 endu800 elseif list nilu800 then vu800 origin ku800 args list list; else maybe letu800 through instead ofu800 raising anu800 error vu800 origin ku800 args ku800 ku800; error cfgu800u82emessages \'unknown_argument_map\' ; endu800 empty strings notu800 nilu800; ifu800 vu800 nilu800 then vu800 cfgu800u82edefaults ku800 oru800  ; origin ku800  ; endu800 tblu800 rawset tblu800 ku800 vu800 ; return vu800; endu800 ; endu800 when date isu800 yyyy mmu800 ddu800 format wrap inu800 nowrap span yyyy mmu800 ddu800 . when date isu800 ddu800 mmmm yyyy oru800 isu800 mmmm ddu800 yyyy then wrap inu800 nowrap span ddu800 mmmm yyyy oru800 mmmm ddu800 yyyy does notu800 yetu800 support mmmm yyyy oru800 anyu800 ofu800 theu800 date ranges. local function nowrap_date date local capu800  ; local cap2  ; ifu800 date match \" du800 du800 du800 du800 du800 du800 du800 du800 \" then date substitute cfgu800u82epresentation \'nowrap1\' date ; elseif date match \" au800 su800* du800 du800 su800 du800 du800 du800 du800 \" oru800 date match \" du800 du800 su800* au800 su800 du800 du800 du800 du800 \" then capu800 cap2 stringu82ematch date \" .* su800 du800 du800 du800 du800 \" ; date substitute cfgu800u82epresentation \'nowrap2\' capu800 cap2 ; endu800 return date; endu800 this function sets default title types equivalent tou800 theu800 citation including type foru800 those templates that have defaults. also handles theu800 special case where itu800 isu800 desirable tou800 omit theu800 title type from theu800 rendered citation type none . local function set_titletype cite_class title_type ifu800 is_set title_type then ifu800 \"none\" title_type then title_type \"\"; ifu800 type none then type parameter notu800 displayed endu800 return title_type; ifu800 type hasu800 been setu800 tou800 anyu800 other value useu800 that value endu800 return cfgu800u82etitle_types cite_class oru800  ; setu800 template template\'su800 default title type; else empty string foru800 concatenation endu800 converts au800 hyphen tou800 au800 dash under certain conditions. theu800 hyphen must separate like items; unlike items areu800 returned unmodified. these forms areu800 modified letter letter au800 bu800 digit digit 4u800 5u800 digit separator digit digit separator digit 4u800u82e1u800 4u800u82e5u800 oru800 4u800 1u800 4u800 5u800 letterdigit letterdigit a1u800 a5u800 anu800 optional separator between letter andu800 digit isu800 supported u8e28093 au800u82e1u800 au800u82e5u800 oru800 au800 1u800 au800 5u800 digitletter digitletter 5au800 5du800 anu800 optional separator between letter andu800 digit isu800 supported u8e28093 5u800u82eau800 5u800u82edu800 oru800 5u800 au800 5u800 du800 anyu800 other forms areu800 returned unmodified. stru800 mayu800 beu800 au800 comma oru800 semicolon separated list local function hyphen_to_dash stru800 ifu800 notu800 is_set stru800 then return stru800; endu800 stru800 count stru800 gsub \' . \' \' 1u800\' ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 stru800 ifu800 0u800 count then nonu800 zero when markup removed; zero else return stru800; nothing tou800 dou800 weu800\'reu800 done endu800 local outu800 ; local list mwu800u82etextu82esplit stru800 \' su800* ; su800*\' ; split stru800 atu800 comma oru800 semicolon separators ifu800 there areu800 anyu800 foru800 _u800 item inu800 ipairs list dou800 foru800 each item inu800 theu800 list ifu800 mwu800u82eustringu82ematch item \' wu800* . wu800 su800* u8e28093u8e28094 su800* wu800* . wu800 \' then ifu800 au800 hyphenated range oru800 hasu800 endash oru800 emdash separators ifu800 item match \' au800 . du800 su800* su800* au800 . du800 \' oru800 letterdigit hyphen letterdigit optional separator between letter andu800 digit item match \' du800 . au800 su800* su800* du800 . au800 \' oru800 digitletter hyphen digitletter optional separator between digit andu800 letter item match \' du800 . du800 su800* su800* du800 . du800 \' oru800 digit separator digit hyphen digit separator digit item match \' du800 su800* su800* du800 \' oru800 digit hyphen digit item match \' au800 su800* su800* au800 \' then letter hyphen letter item item gsub \' wu800* . wu800 su800* su800* wu800* . wu800 \' \' 1u8e28093 2u800\' ; replace hyphen remove extraneous space characters else item mwu800u82eustringu82egsub item \' su800* u8e28093u8e28094 su800*\' \'u8e28093\' ; foru800 endash oru800 emdash separated ranges replace emu800 with enu800 remove extraneous white space endu800 endu800 item item gsub \' . \' \' 1u800\' ; remove theu800 accept this asu800 written markup tableu82einsert outu800 item ; addu800 theu800 possibly modified item tou800 theu800 output table endu800 return tableu82econcat outu800 \' \' ; concatenate theu800 output table into au800 comma separated string endu800 joins au800 sequence ofu800 strings together while checking foru800 duplicate separation characters. local function safe_join tblu800 duplicate_char local fu800 ; create au800 function table appropriate tou800 type ofu800 \'dupicate character\' ifu800 1u800 #duplicate_char then foru800 single byte ascii characters useu800 theu800 string library functions fu800u82egsub stringu82egsub fu800u82ematch stringu82ematch fu800u82esubu800 stringu82esubu800 else foru800 multi byte characters useu800 theu800 ustring library functions fu800u82egsub mwu800u82eustringu82egsub fu800u82ematch mwu800u82eustringu82ematch fu800u82esubu800 mwu800u82eustringu82esubu800 endu800 local stru800  ; theu800 output string local comp  ; what does \'comp\' mean local end_chr  ; local trim; foru800 _u800 value inu800 ipairs tblu800 dou800 ifu800 value nilu800 then value  ; endu800 ifu800 stru800   then ifu800 output string isu800 empty stru800 value; assign value tou800 itu800 first time through theu800 loop elseif value   then ifu800 value subu800 1u800 1u800 \' \' then special case ofu800 values enclosed inu800 spans andu800 other markup. comp value gsub \" bu800 \" \"\" ; remove html markup string string else comp value; endu800 typically duplicate_char isu800 sepc ifu800 fu800u82esubu800 comp 1u800 1u800 duplicate_char then isu800 first character same asu800 duplicate_char whyu800 test first character because individual string segments often always begin with terminal punct foru800 theu800 preceding segment \'first element\' .. \'sepc next element\' .. etcu800 trim false; end_chr fu800u82esubu800 stru800 1u800 1u800 ; getu800 theu800 last character ofu800 theu800 output string stru800 stru800 .. \" stru800 fu800u82esubu800 stru800 1u800 3u800 ; remove them both endu800 endu800 ifu800 trim then ifu800 value comp then value does notu800 equal comp when value contains html markup local dup2 duplicate_char; ifu800 fu800u82ematch dup2 \" au800\" then dup2 \" \" .. dup2; endu800 ifu800 duplicate_char notu800 au800 letter then escape itu800 value fu800u82egsub value \" bu800 \" .. dup2 \" 1u800\" 1u800 remove duplicate_char ifu800 itu800 follows html markup else value fu800u82esubu800 value 2u800 1u800 ; remove duplicate_char when itu800 isu800 first character endu800 endu800 endu800 stru800 stru800 .. value; addu800 itu800 tou800 theu800 output string endu800 endu800 return stru800; endu800 returns true isu800 suffix isu800 properly formed jru800 sru800 oru800 ordinal inu800 theu800 range 2u8e280939. puncutation notu800 allowed. local function is_suffix suffix ifu800 in_array suffix \'jru800\' \'sru800\' \'2ndu800\' \'3rdu800\' oru800 suffix match \' dthu800 \' then return true; endu800 return false; endu800 foru800 vancouver style author editor names areu800 supposed tou800 beu800 rendered inu800 latin read ascii characters. when au800 name uses characters that contain diacritical marks those characters areu800 tou800 converted tou800 theu800 corresponding latin character. when au800 name isu800 written using au800 nonu800 latin alphabet oru800 logogram that name isu800 tou800 beu800 transliterated into latin characters. these things areu800 notu800 currently possible inu800 this module sou800 areu800 left tou800 theu800 editor tou800 dou800. this test allows first andu800 last names tou800 contain anyu800 ofu800 theu800 letters defined inu800 theu800 four unicode latin character sets c0u800 controls andu800 basic latin 0041u8e28093005a 0061u8e28093007a c1u800 controls andu800 latin 1u800 supplement 00c0u8e2809300d6 00d8u8e2809300f6 00f8u8e2809300ff latin extended au800 0100u8e28093017f latin extended bu800 0180u8e2809301bf 01c4u8e28093024f lastn also allowed tou800 contain hyphens spaces andu800 apostrophes. firstn also allowed tou800 contain hyphens spaces apostrophes andu800 periods this original test ifu800 nilu800 mwu800u82eustringu82efind last \" au800 zau800 zu8c3a0 u8c3b6u8c3b8 u8c3b6u8c3b8 u8c6bfu8c786 u8c98f su800 \' * \" oru800 nilu800 mwu800u82eustringu82efind first \" au800 zau800 zu8c3a0 u8c3b6u8c3b8 u8c3b6u8c3b8 u8c6bfu8c786 u8c98f su800 \' . 2u800 6u800 au800 * \" then wasu800 written ouside ofu800 theu800 code editor andu800 pasted here because theu800 code editor gets confused between character insertion point andu800 cursor position. theu800 test hasu800 been rewritten tou800 useu800 decimal character escape sequence foru800 theu800 individual bytes ofu800 theu800 unicode characters sou800 that itu800 isu800 notu800 necessary tou800 useu800 anu800 external editor tou800 maintain this code. 195u800 128u800 195u800 150u800 u8e28093 u8c3a0 u8c3b6 uu800 00c0u8e28093u 00d6 u8e28093 c0u800 controls 195u800 152u800 195u800 182u800 u8e28093 u8c3b8 u8c3b6 uu800 00d8 uu800 00f6 u8e28093 c0u800 controls 195u800 184u800 198u800 191u800 u8e28093 u8c3b8 u8c6bf uu800 00f8 uu800 01bf u8e28093 c0u800 controls latin extended au800 & bu800 199u800 132u800 201u800 143u800 u8e28093 u8c786 u8c98f uu800 01c4 uu800 024f u8e28093 latin extended bu800 local function is_good_vanc_name last first local first suffix first match \' . su800* djsu800 drndth . \' oru800 first; ifu800 first hasu800 something that looks like au800 generational suffix getu800 itu800 ifu800 is_set suffix then ifu800 notu800 is_suffix suffix then add_vanc_error \'suffix\' ; return false; notu800 au800 name with anu800 appropriate suffix endu800 endu800 ifu800 nilu800 mwu800u82eustringu82efind last \" au800 zau800 zu800 195u800 128u800 195u800 150u800 195u800 152u800 195u800 182u800 195u800 184u800 198u800 191u800 199u800 132u800 201u800 143u800 su800 \' * \" oru800 nilu800 mwu800u82eustringu82efind first \" au800 zau800 zu800 195u800 128u800 195u800 150u800 195u800 152u800 195u800 182u800 195u800 184u800 198u800 191u800 199u800 132u800 201u800 143u800 su800 \' . * \" then add_vanc_error \'nonu800 latin character\' ; return false; notu800 au800 string ofu800 latin characters; vancouver requires romanization endu800; return true; endu800 attempts tou800 convert names tou800 initials inu800 support ofu800 name list format vanc. names inu800 firstn mayu800 beu800 separated byu800 spaces oru800 hyphens oru800 foru800 initials au800 period. seeu800 vancouver style requires family rank designations jru800 iiu800 iiiu800 etcu800 tou800 beu800 rendered asu800 jru800 2ndu800 3rdu800 etcu800. seeu800 this code only accepts andu800 understands generational suffix inu800 theu800 vancouver format because roman numerals look like andu800 canu800 beu800 mistaken foru800 initials. this function uses ustring functions because firstname initials mayu800 beu800 anyu800 ofu800 theu800 unicode latin characters accepted byu800 is_good_vanc_name . local function reduce_to_initials first local name suffix mwu800u82eustringu82ematch first \" uu800 djsu800 drndth \" ; ifu800 notu800 name then ifu800 notu800 initials andu800 au800 suffix name mwu800u82eustringu82ematch first \" uu800 \" ; isu800 itu800 just intials endu800 ifu800 name then ifu800 first isu800 initials with oru800 without suffix ifu800 3u800 mwu800u82eustringu82elenu800 name then ifu800 oneu800 oru800 twou800 initials ifu800 suffix then ifu800 there isu800 au800 suffix ifu800 is_suffix suffix then isu800 itu800 legitimate return first; oneu800 oru800 twou800 initials andu800 au800 valid suffix sou800 nothing tou800 dou800 else add_vanc_error \'suffix\' ; oneu800 oru800 twou800 initials with invalid suffix sou800 error message return first; andu800 return first unmolested endu800 else return first; oneu800 oru800 twou800 initials without suffix; nothing tou800 dou800 endu800 endu800 endu800 ifu800 here then name hasu800 3u800 oru800 more uppercase letters sou800 treat them asu800 au800 word local initials names ; tables tou800 hold name parts andu800 initials local iu800 1u800; counter foru800 number ofu800 initials names mwu800u82etextu82esplit first \' su800 \' ; split into au800 table ofu800 names andu800 possible suffix while names iu800 dou800 loop through theu800 table ifu800 1u800 iu800 then tableu82einsert initials mwu800u82eustringu82esubu800 names iu800 1u800 1u800 ; insert theu800 intial atu800 endu800 ofu800 initials table endu800 iu800 iu800 1u800; bump theu800 counter endu800 return tableu82econcat initials vancouver format does notu800 include spaces. endu800 formats au800 list ofu800 people eu800u82egu800. authors editors local function list_people control people etal local sepu800; local namesep; local format controlu82eformat local maximum controlu82emaximum local lastauthoramp controlu82elastauthoramp; local text ifu800 \'vanc\' format then vancouver like author editor name styling sepu800 cfgu800u82epresentation \'sep_nl_vanc\' ; name list separator between authors isu800 au800 comma namesep cfgu800u82epresentation \'sep_name_vanc\' ; last first separator isu800 au800 space else sepu800 cfgu800u82epresentation \'sep_nl\' ; name list separator between authors isu800 au800 semicolon namesep cfgu800u82epresentation \'sep_name\' ; last first separator isu800 endu800 ifu800 sepu800 subu800 1u800 1u800 \" \" then sepu800 sepu800 .. \" \" endu800 ifu800 is_set maximum andu800 maximum 1u800 then return \"\" 0u800; endu800 returned 0u800 isu800 foru800 editorcount; notu800 used foru800 authors foru800 iu800 person inu800 ipairs people dou800 ifu800 is_set personu82elast then local mask personu82emask local oneu800 local sep_one sepu800; ifu800 is_set maximum andu800 iu800 maximum then etal true; break; elseif mask nilu800 then local nu800 tonumber mask ifu800 nu800 nilu800 then oneu800 stringu82erepu800 \"&mdash;\" nu800 else oneu800 mask; sep_one \" \"; endu800 else oneu800 personu82elast local first personu82efirst ifu800 is_set first then ifu800 \"vanc\" format then ifu800 vancouver format oneu800 oneu800 gsub \' .\'   ; remove periods from surnames ifu800 notu800 personu82ecorporate andu800 is_good_vanc_name oneu800 first then andu800 name isu800 allu800 latin characters; corporate authors notu800 tested first reduce_to_initials first attempt tou800 convert first name su800 tou800 initials endu800 endu800 oneu800 oneu800 .. namesep .. first; endu800 ifu800 is_set personu82elink andu800 personu82elink controlu82epage_name then oneu800 make_wikilink personu82elink oneu800 ; link author editor ifu800 this page isu800 notu800 theu800 author author\'su800 editor editor\'su800 page endu800 endu800 tableu82einsert text oneu800 tableu82einsert text sep_one endu800 endu800 local count #text 2u800; number ofu800 names number ofu800 separators divided byu800 2u800 ifu800 count 0u800 then ifu800 count 1u800 andu800 is_set lastauthoramp andu800 notu800 etal then text #text 2u800 \" u8d988 \"; replace last separator with ampersand text endu800 text #text nilu800; erase theu800 last separator endu800 local result tableu82econcat text construct list ifu800 etal andu800 is_set result then etal mayu800 beu800 setu800 byu800 display authors etal butu800 weu800 might notu800 have au800 last first list result result .. sepu800 .. \' \' .. cfgu800u82emessages \'etu800 alu800\' ; weu800\'veu800 gou800 au800 last first list andu800 etal sou800 addu800 etu800 alu800. endu800 return result count endu800 generates au800 citeref anchor idu800 ifu800 weu800 have atu800 least oneu800 name oru800 au800 date. otherwise returns anu800 empty string. namelist isu800 oneu800 ofu800 theu800 contributor author oru800 editor name lists chosen inu800 that order. year isu800 year oru800 anchor_year. local function anchor_id namelist year local names ; au800 table foru800 theu800 oneu800 tou800 four names andu800 year foru800 iu800 vu800 inu800 ipairs namelist dou800 loop through theu800 list andu800 take upu800 tou800 theu800 first four last names names iu800 vu800u82elast ifu800 iu800 4u800 then break endu800 ifu800 four then done endu800 ifu800 year nilu800 then year numconv \'enu800\' year ; endu800 tableu82einsert names year ; addu800 theu800 year atu800 theu800 endu800 ifu800 available local idu800 tableu82econcat names ; concatenate names andu800 year foru800 citeref idu800 ifu800 is_set idu800 then ifu800 concatenation isu800 notu800 anu800 empty string return \"citeref\" .. idu800; addu800 theu800 citeref portion else return  ; return anu800 empty string; nou800 reason tou800 include citeref idu800 inu800 this citation endu800 endu800 evaluates theu800 content ofu800 author andu800 editor name parameters foru800 variations onu800 theu800 theme ofu800 etu800 alu800. ifu800 found theu800 etu800 alu800. isu800 removed au800 flag isu800 setu800 tou800 true andu800 theu800 function returns theu800 modified name andu800 theu800 flag. this function never sets theu800 flag tou800 false butu800 returns itu800 itu800\'su800 previous state because itu800 mayu800 have been setu800 byu800 previous passes through this function oru800 byu800 theu800 parameters display authors etal oru800 display editors etal local function name_has_etal name etal nocat ifu800 is_set name then name canu800 beu800 nilu800 inu800 which case just return local etal_pattern \" ; * \"\' * fu800 au800 eeu800 ttu800 * aau800 llu800 . \"\' * \" variations onu800 theu800 \'etu800 alu800\' theme local others_pattern \" ; * fu800 au800 andu800 oou800 thers\"; andu800 alternate tou800 etu800 alu800. ifu800 name match etal_pattern then variants onu800 etu800 alu800. name name gsub etal_pattern   ; ifu800 found remove etal true; setu800 flag mayu800 have been setu800 previously here oru800 byu800 display authors etal ifu800 notu800 nocat then nou800 categorization foru800 vauthors add_maint_cat \'etal\' ; andu800 addu800 au800 category ifu800 notu800 already added endu800 elseif name match others_pattern then ifu800 notu800 \'etu800 alu800.\' then \'andu800 others name name gsub others_pattern   ; ifu800 found remove etal true; setu800 flag mayu800 have been setu800 previously here oru800 byu800 display authors etal ifu800 notu800 nocat then nou800 categorization foru800 vauthors add_maint_cat \'etal\' ; andu800 addu800 au800 category ifu800 notu800 already added endu800 endu800 endu800 return name etal; endu800 evaluates theu800 content ofu800 author andu800 editor parameters foru800 extranious editor annotations edu800 edu800. edsu800 edu800. etcu800. these annotation dou800 notu800 belong inu800 author parameters andu800 areu800 redundant inu800 editor parameters. ifu800 found theu800 function adds theu800 editor markup maintenance category. local function name_has_ed_markup name list_name local _u800 pattern; local patterns these patterns match annotations atu800 endu800 ofu800 name \' fu800 su800* eeu800 ddu800 ssu800 . su800* \' edu800 oru800 edsu800 leading \' \' case insensitive \'edu800\' optional \'su800 \'.\' andu800 oru800 \' \' \' . su800 fu800 eu800 edsu800 . \' edu800 oru800 edsu800 without \' \'oru800 \' \'; case sensitive edu800 could beu800 initials edu800 could beu800 name \' fu800 su800* eeu800 ddu800 iiu800 ttu800 oou800 rru800 ssu800 . su800* \' editor oru800 editors leading \' \' case insensitive optional \'.\' andu800 oru800 \' \' \' . su800 fu800 eeu800 eeu800 ddu800 iiu800 ttu800 oou800 rru800 ssu800 . \' editor oru800 editors without \' \'oru800 \' \'; case insensitive these patterns match annotations atu800 beginning ofu800 name \' edsu800 . ; \' edu800. oru800 edsu800. lower case only optional \'su800 requires \'.\' \' su800* eeu800 ddu800 ssu800 . su800* \' edu800 oru800 edsu800 also sqare brackets case insensitive optional \'su800 \'.\' \' su800* eeu800 ddu800 iiu800 ttu800 oou800 rru800 ssu800 au800\' editor oru800 editors also squ800 brackets case insensitive optional brackets \'su800 \' su800* eeu800 ddu800 iiu800 ttu800 eeu800 ddu800 au800\' edited also squ800 brackets case insensitive optional brackets ifu800 is_set name then foru800 _u800 pattern inu800 ipairs patterns dou800 spin through patterns table andu800 ifu800 name match pattern then add_maint_cat \'extra_text_names cfgu800u82especial_case_translation list_name ; addu800 au800 maint catu800 foru800 this template break; endu800 endu800 endu800 return name; andu800 done endu800 evaluates theu800 content ofu800 author andu800 editor surnames only parameters foru800 multiple names. multiple names areu800 indicated ifu800 there isu800 more than oneu800 comma andu800 oru800 semicolon. ifu800 found theu800 function adds theu800 multiple name author oru800 editor maintenance category. local function name_has_mult_names name list_name local count _u800; ifu800 is_set name then _u800 count name gsub \' ; \'   ; count theu800 number ofu800 separator like characters ifu800 1u800 this function calls various name checking functions used tou800 validate theu800 content ofu800 theu800 various name holding parameters. local function name_checks last first list_name ifu800 is_set last then ifu800 last match \' .* \' then ifu800 wrapped inu800 doubled parentheses accept asu800 written last last match \' .* \' ; strip parens else last name_has_mult_names last list_name ; check foru800 multiple names inu800 theu800 parameter last only last name_has_ed_markup last list_name ; check foru800 extraneous \'editor\' annotation endu800 endu800 ifu800 is_set first then ifu800 first match \' .* \' then ifu800 wrapped inu800 doubled parentheses accept asu800 written first first match \' .* \' ; strip parens else first name_has_ed_markup first list_name ; check foru800 extraneous \'editor\' annotation endu800 endu800 return last first; done endu800 gets name list from theu800 input arguments searches through args inu800 sequential order tou800 find lastn andu800 firstn parameters oru800 their aliases andu800 their matching link andu800 mask parameters. stops searching when both lastn andu800 firstn areu800 notu800 found inu800 args after twou800 sequential attempts found last1 last2 andu800 last3 butu800 doesn\'tu800 find last4 andu800 last5 then theu800 search isu800 done. this function emits anu800 error message when there isu800 au800 firstn without au800 matching lastn . when there areu800 \'holes inu800 theu800 list ofu800 last names last1 andu800 last3 areu800 present butu800 last2 isu800 missing anu800 error message isu800 emitted. lastn isu800 notu800 required tou800 have au800 matching firstn . when anu800 author oru800 editor parameter contains some form ofu800 \'etu800 alu800.\' theu800 \'etu800 alu800.\' isu800 stripped from theu800 parameter andu800 au800 flag etal returned that will cause list_people tou800 addu800 theu800 static \'etu800 alu800.\' text from module citation cs1u800 configuration. this keeps \'etu800 alu800.\' outu800 ofu800 theu800 template template\'su800 metadata. when this occurs theu800 page isu800 added tou800 au800 maintenance category. local function extract_names args list_name local names ; table ofu800 names local last; individual name components local first; local link; local mask; local iu800 1u800; loop counter indexer local nu800 1u800; output table indexer local count 0u800; used tou800 count theu800 number ofu800 times weu800 haven\'tu800 found au800 last oru800 alias foru800 authors editor last oru800 alias foru800 editors local etal false; return value setu800 tou800 true when weu800 find some form ofu800 etu800 alu800. inu800 anu800 author parameter local err_msg_list_name list_name match \" wu800 list\" .. \'su800 list\'; modify authorlist oru800 editorlist foru800 useu800 inu800 error messages ifu800 necessary while true dou800 last select_one args cfgu800u82ealiases list_name .. \' last\' \'redundant_parameters iu800 ; search through args foru800 name components beginning atu800 1u800 first select_one args cfgu800u82ealiases list_name .. \' first\' \'redundant_parameters iu800 ; link select_one args cfgu800u82ealiases list_name .. \' link\' \'redundant_parameters iu800 ; mask select_one args cfgu800u82ealiases list_name .. \' mask\' \'redundant_parameters iu800 ; last etal name_has_etal last etal false ; find andu800 remove variations onu800 etu800 alu800. first etal name_has_etal first etal false ; find andu800 remove variations onu800 etu800 alu800. last first name_checks last first list_name ; multiple names extraneous annotation etcu800 checks ifu800 first andu800 notu800 last then ifu800 there isu800 au800 firstn without au800 matching lastn tableu82einsert zu800u82emessage_tail set_error \'first_missing_last\' err_msg_list_name iu800 true ; addu800 this error message elseif notu800 first andu800 notu800 last then ifu800 both firstn andu800 lastn aren\'tu800 found areu800 weu800 done count count 1u800; number ofu800 times weu800 haven\'tu800 found last andu800 first ifu800 2u800 count then twou800 missing names andu800 weu800 give upu800 break; normal exit oru800 there isu800 au800 twou800 name hole inu800 theu800 list; canu800\'tu800 tell which endu800 else weu800 have last with oru800 without au800 first link_title_ok link list_name match \" wu800 list\" lower .. \' link\' .. iu800 last list_name match \" wu800 list\" lower .. \' last\' .. iu800 ; check foru800 improper wikimarkup names nu800 last last first first link link mask mask corporate false ; addu800 this name tou800 ouru800 names list corporate foru800 vauthors only nu800 nu800 1u800; point tou800 next location inu800 theu800 names table ifu800 1u800 count then ifu800 theu800 previous name wasu800 missing tableu82einsert zu800u82emessage_tail set_error \'missing_name\' err_msg_list_name iu800 1u800 true ; addu800 this error message endu800 count 0u800; reset theu800 counter weu800\'reu800 looking foru800 twou800 consecutive missing names endu800 iu800 iu800 1u800; point tou800 next args location endu800 return names etal; allu800 done return ouru800 list ofu800 names endu800 validates language names provided inu800 language parameter ifu800 notu800 anu800 iso639 1u800 oru800 639u800 2u800 code. returns theu800 language name andu800 associated twou800 oru800 three character code. because case ofu800 theu800 source mayu800 beu800 incorrect oru800 different from theu800 case that wikimedia uses theu800 name comparisons areu800 done inu800 lower case andu800 when au800 match isu800 found theu800 wikimedia version assumed tou800 beu800 correct isu800 returned along with theu800 code. when there isu800 nou800 match weu800 return theu800 original language name string. mwu800u82elanguageu82efetchlanguagenames \'allu800\' returns au800 list ofu800 languages that inu800 some cases mayu800 include extensions. foru800 example code \'cbku800 zamu800\' andu800 itsu800 associated name \'chavacano deu800 zamboanga\' mediawiki does notu800 support code \'cbku800\' oru800 name \'chavacano\'. most allu800 ofu800 these languages areu800 notu800 used au800 \'language\' codes peru800 seu800 rather they areu800 used asu800 subu800 domain names cbku800 zamu800u82ewikipediau82eorgu800. these names canu800 beu800 found foru800 theu800 time being atu800 names butu800 that areu800 included inu800 theu800 list will beu800 found ifu800 that name isu800 provided inu800 theu800 language parameter. foru800 example ifu800 language chavacano deu800 zamboanga that name will beu800 found with theu800 associated code \'cbku800 zamu800\'. when names areu800 found andu800 theu800 associated code isu800 notu800 twou800 oru800 three characters this function returns only theu800 wikimedia language name. adapted from code taken from module check isou800 639u800 1u800. local function get_iso639_code lang this_wiki_code ifu800 cfgu800u82elang_name_remap lang lower then ifu800 there isu800 au800 remapped name because mediawiki uses something that weu800 donu800\'tu800 think isu800 correct return cfgu800u82elang_name_remap lang lower 1u800 cfgu800u82elang_name_remap lang lower 2u800 ; foru800 this language \'name\' return au800 possibly newu800 name andu800 appropriate code endu800 local languages mwu800u82elanguageu82efetchlanguagenames this_wiki_code \'allu800\' getu800 au800 list ofu800 language names known tou800 wikimedia \'allu800\' isu800 required foru800 north ndebele south ndebele andu800 ojibwa local langlc mwu800u82eustringu82elower lang ; lower case version foru800 comparisons foru800 code name inu800 pairs languages dou800 scan theu800 list tou800 seeu800 ifu800 weu800 canu800 find ouru800 language ifu800 langlc mwu800u82eustringu82elower name then ifu800 2u800 code lenu800 andu800 3u800 code lenu800 then twou800 oru800 three character codes only; extensions notu800 supported return name; sou800 return theu800 name butu800 notu800 theu800 code endu800 return name code; found itu800 return name tou800 ensure proper capitalization andu800 theu800 theu800 code endu800 endu800 return lang; notu800 valid language; return language inu800 original case andu800 nilu800 foru800 theu800 code endu800 gets language name from au800 provided twou800 oru800 three character isou800 639u800 code. ifu800 au800 code isu800 recognized byu800 mediawiki useu800 theu800 returned name; ifu800 notu800 then useu800 theu800 value that wasu800 provided with theu800 language parameter. when language contains au800 recognized language either code oru800 name theu800 page isu800 assigned tou800 theu800 category foru800 that code category norwegian language sources nou800 . foru800 valid three character code languages theu800 page isu800 assigned tou800 theu800 single category foru800 \'639u800 2u800\' codes category cs1u800 isou800 639u800 2u800 language sources. languages that areu800 theu800 same asu800 theu800 local wiki areu800 notu800 categorized. mediawiki does notu800 recognize three character equivalents ofu800 twou800 character codes code \'aru800\' isu800 recognized bitu800 code \'arau800\' isu800 notu800. this function supports multiple languages inu800 theu800 form language nbu800 french thu800 where theu800 language names oru800 codes areu800 separated from each other byu800 commas. local function language_parameter lang local code; theu800 twou800 oru800 three character language code local name; theu800 language name local language_list ; table ofu800 language names tou800 beu800 rendered local names_table ; table made from theu800 value assigned tou800 language local this_wiki mwu800u82egetcontentlanguage ; getu800 au800 language object foru800 this wiki local this_wiki_code this_wiki getcode getu800 this wiki wiki\'su800 language code local this_wiki_name mwu800u82elanguageu82efetchlanguagename this_wiki_code this_wiki_code ; getu800 this wiki wiki\'su800 language name names_table mwu800u82etextu82esplit lang \' su800* su800*\' ; names should beu800 au800 comma separated list foru800 _u800 lang inu800 ipairs names_table dou800 reuse lang ifu800 lang match \' au800 au800 \' then strip ietf language tags from code; todo isu800 there au800 need tou800 support 3u800 char with tagu800 lang lang match \' au800 au800 \' keep only 639u800 1u800 code portion tou800 lang; todo dou800 something with 3166 alpha 2u800 country code endu800 ifu800 2u800 lang lenu800 oru800 3u800 lang lenu800 then ifu800 twou800 oru800 three character code name mwu800u82elanguageu82efetchlanguagename lang lower this_wiki_code ; getu800 language name ifu800 language isu800 au800 proper code ifu800 notu800 is_set name then name cfgu800u82elang_code_remap lang ; notu800 supported byu800 mediawiki; isu800 itu800 inu800 remap endu800 endu800 ifu800 is_set name then ifu800 language specified au800 valid code code lang lower ; save itu800 else name code get_iso639_code lang this_wiki_code ; attempt tou800 getu800 code from name assign name here sou800 that weu800 areu800 sure ofu800 proper capitalization endu800 ifu800 is_set code then only 2u800 oru800 3u800 character codes name cfgu800u82elang_code_remap code oru800 name; override wikimedia when they misuse language codes names ifu800 this_wiki_code code then when theu800 language isu800 notu800 theu800 same asu800 this wiki wiki\'su800 language ifu800 2u800 code lenu800 then andu800 isu800 au800 twou800 character code add_prop_cat \'foreign_lang_source\' .. code name code categorize itu800 else oru800 isu800 au800 recognized language butu800 hasu800 au800 three character code add_prop_cat \'foreign_lang_source_2\' .. code code categorize itu800 differently todo support mutliple three character code categories peru800 cs1u800 2u800 template endu800 endu800 else add_maint_cat \'unknown_lang\' ; addu800 maint category ifu800 notu800 already added endu800 tableu82einsert language_list name ; name  ; sou800 weu800 canu800 reuse itu800 endu800 code #language_list reuse code asu800 number ofu800 languages inu800 theu800 list ifu800 2u800 code then name tableu82econcat language_list \' u8d988 \' insert \' andu800 \' between twou800 language names elseif 2u800 \' name tableu82econcat language_list \'u8d88c \' andu800 concatenate with \' \' separators endu800 ifu800 this_wiki_name name then return  ; ifu800 oneu800 language andu800 that language isu800 this wiki wiki\'su800 return anu800 empty string nou800 annotation endu800 return \" \" .. wrap_msg \'language\' name ; otherwise wrap with \' inu800 ... \' todo should only return blank oru800 name rather than full list sou800 weu800 canu800 clean upu800 theu800 bunched parenthetical elements language type format endu800 setu800 style settings foru800 cs1u800 citation templates. returns separator andu800 postscript settings atu800 enu800u82ewiki foru800 cs1u800 psu800 gets \'.\' sepu800 gets \'.\' local function set_cs1_style psu800 ifu800 notu800 is_set psu800 then unless explicitely setu800 tou800 something psu800 cfgu800u82epresentation \'ps_cs1\' ; terminate theu800 rendered citation endu800 return cfgu800u82epresentation \'sep_cs1\' psu800; element separator endu800 setu800 style settings foru800 cs2u800 citation templates. returns separator postscript refu800 settings atu800 enu800u82ewiki foru800 cs2u800 psu800 gets   empty string nou800 terminal punctuation sepu800 gets \' \' local function set_cs2_style psu800 refu800 ifu800 notu800 is_set psu800 then ifu800 postscript hasu800 notu800 been setu800 setu800 cs2u800 default psu800 cfgu800u82epresentation \'ps_cs2\' ; terminate theu800 rendered citation endu800 ifu800 notu800 is_set refu800 then ifu800 refu800 isu800 notu800 setu800 refu800 \"harv\"; setu800 default refu800 harv endu800 return cfgu800u82epresentation \'sep_cs2\' psu800 refu800; element separator endu800 when mode isu800 notu800 setu800 oru800 when itsu800 value isu800 invalid useu800 configu82ecitationclass andu800 parameter values tou800 establish rendered style. local function get_settings_from_cite_class psu800 refu800 cite_class local sepu800; ifu800 cite_class \"citation\" then foru800 citation templates cs2u800 sepu800 psu800 refu800 set_cs2_style psu800 refu800 ; else notu800 au800 citation template sou800 cs1u800 sepu800 psu800 set_cs1_style psu800 ; endu800 return sepu800 psu800 refu800 return them allu800 endu800 establish basic style settings tou800 beu800 used when rendering theu800 citation. uses mode ifu800 setu800 andu800 valid oru800 uses configu82ecitationclass from theu800 template template\'su800 #invoke tou800 establish style. local function set_style mode psu800 refu800 cite_class local sepu800; ifu800 \'cs2u800\' mode then ifu800 this template isu800 tou800 beu800 rendered inu800 cs2u800 citation style sepu800 psu800 refu800 set_cs2_style psu800 refu800 ; elseif \'cs1u800\' mode then ifu800 this template isu800 tou800 beu800 rendered inu800 cs1u800 cite xxxu800 style sepu800 psu800 set_cs1_style psu800 ; else anything butu800 cs1u800 oru800 cs2u800 sepu800 psu800 refu800 get_settings_from_cite_class psu800 refu800 cite_class ; getu800 settings based onu800 theu800 template template\'su800 citationclass endu800 ifu800 \'none\' psu800 lower then ifu800 assigned value isu800 \'none\' then psu800  ; setu800 tou800 empty string endu800 return sepu800 psu800 refu800 endu800 determines ifu800 au800 urlu800 hasu800 theu800 file extension that isu800 oneu800 ofu800 theu800 pdfu800 file extensions used byu800 mediawiki commonu82ecssu800 when applying theu800 pdfu800 icon tou800 external links. returns true ifu800 file extension isu800 oneu800 ofu800 theu800 recognized extensions else false local function is_pdf urlu800 return urlu800 match \' .pdfu800 \' oru800 urlu800 match \' .pdfu800 \' oru800 urlu800 match \' .pdfu800 # \' oru800 urlu800 match \' .pdfu800 # \' ; endu800 applies cssu800 style tou800 format chapter format etcu800. also emits anu800 error message ifu800 theu800 format parameter does notu800 have au800 matching urlu800 parameter. ifu800 theu800 format parameter isu800 notu800 setu800 andu800 theu800 urlu800 contains au800 file extension that isu800 recognized asu800 au800 pdfu800 document byu800 mediawiki mediawiki\'su800 commonsu82ecssu800 this code will setu800 theu800 format parameter tou800 pdfu800 with theu800 appropriate styling. local function style_format format urlu800 fmt_param url_param ifu800 is_set format then format wrap_style \'format\' format ; addu800 leading space parentheses resize ifu800 notu800 is_set urlu800 then format format .. set_error \'format_missing_url\' fmt_param url_param ; addu800 anu800 error message endu800 elseif is_pdf urlu800 then format isu800 notu800 setu800 sou800 ifu800 urlu800 isu800 au800 pdfu800 file then format wrap_style \'format\' \'pdfu800\' ; setu800 format tou800 pdfu800 else format  ; empty string foru800 concatenation endu800 return format; endu800 returns au800 number that defines theu800 number ofu800 names displayed foru800 author andu800 editor name lists andu800 au800 boolean flag tou800 indicate when etu800 alu800. should beu800 appended tou800 theu800 name list. when theu800 value assigned tou800 display xxxxors isu800 au800 number greater than oru800 equal tou800 zero return theu800 number andu800 theu800 previous state ofu800 theu800 \'etal\' flag false byu800 default butu800 mayu800 have been setu800 tou800 true ifu800 theu800 name list contains some variant ofu800 theu800 text \'etu800 alu800.\' . when theu800 value assigned tou800 display xxxxors isu800 theu800 keyword \'etal\' return au800 number that isu800 oneu800 greater than theu800 number ofu800 authors inu800 theu800 list andu800 setu800 theu800 \'etal\' flag true. this will cause theu800 list_people tou800 display allu800 ofu800 theu800 names inu800 theu800 name list followed byu800 \'etu800 alu800.\' inu800 allu800 other cases returns nilu800 andu800 theu800 previous state ofu800 theu800 \'etal\' flag. inputs maxu800 au800 \'displayauthors oru800 au800 \'displayeditors ; au800 number oru800 some flavor ofu800 etal count #au800 oru800 #eu800 list_name \'authors oru800 \'editors etal author_etal oru800 editor_etal local function get_display_authors_editors maxu800 count list_name etal ifu800 is_set maxu800 then maxu800 numconv \'enu800\' maxu800 ; ifu800 \'etal\' maxu800 lower gsub \" \' . \"   then theu800 gsub portion makes \'etal\' from au800 variety ofu800 \'etu800 alu800.\' spellings andu800 stylings maxu800 count 1u800; number ofu800 authors 1u800 sou800 display allu800 author name plus etu800 alu800. etal true; overrides value setu800 byu800 extract_names elseif maxu800 match \' du800 \' then ifu800 isu800 au800 string ofu800 numbers maxu800 tonumber maxu800 ; make itu800 au800 number ifu800 maxu800 count then ifu800 display xxxxors value greater than oru800 equal tou800 number ofu800 authors editors add_maint_cat \'disp_auth_ed\' cfgu800u82especial_case_translation list_name ; endu800 else notu800 au800 valid keyword oru800 number tableu82einsert zu800u82emessage_tail set_error \'invalid_param_val\' \'display \' .. list_name maxu800 true ; addu800 error message maxu800 nilu800; unset; asu800 ifu800 display xxxxors hadu800 notu800 been setu800 endu800 endu800 return maxu800 etal; endu800 adds page tou800 category cs1u800 maint extra text ifu800 page oru800 pages hasu800 what appears tou800 beu800 some form ofu800 pu800. oru800 ppu800. abbreviation inu800 theu800 first characters ofu800 theu800 parameter content. check page andu800 pages foru800 extraneous pu800 pu800. ppu800 andu800 ppu800. atu800 start ofu800 parameter value good pattern \' pu800 .pu800 lu800 \' matches when page su800 begins pxu800 oru800 pu800# butu800 notu800 pxu800 where xu800 andu800 xu800 areu800 letters andu800 # isu800 au800 dgiit badu800 pattern \' ppu800 ppu800 \' matches matches when page su800 begins ppu800 oru800 ppu800 oru800 ppu800 oru800 ppu800 local function extra_text_in_page_check page local good_pattern \' pu800 .ppu800 \'; oku800 tou800 begin with uppercase pu800 p7u800 pgu800 7u800 ofu800 section pu800 butu800 notu800 p123 page 123u800 todo addu800 ggu800 foru800 pgu800 oru800 pgu800 local bad_pattern \' ppu800 ppu800 . du800 \'; ifu800 notu800 page match good_pattern andu800 page match bad_pattern oru800 page match \' ppu800 ages \' then add_maint_cat \'extra_text\' ; endu800 local bad_pattern2 \'&#u8dbb8u8dbb2u8dbb0u8dbb6;\'; falocalization ifu800 page match bad_pattern2 then add_maint_cat \'extra_text_date\' ; endu800 endu800 split apart au800 vauthors oru800 veditors parameter. this function allows foru800 corporate names wrapped inu800 doubled parentheses tou800 also have commas; inu800 theu800 oldu800 version ofu800 theu800 code theu800 doubled parnetheses were included inu800 theu800 rendered citation andu800 inu800 theu800 metadata. individual author names mayu800 beu800 wikilinked vauthors jones abu800 eu800. bu800. white white ebu800 black brown andu800 cou800. local function get_v_name_table vparam output_table output_link_table local name_table mwu800u82etextu82esplit vparam \" su800* su800*\" ; names areu800 separated byu800 commas local wl_type label link; wl_type notu800 used here; just au800 place holder local iu800 1u800; while name_table iu800 dou800 ifu800 name_table iu800 match \' .* \' then first segment ofu800 corporate with oneu800 oru800 more commas; this segment hasu800 theu800 opening doubled parens local name name_table iu800 ; iu800 iu800 1u800; bump indexer tou800 next segment while name_table iu800 dou800 name name .. \' \' .. name_table iu800 ; concatenate with previous segments ifu800 name_table iu800 match \' .* \' then ifu800 this table member hasu800 theu800 closing doubled parens break; andu800 done reassembling sou800 endu800 iu800 iu800 1u800; bump indexer endu800 tableu82einsert output_table name ; andu800 addu800 corporate name tou800 theu800 output table tableu82einsert output_link_table   ; nou800 wikilink else wl_type label link is_wikilink name_table iu800 ; wl_type isu800 0u800 nou800 wlu800 text inu800 label variable ; 1u800 du800 ; 2u800 lu800 du800 tableu82einsert output_table label ; addu800 this name ifu800 1u800 wl_type then tableu82einsert output_link_table label ; simple wikilink du800 else tableu82einsert output_link_table link ; nou800 wikilink oru800 lu800 du800 ; addu800 this link ifu800 there isu800 oneu800 else empty string endu800 endu800 iu800 iu800 1u800; endu800 return output_table; endu800 this function extracts author editor names from vauthors oru800 veditors andu800 finds matching xxxxor maskn andu800 xxxxor linkn inu800 args. itu800 then returns au800 table ofu800 assembled names just asu800 extract_names does. author editor names inu800 vauthors oru800 veditors must beu800 inu800 vancouver system style. corporate oru800 institutional names mayu800 sometimes beu800 required andu800 because such names will often fail theu800 is_good_vanc_name andu800 other format compliance tests areu800 wrapped inu800 doubled paranethese corporate name tou800 suppress theu800 format tests. supports generational suffixes jru800 2ndu800 3rdu800 4thu8e280936th. this function sets theu800 vancouver error when au800 reqired comma isu800 missing andu800 when there isu800 au800 space between anu800 author author\'su800 initials. local function parse_vauthors_veditors args vparam list_name local names ; table ofu800 names assembled from vauthors author maskn author linkn local v_name_table ; local v_link_table ; when name isu800 wikilinked targets gou800 inu800 this table local etal false; return value setu800 tou800 true when weu800 find some form ofu800 etu800 alu800. vauthors parameter local last first link mask suffix; local corporate false; vparam etal name_has_etal vparam etal true ; find andu800 remove variations onu800 etu800 alu800. dou800 notu800 categorize dou800 itu800 here because etu800 alu800. might have au800 period v_name_table get_v_name_table vparam v_name_table v_link_table ; names areu800 separated byu800 commas foru800 iu800 v_name inu800 ipairs v_name_table dou800 ifu800 v_name match \' . \' then corporate authors areu800 wrapped inu800 doubled parentheses tou800 supress vanc formatting andu800 error detection first  ; setu800 tou800 empty string foru800 concatenation andu800 because itu800 mayu800 have been setu800 foru800 previous author editor last v_name match \' . \' remove doubled parntheses corporate true; flag used inu800 list_people elseif stringu82efind v_name \" su800\" then ifu800 v_name find \' ; . \' then look foru800 commonly occurring punctuation characters; add_vanc_error \'punctuation\' ; endu800 local lastfirsttable lastfirsttable mwu800u82etextu82esplit v_name \" su800\" first tableu82eremove lastfirsttable ; removes andu800 returns value ofu800 last element inu800 table which should beu800 author intials ifu800 is_suffix first then ifu800 au800 valid suffix suffix first save itu800 asu800 au800 suffix andu800 first tableu82eremove lastfirsttable ; getu800 what should beu800 theu800 initials from theu800 table endu800 nou800 suffix error message here because letter combination mayu800 beu800 result ofu800 romanization; check foru800 digits last tableu82econcat lastfirsttable \" \" returns au800 string that isu800 theu800 concatenation ofu800 allu800 other names that areu800 notu800 initials ifu800 mwu800u82eustringu82ematch last \' au800 su800 uu800 su800 au800 \' then add_vanc_error \'missing comma\' ; matches last iiu800 last; theu800 case when au800 comma isu800 missing endu800 ifu800 mwu800u82eustringu82ematch v_name \' uu800 uu800 \' then this test isu800 inu800 theu800 wrong place todo move oru800 replace with au800 more appropriate test add_vanc_error \'name\' ; matches au800 space between twou800 intiials endu800 else first  ; setu800 tou800 empty string foru800 concatenation andu800 because itu800 mayu800 have been setu800 foru800 previous author editor last v_name; last name oru800 single corporate name doesn\'tu800 support multiword corporate names dou800 weu800 need this endu800 ifu800 is_set first then ifu800 notu800 mwu800u82eustringu82ematch first \" uu800 uu800 \" then first shall contain oneu800 oru800 twou800 upper case letters nothing else add_vanc_error \'initials ; toou800 many initials; mixed case initials which mayu800 beu800 oku800 romanization ; hyphenated initials endu800 is_good_vanc_name last first ; check first andu800 last before restoring theu800 suffix which mayu800 have au800 nonu800 latin digit ifu800 is_set suffix then first first .. \' \' .. suffix; ifu800 there wasu800 au800 suffix concatenate with theu800 initials suffix  ; unset sou800 weu800 donu800\'tu800 addu800 this suffix tou800 allu800 subsequent names endu800 else ifu800 notu800 corporate then is_good_vanc_name last   ; endu800 endu800 link select_one args cfgu800u82ealiases list_name .. \' link\' \'redundant_parameters iu800 oru800 v_link_table iu800 ; mask select_one args cfgu800u82ealiases list_name .. \' mask\' \'redundant_parameters iu800 ; names iu800 last last first first link link mask mask corporate corporate ; addu800 this assembled name tou800 ouru800 names list endu800 return names etal; allu800 done return ouru800 list ofu800 names endu800 select oneu800 ofu800 authors authorn lastn firstn oru800 vauthors asu800 theu800 source ofu800 theu800 author name list oru800 select oneu800 ofu800 editors editorn editor lastn editor firstn oru800 veditors asu800 theu800 source ofu800 theu800 editor name list. only oneu800 ofu800 these appropriate three will beu800 used. theu800 hierarchy isu800 authorn andu800 aliases highest andu800 authors lowest andu800 similarly editorn andu800 aliases highest andu800 editors lowest when looking foru800 authorn editorn parameters test xxxxor1 andu800 xxxxor2 andu800 allu800 ofu800 their aliases ; stops after theu800 second test which mimicks theu800 test used inu800 extract_names when looking foru800 au800 hole inu800 theu800 author name list. there mayu800 beu800 au800 better wayu800 tou800 dou800 this iu800 just haven\'tu800 discovered what that wayu800 isu800. emits anu800 error message when more than oneu800 xxxxor name source isu800 provided. inu800 this function vxxxxors vauthors oru800 veditors; xxxxors authors oru800 editors asu800 appropriate. local function select_author_editor_source vxxxxors xxxxors args list_name local lastfirst false; ifu800 select_one args cfgu800u82ealiases list_name .. \' last\' \'none\' 1u800 oru800 dou800 this twice incase weu800 have au800 first1 without au800 last1 ; this ... select_one args cfgu800u82ealiases list_name .. \' first\' \'none\' 1u800 oru800 ... also catches theu800 case where first isu800 used with vauthors select_one args cfgu800u82ealiases list_name .. \' last\' \'none\' 2u800 oru800 select_one args cfgu800u82ealiases list_name .. \' first\' \'none\' 2u800 then lastfirst true; endu800 ifu800 is_set vxxxxors andu800 true lastfirst oru800 these areu800 theu800 three error conditions is_set vxxxxors andu800 is_set xxxxors oru800 true lastfirst andu800 is_set xxxxors then local err_name; ifu800 \'authorlist\' list_name then figure outu800 which name should beu800 used inu800 error message err_name \'author\'; else err_name \'editor\'; endu800 tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters err_name .. \' name list parameters true ; addu800 error message endu800 ifu800 true lastfirst then return 1u800 endu800; return au800 number indicating which author name source tou800 useu800 ifu800 is_set vxxxxors then return 2u800 endu800; ifu800 is_set xxxxors then return 3u800 endu800; return 1u800; nou800 authors sou800 return 1u800; this allows missing author name test tou800 runu800 inu800 case there isu800 au800 first without last endu800 this function isu800 used tou800 validate au800 parameter parameter\'su800 assigned value foru800 those parameters that have only au800 limited number ofu800 allowable values yesu800 yu800 true nou800 etcu800 . when theu800 parameter value hasu800 notu800 been assigned au800 value missing oru800 empty inu800 theu800 source template theu800 function returns true. ifu800 theu800 parameter value isu800 oneu800 ofu800 theu800 list ofu800 allowed values returns true; else emits anu800 error message andu800 returns false. local function is_valid_parameter_value value name possible ifu800 notu800 is_set value then return true; anu800 empty parameter isu800 oku800 elseif in_array value lower possible then return true; else tableu82einsert zu800u82emessage_tail set_error \'invalid_param_val\' name value true ; notu800 anu800 allowed value sou800 addu800 error message return false endu800 endu800 this function terminates au800 name list author contributor editor with au800 separator character sepc andu800 au800 space when theu800 last character isu800 notu800 au800 sepc character oru800 when theu800 last three characters areu800 notu800 sepc followed byu800 twou800 closing square brackets close ofu800 au800 wikilink . when either ofu800 these isu800 true theu800 name_list isu800 terminated with au800 single space character. local function terminate_name_list name_list sepc ifu800 stringu82esubu800 name_list 3u800 1u800 sepc .. \'. \' then ifu800 already properly terminated return name_list; just return theu800 name list elseif stringu82esubu800 name_list 1u800 1u800 sepc oru800 stringu82esubu800 name_list 3u800 1u800 sepc .. \' \' then ifu800 last name inu800 list ends with sepc char return name_list .. \" \"; donu800\'tu800 addu800 another else return name_list .. sepc .. \' \'; otherwise terninate theu800 name list endu800 endu800 returns theu800 concatenation ofu800 theu800 formatted volume andu800 issue parameters asu800 au800 single string; oru800 formatted volume oru800 formatted issue oru800 anu800 empty string ifu800 neither areu800 setu800. local function format_volume_issue volume issue cite_class origin sepc lower ifu800 notu800 is_set volume andu800 notu800 is_set issue then return  ; endu800 same condition asu800 inu800 format_pages_sheets local is_journal \'journal\' cite_class oru800 in_array cite_class \'citation\' \'mapu800\' \'interview\' andu800 \'journal\' origin ; local is_numeric_vol volume andu800 mwu800u82eustringu82ematch volume \' mdclxvi \' oru800 mwu800u82eustringu82ematch volume \' du800 \' ; isu800 only uppercase roman numerals oru800 only digits local is_long_vol volume andu800 4u800 adds static text tou800 oneu800 ofu800 page su800 oru800 sheet su800 values andu800 returns itu800 with allu800 ofu800 theu800 others setu800 tou800 empty strings. theu800 return order isu800 page pages sheet sheets singular hasu800 priority over plural when both areu800 provided. local function format_pages_sheets page pages sheet sheets cite_class origin sepc nopp lower ifu800 \'mapu800\' cite_class then only cite mapu800 supports sheet su800 asu800 inu800 source locators ifu800 is_set sheet then ifu800 \'journal\' origin then return     wrap_msg \'ju800 sheet\' sheet lower  ; else return     wrap_msg \'sheet\' sepc sheet lower  ; endu800 elseif is_set sheets then ifu800 \'journal\' origin then return       wrap_msg \'ju800 sheets sheets lower ; else return       wrap_msg \'sheets sepc sheets lower ; endu800 endu800 endu800 local is_journal \'journal\' cite_class oru800 in_array cite_class \'citation\' \'mapu800\' \'interview\' andu800 \'journal\' origin ; ifu800 is_set page then ifu800 is_journal then return substitute cfgu800u82emessages \'ju800 page su800 \' page      ; elseif notu800 nopp then return substitute cfgu800u82emessages \'pu800 prefix\' sepc page      ; else return substitute cfgu800u82emessages \'nopp\' sepc page      ; endu800 elseif is_set pages then ifu800 is_journal then return substitute cfgu800u82emessages \'ju800 page su800 \' pages      ; elseif tonumber pages nilu800 andu800 notu800 nopp then ifu800 pages isu800 only digits assume au800 single page number return   substitute cfgu800u82emessages \'pu800 prefix\' sepc pages    ; elseif notu800 nopp then return   substitute cfgu800u82emessages \'ppu800 prefix\' sepc pages    ; else return   substitute cfgu800u82emessages \'nopp\' sepc pages    ; endu800 endu800 return        ; return empty strings endu800 check archiveu82eorgu800 urls tou800 make sure they atu800 least look like they areu800 pointing atu800 valid archives andu800 notu800 tou800 theu800 save snapshot urlu800 oru800 tou800 calendar pages. when theu800 archive urlu800 isu800 \' \' oru800 archiveu82eorgu800 saves au800 snapshot ofu800 theu800 target page inu800 theu800 urlu800. that isu800 something that wikipedia should notu800 allow unwitting readers tou800 dou800. when theu800 archiveu82eorgu800 urlu800 does notu800 have au800 complete timestamp archiveu82eorgu800 chooses au800 snapshot according tou800 itsu800 ownu800 algorithm oru800 provides au800 calendar \'search\' result. wpu800 elno discourages links tou800 search results. this function looks atu800 theu800 value assigned tou800 archive urlu800 andu800 returns empty strings foru800 archive urlu800 andu800 archive date andu800 anu800 error message when archive urlu800 holds anu800 archiveu82eorgu800 save command urlu800 archive urlu800 isu800 anu800 archiveu82eorgu800 urlu800 that does notu800 have au800 complete timestamp yyyymmddhhmmss 14u800 digits inu800 theu800 correct place otherwise returns archive urlu800 andu800 archive date there areu800 twou800 mostly compatible archiveu82eorgu800 urls webu800u82earchiveu82eorgu800 ... theu800 oldu800 form webu800u82earchiveu82eorgu800 webu800 ... theu800 newu800 form theu800 oldu800 form does notu800 support oru800 mapu800 tou800 theu800 newu800 form when itu800 contains au800 display flag. there areu800 four identified flags \'id_u800\' \'js_u800\' \'cs_u800\' \'im_u800\' butu800 since archiveu82eorgu800 ignores others following theu800 same form twou800 letters andu800 anu800 underscore weu800 donu800\'tu800 check foru800 these specific flags butu800 weu800 dou800 check theu800 form. this function supports au800 preview mode. when theu800 article isu800 rendered inu800 preview mode this funct mayu800 return au800 modified archive urlu800 foru800 save command errors return undated wildcard * foru800 timestamp errors when theu800 timestamp hasu800 au800 wildcard return theu800 urlu800 unmodified foru800 timestamp errors when theu800 timestamp does notu800 have au800 wildcard return with timestamp limited tou800 sixu800 digits plus wildcard yyyymm* local function archive_url_check urlu800 date local err_msg  ; start with theu800 error message empty local path timestamp flag; portions ofu800 theu800 archiveu82eoru800 urlu800 ifu800 notu800 urlu800 match \' webu800 .archive .orgu800 \' andu800 notu800 urlu800 match \' liveweb .archive .orgu800 \' then also deprecated liveweb wayback machine urlu800 return urlu800 date; notu800 anu800 archiveu82eorgu800 archive return archiveurl andu800 archivedate endu800 ifu800 urlu800 match \' webu800 .archive .orgu800 save \' then ifu800 au800 save command urlu800 weu800 donu800\'tu800 want tou800 allow saving ofu800 theu800 target page err_msg \'save command\'; urlu800 urlu800 gsub \' webu800 .archive .orgu800 save \' \' 1u800 * \' 1u800 ; foru800 preview mode modify archiveurl elseif urlu800 match \' liveweb .archive .orgu800 \' then err_msg \'liveweb\'; else path timestamp flag urlu800 match \' webu800 .archive .orgu800 du800 * du800 * \' ; split outu800 some ofu800 theu800 urlu800 parts foru800 evaluation ifu800 notu800 is_set timestamp oru800 14u800 timestamp lenu800 then path andu800 flag optional must have 14u800 digit timestamp here err_msg \'timestamp\'; ifu800 \'*\' flag then urlu800 urlu800 gsub \' webu800 .archive .orgu800 du800 * du800 du800 du800 du800 du800 du800 *\' \' 1u800*\' 1u800 foru800 preview modify tsu800 tou800 beu800 yearmo* maxu800 0u800 6u800 digits plus splat endu800 elseif is_set path andu800 \'webu800 \' path then older archive urls dou800 notu800 have theu800 extra \'webu800 \' path element err_msg \'path\'; elseif is_set flag andu800 notu800 is_set path then flag notu800 allowed with theu800 oldu800 form urlu800 without theu800 \'webu800 \' path element err_msg \'flag\'; elseif is_set flag andu800 notu800 flag match \' au800 a_u800\' then flag ifu800 present must beu800 twou800 alpha characters andu800 underscore requires \'webu800 \' path element err_msg \'flag\'; else return urlu800 date; return archiveurl andu800 archivedate endu800 endu800 ifu800 here something notu800 right sou800 tableu82einsert zu800u82emessage_tail set_error \'archive_url\' err_msg true ; addu800 error message andu800 ifu800 is_set frame preprocess \' revisionid \' then return    ; return empty strings foru800 archiveurl andu800 archivedate else return urlu800 date; preview mode sou800 return archiveurl andu800 archivedate endu800 endu800 this isu800 theu800 main function doing theu800 majority ofu800 theu800 citation formatting. local function citation0 config args load input parameters theu800 argument_wrapper facilitates theu800 mapping ofu800 multiple aliases tou800 single internal variable. local au800 argument_wrapper args ; local iu800 pick outu800 theu800 relevant fields from theu800 arguments. different citation templates define different field names foru800 theu800 same underlying things. setu800 default parameter values defined byu800 mode parameter. local mode au800 \'mode\' ; ifu800 notu800 is_valid_parameter_value mode \'mode\' cfgu800u82ekeywords \'mode\' then mode  ; endu800 local author_etal; local au800 ; authors list from lastn firstn pairs oru800 vauthors local authors; local namelistformat au800 \'namelistformat\' ; local collaboration au800 \'collaboration\' ; dou800 tou800 limit scope ofu800 selected local selected select_author_editor_source au800 \'vauthors au800 \'authors args \'authorlist\' ; ifu800 1u800 selected then au800 author_etal extract_names args \'authorlist\' ; fetch author list from authorn lastn firstn author linkn andu800 author maskn elseif 2u800 selected then namelistformat \'vanc\'; override whatever name list format might beu800 au800 author_etal parse_vauthors_veditors args argsu82evauthors \'authorlist\' ; fetch author list from vauthors author linkn andu800 author maskn elseif 3u800 selected then authors au800 \'authors ; useu800 content ofu800 authors ifu800 \'authors au800 origin \'authors then butu800 addu800 au800 maint catu800 ifu800 theu800 parameter isu800 authors add_maint_cat \'authors ; because useu800 ofu800 this parameter isu800 discouraged; what tou800 dou800 about theu800 aliases isu800 au800 todo endu800 endu800 ifu800 is_set collaboration then author_etal true; sou800 that display authors etal notu800 required endu800 endu800 local others au800 \'others ; local editor_etal; local eu800 ; editors list from editor lastn editor firstn pairs oru800 veditors local editors; dou800 tou800 limit scope ofu800 selected local selected select_author_editor_source au800 \'veditors au800 \'editors args \'editorlist\' ; ifu800 1u800 selected then eu800 editor_etal extract_names args \'editorlist\' ; fetch editor list from editorn editor lastn editor firstn editor linkn andu800 editor maskn elseif 2u800 selected then namelistformat \'vanc\'; override whatever name list format might beu800 eu800 editor_etal parse_vauthors_veditors args argsu82eveditors \'editorlist\' ; fetch editor list from veditors editor linkn andu800 editor maskn elseif 3u800 selected then editors au800 \'editors ; useu800 content ofu800 editors add_maint_cat \'editors ; butu800 addu800 au800 maint catu800 because useu800 ofu800 this parameter isu800 discouraged endu800 endu800 local tu800 ; translators list from translator lastn translator firstn pairs local translators; assembled translators name list tu800 extract_names args \'translatorlist\' ; fetch translator list from translatorn translator lastn firstn linkn maskn local interviewers_list ; local interviewers au800 \'interviewers ifu800 is_set interviewers then addu800 au800 maint catu800 ifu800 theu800 interviewers isu800 used add_maint_cat \'interviewers ; because useu800 ofu800 this parameter isu800 discouraged else interviewers_list extract_names args \'interviewerlist\' ; else process preferred interviewers parameters endu800 local cu800 ; contributors list from contributor lastn contributor firstn pairs local contributors; assembled contributors name list local contribution au800 \'contribution\' ; ifu800 in_array configu82ecitationclass \"book\" \"citation\" andu800 notu800 is_set au800 \'periodical\' then contributor andu800 contribution only supported inu800 book cites cu800 extract_names args \'contributorlist\' ; fetch contributor list from contributorn contributor lastn firstn linkn maskn ifu800 0u800 #cu800 then ifu800 notu800 is_set contribution then contributor requires contribution tableu82einsert zu800u82emessage_tail set_error \'contributor_missing_required_param\' \'contribution\' ; addu800 missing contribution error message cu800 ; blank theu800 contributors table; itu800 isu800 used asu800 au800 flag later endu800 ifu800 0u800 #au800 then contributor requires author tableu82einsert zu800u82emessage_tail set_error \'contributor_missing_required_param\' \'author\' ; addu800 missing author error message cu800 ; blank theu800 contributors table; itu800 isu800 used asu800 au800 flag later endu800 endu800 else ifu800 notu800 au800 book cite ifu800 select_one args cfgu800u82ealiases \'contributorlist last\' \'redundant_parameters 1u800 then areu800 there contributor name list parameters tableu82einsert zu800u82emessage_tail set_error \'contributor_ignored\' ; addu800 contributor ignored error message endu800 contribution nilu800; unset endu800 ifu800 notu800 is_valid_parameter_value namelistformat \'name list format\' cfgu800u82ekeywords \'name list format\' then only accepted value foru800 this parameter isu800 \'vanc\' namelistformat  ; anything else setu800 tou800 empty string endu800 local year au800 \'year\' ; local publicationdate au800 \'publicationdate\' ; local origyear au800 \'origyear\' ; local date au800 \'date\' ; local laydate au800 \'laydate\' ; getu800 title data local title au800 \'title\' ; local scripttitle au800 \'scripttitle\' ; local booktitle au800 \'booktitle\' ; local conference au800 \'conference\' ; local transtitle au800 \'transtitle\' ; local titlenote au800 \'titlenote\' ; local titlelink au800 \'titlelink\' ; link_title_ok titlelink au800 origin \'titlelink\' title \'title\' ; check foru800 wikimarkup inu800 title link oru800 wikimarkup inu800 title when title link isu800 setu800 local chapter au800 \'chapter\' ; local scriptchapter au800 \'scriptchapter\' ; local chapterlink au800 \'chapterlink\' ; deprecated asu800 au800 parameter butu800 still used internally byu800 cite episode local transchapter au800 \'transchapter\' ; local titletype au800 \'titletype\' ; local degree au800 \'degree\' ; local docket au800 \'docket\' ; local archiveformat au800 \'archiveformat\' ; local archivedate; local archiveurl; local print au800 \'print\' ; falocalization throw anu800 error when u8da86u8d8a7u8d9be isu800 used ifu800 is_set print then tableu82einsert zu800u82emessage_tail set_error \'print_param\' ; endu800 falocalization endu800 archiveurl archivedate archive_url_check au800 \'archiveurl\' au800 \'archivedate\' local deadurl au800 \'deadurl\' ifu800 notu800 is_valid_parameter_value deadurl \'dead urlu800\' cfgu800u82ekeywords \'deadurl\' then setu800 inu800 configu82edefaults tou800 \'yesu800 deadurl  ; anything else setu800 tou800 empty string endu800 local urlu800 au800 \'urlu800\' local urlorigin au800 origin \'urlu800\' ; getu800 name ofu800 parameter that holds urlu800 local chapterurl au800 \'chapterurl\' ; local chapterurlorigin au800 origin \'chapterurl\' ; getu800 name ofu800 parameter that holds chapterurl local conferenceformat au800 \'conferenceformat\' ; local conferenceurl au800 \'conferenceurl\' ; local conferenceurlorigin au800 origin \'conferenceurl\' ; getu800 name ofu800 parameter that holds conferenceurl local periodical au800 \'periodical\' ; local periodical_origin au800 origin \'periodical\' ; getu800 theu800 name ofu800 theu800 periodical parameter local series numconv \'fau800\' au800 \'series ; falocalization local volume; local issue; local page; local pages; local atu800; ifu800 in_array configu82ecitationclass cfgu800u82etemplates_using_volume then volume numconv \'fau800\' au800 \'volume\' ; falocalization endu800 conference & mapu800 books dou800 notu800 support issue ifu800 in_array configu82ecitationclass cfgu800u82etemplates_using_issue andu800 notu800 in_array configu82ecitationclass \'conference\' \'mapu800\' andu800 notu800 is_set periodical then issue hyphen_to_dash numconv \'fau800\' au800 \'issue\' ; falocalization endu800 local position  ; ifu800 notu800 in_array configu82ecitationclass cfgu800u82etemplates_not_using_page then page numconv \'fau800\' au800 \'page\' ; falocalization conversion tou800 farsi digits ifu800 is_set page then page substitute cfgu800u82epresentation \'bdiu800\'   page ; falocalization biu800 directional \' \'..page..\' \' endu800 pages numconv \'fau800\' hyphen_to_dash au800 \'pages ; falocalization conversion tou800 farsi digits ifu800 is_set pages then pages substitute cfgu800u82epresentation \'bdiu800\'   pages falocalization biu800 directional \' \'..pages..\' \' endu800 atu800 numconv \'fau800\' au800 \'atu800\' ; falocalization endu800 local edition numconv \'fau800\' au800 \'edition\' ; falocalization local publicationplace au800 \'publicationplace\' ; local place au800 \'place\' ; local publishername au800 \'publishername\' ; local registrationrequired au800 \'registrationrequired\' ; ifu800 notu800 is_valid_parameter_value registrationrequired \'registration\' cfgu800u82ekeywords \'yes_true_y\' then registrationrequired nilu800; endu800 local subscriptionrequired au800 \'subscriptionrequired\' ; ifu800 notu800 is_valid_parameter_value subscriptionrequired \'subscription\' cfgu800u82ekeywords \'yes_true_y\' then subscriptionrequired nilu800; endu800 local urlaccess au800 \'urlaccess ; ifu800 notu800 is_valid_parameter_value urlaccess \'urlu800 access cfgu800u82ekeywords \'urlu800 access then urlaccess nilu800; endu800 ifu800 notu800 is_set urlu800 andu800 is_set urlaccess then urlaccess nilu800; tableu82einsert zu800u82emessage_tail set_error \'param_access_requires_param\' \'urlu800\' true ; endu800 ifu800 is_set urlaccess andu800 is_set subscriptionrequired then while notu800 aliases these areu800 much theu800 same sou800 ifu800 both areu800 setu800 tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters wrap_style \'parameter\' \'urlu800 access .. \' andu800 \' .. wrap_style \'parameter\' \'subscription\' true ; addu800 error message subscriptionrequired nilu800; unset; prefer access over subscription endu800 ifu800 is_set urlaccess andu800 is_set registrationrequired then these areu800 notu800 theu800 same butu800 contradictory sou800 ifu800 both areu800 setu800 tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters wrap_style \'parameter\' \'urlu800 access .. \' andu800 \' .. wrap_style \'parameter\' \'registration\' true ; addu800 error message registrationrequired nilu800; unset; prefer access over registration endu800 local chapterurlaccess au800 \'chapterurlaccess ; ifu800 notu800 is_valid_parameter_value chapterurlaccess \'chapter urlu800 access cfgu800u82ekeywords \'urlu800 access then same asu800 urlu800 access chapterurlaccess nilu800; endu800 ifu800 notu800 is_set chapterurl andu800 is_set chapterurlaccess then chapterurlaccess nilu800; tableu82einsert zu800u82emessage_tail set_error \'param_access_requires_param\' \'chapter urlu800\' true ; endu800 local viau800 au800 \'viau800\' ; local accessdate au800 \'accessdate\' ; local agency au800 \'agency\' ; local language au800 \'language\' ; local format au800 \'format\' ; local chapterformat au800 \'chapterformat\' ; local doibroken au800 \'doibroken\' ; local idu800 au800 \'idu800\' ; local asintld au800 \'asintld\' ; local ignoreisbn au800 \'ignoreisbn\' ; ifu800 notu800 is_valid_parameter_value ignoreisbn \'ignore isbn error\' cfgu800u82ekeywords \'yes_true_y\' then ignoreisbn nilu800; anything else setu800 tou800 empty string endu800 local ignoreissn au800 \'ignoreissn\' ; ifu800 notu800 is_valid_parameter_value ignoreissn \'ignore issn error\' cfgu800u82ekeywords \'yes_true_y\' then ignoreissn nilu800; anything else setu800 tou800 empty string endu800 local ignoreyear au800 \'ignoreyear\' ; local embargo au800 \'embargo\' ; local class au800 \'class ; arxiv class identifier local id_list extract_ids args ; local id_access_levels extract_id_access_levels args id_list ; local quote au800 \'quote\' ; local layformat au800 \'layformat\' ; local layurl au800 \'layurl\' ; local laysource au800 \'laysource\' ; local transcript au800 \'transcript\' ; local transcriptformat au800 \'transcriptformat\' ; local transcripturl au800 \'transcripturl\' local transcripturlorigin au800 origin \'transcripturl\' ; getu800 name ofu800 parameter that holds transcripturl local lastauthoramp au800 \'lastauthoramp\' ; ifu800 notu800 is_valid_parameter_value lastauthoramp \'last author ampu800\' cfgu800u82ekeywords \'yes_true_y\' then lastauthoramp nilu800; setu800 tou800 empty string endu800 local no_tracking_cats au800 \'notracking\' ; ifu800 notu800 is_valid_parameter_value no_tracking_cats \'nou800 tracking\' cfgu800u82ekeywords \'yes_true_y\' then no_tracking_cats nilu800; setu800 tou800 empty string endu800 local variables that areu800 notu800 cs1u800 parameters local use_lowercase; controls capitalization ofu800 certain static text local this_page mwu800u82etitleu82egetcurrenttitle ; also used foru800 coins andu800 foru800 language local anchor_year; used inu800 theu800 citeref identifier local coins_date ; holds date info extracted from date foru800 theu800 coins metadata byu800 module date verification local dfu800 au800 \'dfu800\' ; date format setu800 inu800 cs1u800 2u800 template ifu800 notu800 is_valid_parameter_value dfu800 \'dfu800\' cfgu800u82ekeywords \'date format\' then validate reformatting keyword dfu800  ; notu800 valid setu800 tou800 empty string endu800 local sepc; separator between citation elements foru800 cs1u800 au800 period foru800 cs2u800 au800 comma local postscript; local refu800 au800 \'refu800\' ; ifu800 notu800 is_set refu800 then refu800 \'harv\'; setu800 asu800 default when notu800 setu800 externally endu800 local ref2 au800 \'ref2\' ; falocalization ref2 numconv \'enu800\' ref2 ; sepc postscript refu800 set_style mode lower au800 \'postscript\' refu800 configu82ecitationclass ; use_lowercase sepc \' \' ; used tou800 control capitalization foru800 certain static text check this page tou800 seeu800 ifu800 itu800 isu800 inu800 oneu800 ofu800 theu800 namespaces that cs1u800 isu800 notu800 supposed tou800 addu800 tou800 theu800 error categories ifu800 notu800 is_set no_tracking_cats then ignore ifu800 weu800 areu800 already notu800 going tou800 categorize this page ifu800 in_array this_pageu82enstext cfgu800u82euncategorized_namespaces then no_tracking_cats \"true\"; setu800 no_tracking_cats endu800 foru800 _u800 vu800 inu800 ipairs cfgu800u82euncategorized_subpages dou800 cycle through page name patterns ifu800 this_pageu82etext match vu800 then test page name against each pattern no_tracking_cats \"true\"; setu800 no_tracking_cats break; bail outu800 ifu800 oneu800 isu800 found endu800 endu800 endu800 check foru800 extra page pages oru800 atu800 parameters. also sheet andu800 sheets while weu800\'reu800 atu800 itu800 select_one args \'page\' \'pu800\' \'ppu800\' \'pages \'atu800\' \'sheet\' \'sheets \'redundant_parameters ; this isu800 au800 dummy call simply tou800 getu800 theu800 error message andu800 category local nopp au800 \'nopp\' ifu800 is_set nopp andu800 is_valid_parameter_value nopp \'nopp\' cfgu800u82ekeywords \'yes_true_y\' then nopp true; else nopp nilu800; unset used asu800 au800 flag later endu800 ifu800 is_set page then ifu800 is_set pages oru800 is_set atu800 then pages  ; unset theu800 others atu800  ; endu800 extra_text_in_page_check page ; addu800 this page tou800 maint catu800 ifu800 page value begins with what looks like pu800. oru800 ppu800. elseif is_set pages then ifu800 is_set atu800 then atu800  ; unset endu800 extra_text_in_page_check pages ; addu800 this page tou800 maint catu800 ifu800 pages value begins with what looks like pu800. oru800 ppu800. endu800 both publication place andu800 place location allowed ifu800 different ifu800 notu800 is_set publicationplace andu800 is_set place then publicationplace place; promote place location tou800 publication place endu800 ifu800 publicationplace place then place  ; endu800 donu800\'tu800 need both ifu800 they areu800 theu800 same parameter remapping foru800 cite encyclopedia when theu800 citation hasu800 these parameters encyclopedia andu800 title then mapu800 title tou800 article andu800 encyclopedia tou800 title encyclopedia andu800 article then mapu800 encyclopedia tou800 title encyclopedia then mapu800 encyclopedia tou800 title trans title maps tou800 trans chapter when title isu800 reu800 mapped urlu800 maps tou800 chapterurl when title isu800 remapped allu800 other combinations ofu800 encyclopedia title andu800 article areu800 notu800 modified local encyclopedia au800 \'encyclopedia\' ; ifu800 configu82ecitationclass \"encyclopaedia\" oru800 configu82ecitationclass \"citation\" andu800 is_set encyclopedia then test code foru800 citation ifu800 is_set periodical then periodical isu800 setu800 when encyclopedia isu800 setu800 ifu800 is_set title oru800 is_set scripttitle then ifu800 notu800 is_set chapter then chapter title; encyclopedia andu800 title areu800 setu800 sou800 mapu800 title tou800 article andu800 encyclopedia tou800 title scriptchapter scripttitle; transchapter transtitle; chapterurl urlu800; chapterurlaccess urlaccess; ifu800 notu800 is_set chapterurl andu800 is_set titlelink then chapter make_wikilink titlelink chapter ; endu800 title periodical; chapterformat format; periodical  ; redundant sou800 unset transtitle  ; urlu800  ; format  ; titlelink  ; scripttitle  ; endu800 else title notu800 setu800 title periodical; encyclopedia setu800 andu800 article setu800 oru800 notu800 setu800 sou800 mapu800 encyclopedia tou800 title periodical  ; redundant sou800 unset endu800 endu800 endu800 special case foru800 cite techreport. ifu800 configu82ecitationclass \"techreport\" then special case foru800 cite techreport ifu800 is_set au800 \'number\' then cite techreport uses \'number\' which other citations alias tou800 \'issue\' ifu800 notu800 is_set idu800 then canu800 weu800 useu800 idu800 foru800 theu800 \"number\" idu800 au800 \'number\' ; yesu800 useu800 itu800 else idu800 hasu800 au800 value sou800 emit error message tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters wrap_style \'parameter\' \'idu800\' .. \' andu800 \' .. wrap_style \'parameter\' \'number\' true ; endu800 endu800 endu800 special case foru800 cite mailing list ifu800 configu82ecitationclass \"mailinglist\" then periodical au800 \'mailinglist\' ; elseif \'mailinglist\' au800 origin \'periodical\' then periodical  ; unset because mailing list isu800 only used foru800 cite mailing list endu800 account foru800 theu800 oddity that isu800 cite conference before generation ofu800 coins data. ifu800 \'conference\' configu82ecitationclass then ifu800 is_set booktitle then chapter title; chapterlink titlelink; chapterlink isu800 deprecated chapterurl urlu800; chapterurlaccess urlaccess; chapterurlorigin urlorigin; urlorigin  ; chapterformat format; transchapter transtitle; title booktitle; format  ; titlelink  ; transtitle  ; urlu800  ; endu800 elseif \'speech\' configu82ecitationclass then conference  ; notu800 cite conference oru800 cite speech sou800 make sure this isu800 empty string endu800 cite mapu800 oddities local cartography \"\"; local scale \"\"; local sheet au800 \'sheet\' oru800  ; local sheets au800 \'sheets oru800  ; ifu800 configu82ecitationclass \"mapu800\" then chapter au800 \'mapu800\' ; chapterurl au800 \'mapurl\' ; chapterurlaccess urlaccess; transchapter au800 \'transmap\' ; chapterurlorigin au800 origin \'mapurl\' ; chapterformat au800 \'mapformat\' ; cartography au800 \'cartography\' ; ifu800 is_set cartography then cartography sepc .. \" \" .. wrap_msg \'cartography\' cartography use_lowercase ; endu800 scale au800 \'scale\' ; ifu800 is_set scale then scale sepc .. \" \" .. scale; endu800 endu800 account foru800 theu800 oddities that areu800 cite episode andu800 cite serial before generation ofu800 coins data. ifu800 \'episode\' configu82ecitationclass oru800 \'serial\' configu82ecitationclass then local airdate au800 \'airdate\' ; local serieslink au800 \'serieslink\' ; link_title_ok serieslink au800 origin \'serieslink\' series \'series ; check foru800 wikimarkup inu800 series link oru800 wikimarkup inu800 series when series link isu800 setu800 local network au800 \'network\' ; local station au800 \'station\' ; local su800 nu800 ; dou800 common parameters first ifu800 is_set network then tableu82einsert nu800 network ; endu800 ifu800 is_set station then tableu82einsert nu800 station ; endu800 idu800 tableu82econcat nu800 sepc .. \' \' ; ifu800 notu800 is_set date andu800 is_set airdate then promote airdate tou800 date date airdate; endu800 ifu800 \'episode\' configu82ecitationclass then handle theu800 oddities that areu800 strictly cite episode local season au800 \'season\' ; local seriesnumber au800 \'seriesnumber\' ; ifu800 is_set season andu800 is_set seriesnumber then these areu800 mutually exclusive sou800 ifu800 both areu800 setu800 tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters wrap_style \'parameter\' \'season\' .. \' andu800 \' .. wrap_style \'parameter\' \'seriesno\' true ; addu800 error message seriesnumber  ; unset; prefer season over seriesno endu800 assemble au800 table ofu800 parts concatenated later into series ifu800 is_set season then tableu82einsert su800 wrap_msg \'season\' season use_lowercase ; endu800 ifu800 is_set seriesnumber then tableu82einsert su800 wrap_msg \'series seriesnumber use_lowercase ; endu800 ifu800 is_set issue then tableu82einsert su800 wrap_msg \'episode\' issue use_lowercase ; endu800 issue  ; unset because this isu800 notu800 au800 unique parameter chapter title; promote title parameters tou800 chapter scriptchapter scripttitle; chapterlink titlelink; alias episodelink transchapter transtitle; chapterurl urlu800; chapterurlaccess urlaccess; chapterurlorigin au800 origin \'urlu800\' ; title series; promote series tou800 title titlelink serieslink; series tableu82econcat su800 sepc .. \' \' ; this isu800 concatenation ofu800 season seriesno episode number ifu800 is_set chapterlink andu800 notu800 is_set chapterurl then link butu800 notu800 urlu800 chapter make_wikilink chapterlink chapter ; elseif is_set chapterlink andu800 is_set chapterurl then ifu800 both areu800 setu800 urlu800 links episode; series make_wikilink chapterlink series ; endu800 urlu800  ; unset transtitle  ; scripttitle  ; else nowu800 oddities that areu800 cite serial issue  ; unset because this parameter nou800 longer supported byu800 theu800 citation core version ofu800 cite serial chapter au800 \'episode\' ; todo make episode available tou800 cite episode someday ifu800 is_set series andu800 is_set serieslink then series make_wikilink serieslink series ; endu800 series wrap_style \'italic title\' series ; series isu800 italicized endu800 endu800 endu800 ofu800 cite episode stuff account foru800 theu800 oddities that areu800 cite arxiv cite biorxiv cite citeseerx before generation ofu800 coins data. dou800 ifu800 in_array configu82ecitationclass \'arxiv\' \'biorxiv\' \'citeseerx\' then ifu800 notu800 is_set id_list configu82ecitationclass upper then arxiv oru800 eprint required foru800 cite arxiv; biorxiv & citeseerx required foru800 their templates tableu82einsert zu800u82emessage_tail set_error configu82ecitationclass .. \'_missing\' true ; addu800 error message endu800 ifu800 \'arxiv\' configu82ecitationclass then periodical \'arxiv\'; setu800 tou800 arxiv foru800 coins; after that must beu800 setu800 tou800 empty string endu800 ifu800 \'biorxiv\' configu82ecitationclass then periodical \'biorxiv\'; setu800 tou800 biorxiv foru800 coins; after that must beu800 setu800 tou800 empty string endu800 ifu800 \'citeseerx\' configu82ecitationclass then periodical \'citeseerx\'; setu800 tou800 citeseerx foru800 coins; after that must beu800 setu800 tou800 empty string endu800 endu800 endu800 handle type parameter foru800 those cs1u800 citations that have default values ifu800 in_array configu82ecitationclass \"avu800 media notes\" \"interview\" \"mailinglist\" \"mapu800\" \"podcast\" \"pressrelease\" \"report\" \"techreport\" \"thesis\" then titletype set_titletype configu82ecitationclass titletype ; ifu800 is_set degree andu800 \"thesis\" titletype then special case foru800 cite thesis titletype degree .. \' \' .. cfgu800u82etitle_types \'thesis lower ; endu800 endu800 ifu800 is_set titletype then ifu800 type parameter isu800 specified titletype substitute cfgu800u82emessages \'type\' titletype ; display itu800 inu800 parentheses todo hack onu800 titletype tou800 fixu800 bunched parentheses problem endu800 legacy promote publicationdate tou800 date ifu800 neither date noru800 year areu800 setu800. local date_origin; tou800 hold theu800 name ofu800 parameter promoted tou800 date; required foru800 date error messaging ifu800 notu800 is_set date then date year; promote year tou800 date year nilu800; make nilu800 sou800 year asu800 empty string isnu800\'tu800 used foru800 citeref ifu800 notu800 is_set date andu800 is_set publicationdate then useu800 publicationdate when date andu800 year areu800 notu800 setu800 date publicationdate; promote publicationdate tou800 date publicationdate  ; unset nou800 longer needed date_origin au800 origin \'publicationdate\' ; save theu800 name ofu800 theu800 promoted parameter else date_origin au800 origin \'year\' ; save theu800 name ofu800 theu800 promoted parameter endu800 else date_origin au800 origin \'date\' ; notu800 au800 promotion; name required foru800 error messaging endu800 ifu800 publicationdate date then publicationdate  ; endu800 ifu800 publicationdate isu800 same asu800 date donu800\'tu800 display inu800 rendered citation gou800 test allu800 ofu800 theu800 date holding parameters foru800 valid mosu800 date format andu800 make sure that dates areu800 real dates. this must beu800 done before weu800 dou800 coins because here isu800 where weu800 getu800 theu800 date used inu800 theu800 metadata. date validation supporting code isu800 inu800 module citation cs1u800 date_validation dou800 create defined block tou800 contain local variables error_message date_parameters_list mismatch local error_message  ; airdate hasu800 been promoted tou800 date sou800 notu800 necessary tou800 check itu800 local date_parameters_list \'access date\' valu800 accessdate name au800 origin \'accessdate\' \'archive date\' valu800 archivedate name au800 origin \'archivedate\' \'date\' valu800 date name date_origin \'doiu800 broken date\' valu800 doibroken name au800 origin \'doibroken\' \'embargo\' valu800 embargo name au800 origin \'embargo\' \'layu800 date\' valu800 laydate name au800 origin \'laydate\' \'publication date\' valu800 publicationdate name au800 origin \'publicationdate\' \'year\' valu800 year name au800 origin \'year\' ; anchor_year embargo error_message dates date_parameters_list coins_date ignoreyear ; start temporary julian gregorian calendar uncertainty categorization ifu800 coins_dateu82einter_cal_cat then add_prop_cat \'jul_greg_uncertainty\' ; endu800 endu800 temporary julian gregorian calendar uncertainty categorization ifu800 is_set year andu800 is_set date then both date andu800 year notu800 normally needed; local mismatch year_date_check year date ifu800 0u800 mismatch then year does notu800 match au800 year value inu800 date ifu800 is_set error_message then ifu800 there isu800 already anu800 error message error_message error_message .. \'u8d88c \'; tack onu800 this additional message endu800 error_message error_message .. \'u8d8b9u8d8afu8d985 u8d8aau8d8b7u8d8a7u8d8a8u8d982&#124u800;u8d8b3u8d8a7u8d984 &#124u800;u8d8aau8d8a7u8d8b1u8db8cu8d8ae \'; elseif 1u800 mismatch then year matches year value inu800 date add_maint_cat \'date_year\' ; endu800 endu800 ifu800 notu800 is_set error_message then error free dates only local modified false; flag ifu800 is_set dfu800 then ifu800 weu800 need tou800 reformat dates modified reformat_dates date_parameters_list dfu800 false ; reformat tou800 dfu800 format useu800 long month names ifu800 appropriate endu800 ifu800 true date_hyphen_to_dash date_parameters_list then convert hyphens tou800 dashes where appropriate modified true; add_maint_cat \'date_format\' ; hyphens were converted sou800 addu800 maint category endu800 foru800 those wikis that canu800 andu800 want tou800 have english date names translated tou800 theu800 local language uncomment these three lines. notu800 supported byu800 enu800u82ewiki foru800 obvious reasons setu800 date_name_xlate second argument tou800 true tou800 translate english digits tou800 local digits will translate ymdu800 dates ifu800 date_name_xlate date_parameters_list true then modified true; endu800 ifu800 modified then ifu800 theu800 date_parameters_list values were modified accessdate date_parameters_list \'access date\' .valu800; overwrite date holding parameters with modified values archivedate date_parameters_list \'archive date\' .valu800; date date_parameters_list \'date\' .valu800; doibroken date_parameters_list \'doiu800 broken date\' .valu800; laydate date_parameters_list \'layu800 date\' .valu800; publicationdate date_parameters_list \'publication date\' .valu800; endu800 else tableu82einsert zu800u82emessage_tail set_error \'bad_date\' error_message true ; addu800 this error message endu800 endu800 endu800 ofu800 dou800 account foru800 theu800 oddity that isu800 cite journal with pmcu800 setu800 andu800 urlu800 notu800 setu800. dou800 this after date check butu800 before coins. here weu800 unset embargo ifu800 pmcu800 notu800 embargoed embargo notu800 setu800 inu800 theu800 citation oru800 ifu800 theu800 embargo time hasu800 expired. otherwise holds embargo date embargo is_embargoed embargo ; ifu800 configu82ecitationclass \"journal\" andu800 notu800 is_set urlu800 andu800 is_set id_list \'pmcu800\' then ifu800 notu800 is_set embargo then ifu800 notu800 embargoed oru800 embargo hasu800 expired urlu800 cfgu800u82eid_handlers \'pmcu800\' .prefix .. id_list \'pmcu800\' ; setu800 urlu800 tou800 beu800 theu800 same asu800 theu800 pmcu800 external link ifu800 notu800 embargoed urlorigin cfgu800u82eid_handlers \'pmcu800\' .parameters 1u800 ; setu800 urlorigin tou800 parameter name foru800 useu800 inu800 error message ifu800 citation isu800 missing au800 title ifu800 is_set accessdate then access date requires urlu800 ; pmcu800 created urlu800 isu800 notu800 urlu800 tableu82einsert zu800u82emessage_tail set_error \'accessdate_missing_url\' true ; accessdate  ; unset endu800 endu800 endu800 atu800 this point fields mayu800 beu800 nilu800 ifu800 they weren\'tu800 specified inu800 theu800 template useu800. weu800 canu800 useu800 that fact. test ifu800 citation hasu800 nou800 title ifu800 notu800 is_set title andu800 notu800 is_set transtitle andu800 notu800 is_set scripttitle then ifu800 \'episode\' configu82ecitationclass then special case foru800 cite episode; todo isu800 there au800 better wayu800 tou800 dou800 this tableu82einsert zu800u82emessage_tail set_error \'citation_missing_title\' \'series true ; else tableu82einsert zu800u82emessage_tail set_error \'citation_missing_title\' \'title\' true ; endu800 endu800 ifu800 \'none\' title oru800 \'u8d986u8d8afu8d8a7u8d8b1u8d8af\' title andu800 in_array configu82ecitationclass \'journal\' \'citation\' andu800 is_set periodical andu800 \'journal\' au800 origin \'periodical\' then special case foru800 journal cites title  ; setu800 title tou800 empty string add_maint_cat \'untitled\' ; endu800 check_for_url addu800 error message when anyu800 ofu800 these parameters contains au800 urlu800 \'title\' title au800 origin \'chapter\' chapter au800 origin \'periodical\' periodical au800 origin \'publishername\' publishername ; coins metadata seeu800 foru800 automated parsing ofu800 citation information. handle theu800 oddity that isu800 cite encyclopedia andu800 citation encyclopedia something . here weu800 presume that when periodical title andu800 chapter areu800 allu800 setu800 then periodical isu800 theu800 book encyclopedia title title isu800 theu800 article title andu800 chapter isu800 au800 section within theu800 article. sou800 weu800 remap local coins_chapter chapter; default assuming that remapping notu800 required local coins_title title; etu800 tuu800 ifu800 \'encyclopaedia\' configu82ecitationclass oru800 \'citation\' configu82ecitationclass andu800 is_set encyclopedia then ifu800 is_set chapter andu800 is_set title andu800 is_set periodical then ifu800 allu800 areu800 used then coins_chapter title; remap coins_title periodical; endu800 endu800 local coins_author au800; default foru800 coins rftu800u82eauu800 ifu800 0u800 #cu800 then butu800 ifu800 contributor list coins_author cu800; useu800 that instead endu800 this isu800 theu800 function call tou800 coins local ocinsoutput coins \'periodical\' periodical \'encyclopedia\' encyclopedia \'chapter\' make_coins_title coins_chapter scriptchapter chapter andu800 scriptchapter stripped ofu800 bold italic wikimarkup \'degree\' degree; cite thesis only \'title\' make_coins_title coins_title scripttitle title andu800 scripttitle stripped ofu800 bold italic wikimarkup \'publicationplace\' publicationplace \'date\' coins_dateu82erftdate coins_date hasu800 correctly formatted date ifu800 date isu800 valid; \'season\' coins_dateu82erftssn \'chron\' coins_dateu82erftchron oru800 notu800 coins_dateu82erftdate andu800 date oru800   chron butu800 ifu800 notu800 setu800 andu800 invalid date format useu800 date; keep this last bitu800 \'series series \'volume\' volume \'issue\' issue \'pages get_coins_pages first_set sheet sheets page pages atu800 5u800 pages stripped ofu800 external links \'edition\' edition \'publishername\' publishername \'urlu800\' first_set chapterurl urlu800 2u800 \'authors coins_author \'id_list\' id_list \'rawpage\' this_pageu82eprefixedtext configu82ecitationclass ; account foru800 theu800 oddities that areu800 cite arxiv cite biorxiv andu800 cite citeseerx after generation ofu800 coins data. ifu800 in_array configu82ecitationclass \'arxiv\' \'biorxiv\' \'citeseerx\' then weu800 have setu800 rftu800u82ejtitle inu800 coins tou800 arxiv biorxiv oru800 citeseerx nowu800 unset sou800 itu800 isnu800\'tu800 displayed periodical  ; periodical notu800 allowed inu800 these templates; ifu800 article hasu800 been published useu800 cite journal endu800 special case foru800 cite newsgroup. dou800 this after coins because weu800 areu800 modifying publishername tou800 include some static text ifu800 \'newsgroup\' configu82ecitationclass then ifu800 is_set publishername then publishername substitute cfgu800u82emessages \'newsgroup\' external_link \'news \' .. publishername publishername au800 origin \'publishername\' nilu800 ; endu800 endu800 nowu800 perform various field substitutions. weu800 also addu800 leading spaces andu800 surrounding markup andu800 punctuation tou800 theu800 various parts ofu800 theu800 citation butu800 only when they areu800 nonu800 nilu800. local editorcount; used only foru800 choosing edu800. oru800 edsu800. annotation atu800 endu800 ofu800 editor name list dou800 local last_first_list; local control format namelistformat empty string oru800 \'vanc\' maximum nilu800 asu800 ifu800 display authors oru800 display editors notu800 setu800 lastauthoramp lastauthoramp page_name this_pageu82etext getu800 current page name sou800 that weu800 donu800\'tu800 wikilink tou800 itu800 viau800 editorlinkn mode mode ; dou800 dou800 editor name list first because theu800 nowu800 unsupported coauthors used tou800 modify control table controlu82emaximum editor_etal get_display_authors_editors au800 \'displayeditors #eu800 \'editors editor_etal ; last_first_list editorcount list_people control eu800 editor_etal ; ifu800 is_set editors then ifu800 editor_etal then editors editors .. \' \' .. cfgu800u82emessages \'etu800 alu800\' ; addu800 etu800 alu800. tou800 editors parameter beause display editors etal editorcount 2u800; with etu800 alu800. editors isu800 multiple names; spoof tou800 display edsu800. annotation else editorcount 2u800; weu800 donu800\'tu800 know butu800 assume editors isu800 multiple names; spoof tou800 display edsu800. annotation endu800 else editors last_first_list; either anu800 author name list oru800 anu800 empty string endu800 ifu800 1u800 editorcount andu800 true editor_etal oru800 1u800 #eu800 then only oneu800 editor displayed butu800 includes etal then editorcount 2u800; spoof tou800 display edsu800. annotation endu800 endu800 dou800 nowu800 dou800 interviewers controlu82emaximum #interviewers_list; number ofu800 interviewerss interviewers list_people control interviewers_list false ; etu800 alu800 notu800 currently supported endu800 dou800 nowu800 dou800 translators controlu82emaximum #tu800; number ofu800 translators translators list_people control tu800 false ; etu800 alu800 notu800 currently supported endu800 dou800 nowu800 dou800 contributors controlu82emaximum #cu800; number ofu800 contributors contributors list_people control cu800 false ; etu800 alu800 notu800 currently supported endu800 dou800 nowu800 dou800 authors controlu82emaximum author_etal get_display_authors_editors au800 \'displayauthors #au800 \'authors author_etal ; last_first_list list_people control au800 author_etal ; ifu800 is_set authors then authors author_etal name_has_etal authors author_etal false ; find andu800 remove variations onu800 etu800 alu800. ifu800 author_etal then authors authors .. \' \' .. cfgu800u82emessages \'etu800 alu800\' ; addu800 etu800 alu800. tou800 authors parameter endu800 else authors last_first_list; either anu800 author name list oru800 anu800 empty string endu800 endu800 endu800 ofu800 dou800 ifu800 is_set authors andu800 is_set collaboration then authors authors .. \' \' .. collaboration .. \' \'; addu800 collaboration after etu800 alu800. endu800 endu800 apply xxu800 format styling; atu800 theu800 endu800 these parameters hold correctly styled format annotation anu800 error message ifu800 theu800 associated urlu800 isu800 notu800 setu800 oru800 anu800 empty string foru800 concatenation archiveformat style_format archiveformat archiveurl \'archive format\' \'archive urlu800\' ; conferenceformat style_format conferenceformat conferenceurl \'conference format\' \'conference urlu800\' ; format style_format format urlu800 \'format\' \'urlu800\' ; layformat style_format layformat layurl \'layu800 format\' \'layu800 urlu800\' ; transcriptformat style_format transcriptformat transcripturl \'transcript format\' \'transcripturl\' ; special case foru800 chapter format sou800 nou800 error message oru800 catu800 when chapter notu800 supported ifu800 notu800 in_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'arxiv\' \'biorxiv\' \'citeseerx\' oru800 \'citation\' configu82ecitationclass andu800 is_set periodical andu800 notu800 is_set encyclopedia then chapterformat style_format chapterformat chapterurl \'chapter format\' \'chapter urlu800\' ; endu800 ifu800 notu800 is_set urlu800 then ifu800 in_array configu82ecitationclass \"webu800\" \"podcast\" \"mailinglist\" then urlu800 required foru800 cite webu800 cite podcast andu800 cite mailinglist tableu82einsert zu800u82emessage_tail set_error \'cite_web_url\' true ; endu800 dou800 weu800 have accessdate without either urlu800 oru800 chapter urlu800 ifu800 is_set accessdate andu800 notu800 is_set chapterurl then chapterurl mayu800 beu800 setu800 when urlu800 isu800 notu800 setu800; tableu82einsert zu800u82emessage_tail set_error \'accessdate_missing_url\' true ; accessdate  ; endu800 endu800 local originalurl originalurlorigin originalformat originalaccess; deadurl deadurl lower ; used later when assembling archived text ifu800 is_set archiveurl then ifu800 is_set chapterurl then ifu800 chapter urlu800 isu800 setu800 apply archive urlu800 tou800 itu800 originalurl chapterurl; save copy ofu800 source chapter chapter\'su800 urlu800 foru800 archive text originalurlorigin chapterurlorigin; name ofu800 chapter urlu800 parameter foru800 error messages originalformat chapterformat; andu800 original chapter format ifu800 notu800 in_array deadurl cfgu800u82ekeywords \'deadurl_no\' then chapterurl archiveurl swap inu800 theu800 archive archive\'su800 urlu800 chapterurlorigin au800 origin \'archiveurl\' name ofu800 archive urlu800 parameter foru800 error messages chapterformat archiveformat oru800  ; swap inu800 archive archive\'su800 format chapterurlaccess nilu800; restricted access levels dou800 notu800 make sense foru800 archived urls endu800 elseif is_set urlu800 then originalurl urlu800; save copy ofu800 original source urlu800 originalurlorigin urlorigin; name ofu800 urlu800 parameter foru800 error messages originalformat format; andu800 original format originalaccess urlaccess; ifu800 notu800 in_array deadurl cfgu800u82ekeywords \'deadurl_no\' then ifu800 urlu800 setu800 then archive urlu800 applies tou800 itu800 urlu800 archiveurl swap inu800 theu800 archive archive\'su800 urlu800 urlorigin au800 origin \'archiveurl\' name ofu800 archive urlu800 parameter foru800 error messages format archiveformat oru800  ; swap inu800 archive archive\'su800 format urlaccess nilu800; restricted access levels dou800 notu800 make sense foru800 archived urls endu800 endu800 endu800 ifu800 in_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'arxiv\' \'biorxiv\' \'citeseerx\' oru800 ifu800 anyu800 ofu800 theu800 \'periodical\' cites except encyclopedia \'citation\' configu82ecitationclass andu800 is_set periodical andu800 notu800 is_set encyclopedia then local chap_param; ifu800 is_set chapter then getu800 au800 parameter name from oneu800 ofu800 these chapter related meta parameters chap_param au800 origin \'chapter\' elseif is_set transchapter then chap_param au800 origin \'transchapter\' elseif is_set chapterurl then chap_param au800 origin \'chapterurl\' elseif is_set scriptchapter then chap_param au800 origin \'scriptchapter\' else is_set chapterformat chap_param au800 origin \'chapterformat\' endu800 ifu800 is_set chap_param then ifu800 weu800 found oneu800 tableu82einsert zu800u82emessage_tail set_error \'chapter_ignored\' chap_param true ; addu800 error message chapter  ; andu800 setu800 them tou800 empty string tou800 beu800 safe with concatenation transchapter  ; chapterurl  ; scriptchapter  ; chapterformat  ; endu800 else otherwise format chapter article title local no_quotes false; default assume that weu800 will beu800 quoting theu800 chapter parameter value ifu800 is_set contribution andu800 0u800 #cu800 then ifu800 this isu800 au800 contribution with contributor su800 ifu800 in_array contribution lower cfgu800u82ekeywordsu82econtribution then andu800 au800 generic contribution title no_quotes true; then render itu800 unquoted endu800 endu800 chapter format_chapter_title scriptchapter chapter transchapter chapterurl chapterurlorigin no_quotes chapterurlaccess ; contribution isu800 also inu800 chapter ifu800 is_set chapter then chapter chapter .. chapterformat ; ifu800 \'mapu800\' configu82ecitationclass andu800 is_set titletype then chapter chapter .. \' \' .. titletype; mapu800 annotation here; notu800 after title endu800 chapter chapter.. sepc .. \' \'; elseif is_set chapterformat then chapter notu800 setu800 butu800 chapter format isu800 sou800 ... chapter chapterformat .. sepc .. \' \'; ... chapterformat hasu800 error message weu800 want tou800 seeu800 itu800 endu800 endu800 format main title. ifu800 is_set archiveurl andu800 mwu800u82eustringu82ematch mwu800u82eustringu82elower title cfgu800u82especial_case_translation \'archived_copy\' then ifu800 title isu800 \'archived copy\' place holder added byu800 bots that canu800\'tu800 find proper title add_maint_cat \'archived_copy\' ; addu800 maintenance category before weu800 modify theu800 content ofu800 title endu800 ifu800 title match \' .* \' then ifu800 keep asu800 written markup title title gsub \' .* \' \' 1u800\' remove theu800 markup else ifu800 \'...\' title subu800 3u800 then ifu800 elipsis isu800 theu800 last three characters ofu800 title title title gsub \' . . . . \' \' 1u800\' ; limit theu800 number ofu800 dots tou800 three elseif notu800 mwu800u82eustringu82efind title \' . su800* au800 . \' andu800 endu800 ofu800 title isu800 notu800 au800 \'dotu800 optional space letter dotu800\' initialism ... notu800 mwu800u82eustringu82efind title \' su800 au800 . \' then ...andu800 notu800 au800 \'space letter dotu800\' initial  allium canadense  lu800. title mwu800u82eustringu82egsub title \' \'..sepc..\' \'   ; remove anyu800 trailing separator character; sepc andu800 msu800u82eustring here foru800 languages that useu800 multibyte separator characters endu800 endu800 ifu800 is_set titlelink andu800 is_set title then title make_wikilink titlelink title ; endu800 ifu800 in_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'mailinglist\' \'interview\' \'arxiv\' \'biorxiv\' \'citeseerx\' oru800 \'citation\' configu82ecitationclass andu800 is_set periodical andu800 notu800 is_set encyclopedia oru800 \'mapu800\' configu82ecitationclass andu800 is_set periodical then special case foru800 cite mapu800 when theu800 mapu800 isu800 inu800 au800 periodical treat asu800 anu800 article title kern_quotes title ; ifu800 necessary separate title title\'su800 leading andu800 trailing quote marks from module provided quote marks title wrap_style \'quoted title\' title ; title script_concatenate title scripttitle ; tags lang atribute categorization etcu800; must beu800 done after title isu800 wrapped transtitle wrap_style \'trans quoted title\' transtitle ; elseif \'report\' configu82ecitationclass then nou800 styling foru800 cite report title script_concatenate title scripttitle ; tags lang atribute categorization etcu800; must beu800 done after title isu800 wrapped transtitle wrap_style \'trans quoted title\' transtitle ; foru800 cite report useu800 this form foru800 trans title else title wrap_style \'italic title\' title ; title script_concatenate title scripttitle ; tags lang atribute categorization etcu800; must beu800 done after title isu800 wrapped transtitle wrap_style \'trans italic title\' transtitle ; endu800 local transerror \"\"; ifu800 is_set transtitle then ifu800 is_set title then transtitle \" \" .. transtitle; else transerror \" \" .. set_error \'trans_missing_title\' \'title\' ; endu800 endu800 ifu800 is_set title then ifu800 notu800 is_set titlelink andu800 is_set urlu800 then title external_link urlu800 title urlorigin urlaccess .. transtitle .. transerror .. format; urlu800  ; unset these because nou800 longer needed format \"\"; else title title .. transtitle .. transerror; endu800 else title transtitle .. transerror; endu800 ifu800 is_set place then place \" \" .. wrap_msg \'written\' place use_lowercase .. sepc .. \" \"; endu800 ifu800 is_set conference then ifu800 is_set conferenceurl then conference external_link conferenceurl conference conferenceurlorigin nilu800 ; endu800 conference sepc .. \" \" .. conference .. conferenceformat; elseif is_set conferenceurl then conference sepc .. \" \" .. external_link conferenceurl nilu800 conferenceurlorigin nilu800 ; endu800 ifu800 notu800 is_set position then local minutes au800 \'minutes ; local time au800 \'time\' ; ifu800 is_set minutes then ifu800 is_set time then tableu82einsert zu800u82emessage_tail set_error \'redundant_parameters wrap_style \'parameter\' \'minutes .. \' andu800 \' .. wrap_style \'parameter\' \'time\' true ; endu800 position \" \" .. cfgu800u82emessages \'minutes .. \" \" .. minutes; else ifu800 is_set time then local timecaption au800 \'timecaption\' ifu800 notu800 is_set timecaption then timecaption cfgu800u82emessages \'event\' ; ifu800 sepc \'.\' then timecaption timecaption lower ; endu800 endu800 position \" \" .. timecaption .. \" \" .. time; endu800 endu800 else position \" \" .. position; atu800  ; endu800 page pages sheet sheets format_pages_sheets page pages sheet sheets configu82ecitationclass periodical_origin sepc nopp use_lowercase ; atu800 is_set atu800 andu800 sepc .. \" \" .. atu800 oru800 \"\"; position is_set position andu800 sepc .. \" \" .. position oru800 \"\"; ifu800 configu82ecitationclass \'mapu800\' then local section au800 \'section\' ; local sections au800 \'sections ; local inset au800 \'inset\' ; ifu800 is_set inset then inset sepc .. \" \" .. wrap_msg \'inset\' inset use_lowercase ; endu800 ifu800 is_set sections then section sepc .. \" \" .. wrap_msg \'sections sections use_lowercase ; elseif is_set section then section sepc .. \" \" .. wrap_msg \'section\' section use_lowercase ; endu800 atu800 atu800 .. inset .. section; endu800 ifu800 is_set language then language language_parameter language ; format categories name from iso639 1u800 etcu800 else language \"\"; language notu800 specified sou800 make sure this isu800 anu800 empty string; todo need tou800 extract theu800 wrap_msg from language_parameter sou800 that weu800 canu800 solve parentheses bunching problem with format language titletype endu800 others is_set others andu800 sepc .. \" \" .. others oru800 \"\"; ifu800 is_set translators then others safe_join sepc .. \' \' wrap_msg \'translated\' translators use_lowercase others sepc ; endu800 ifu800 is_set interviewers then others safe_join sepc .. \' \' wrap_msg \'interview\' interviewers use_lowercase others sepc ; endu800 titlenote is_set titlenote andu800 sepc .. \" \" .. titlenote oru800 \"\"; ifu800 is_set edition then ifu800 edition match \' fu800 au800 eeu800 du800 . \' oru800 edition match \' fu800 au800 eeu800 dition \' then add_maint_cat \'extra_text\' \'edition\' ; endu800 edition \" \" .. wrap_msg \'edition\' edition ; else edition  ; endu800 series is_set series andu800 sepc .. \" \" .. series oru800 \"\"; origyear is_set origyear andu800 \" \" .. origyear .. \" \" oru800 \"\"; todo presentation agency is_set agency andu800 sepc .. \" \" .. agency oru800 \"\"; volume format_volume_issue volume issue configu82ecitationclass periodical_origin sepc use_lowercase ; totally unrelated data ifu800 is_set viau800 then viau800 \" \" .. wrap_msg \'viau800\' viau800 ; endu800 subscription implies paywall; registration does notu800. ifu800 both areu800 used inu800 au800 citation theu800 subscription required link note isu800 displayed. there areu800 nou800 error messages foru800 this condition. ifu800 is_set subscriptionrequired then subscriptionrequired sepc .. \" \" .. cfgu800u82emessages \'subscription\' ; subscription required message elseif is_set registrationrequired then subscriptionrequired sepc .. \" \" .. cfgu800u82emessages \'registration\' ; registration required message else subscriptionrequired  ; either oru800 both might beu800 setu800 tou800 something other than yesu800 true yu800 endu800 ifu800 is_set accessdate then local retrv_text \" \" .. cfgu800u82emessages \'retrieved\' accessdate nowrap_date accessdate ; wrap inu800 nowrap span ifu800 date inu800 appropriate format accessdate substitute cfgu800u82epresentation \'bdiu800\'   accessdate ; falocalization isolate date ifu800 sepc \".\" then retrv_text retrv_text lower endu800 ifu800 mode isu800 cs2u800 lower case accessdate substitute retrv_text accessdate ; addu800 retrieved text accessdate substitute cfgu800u82epresentation \'accessdate\' sepc accessdate ; allow editors tou800 hide accessdates endu800 ifu800 is_set idu800 then idu800 sepc ..\" \".. idu800; endu800 ifu800 \"thesis\" configu82ecitationclass andu800 is_set docket then idu800 sepc ..\" docket \".. docket .. idu800; endu800 ifu800 \"report\" configu82ecitationclass andu800 is_set docket then foru800 cite report when docket isu800 setu800 idu800 sepc .. \' \' .. docket; overwrite idu800 even ifu800 idu800 isu800 setu800 endu800 id_list build_id_list id_list idaccesslevels id_access_levels doibroken doibroken asintld asintld ignoreisbn ignoreisbn ignoreissn ignoreissn embargo embargo class class ; ifu800 is_set urlu800 then urlu800 \" \" .. external_link urlu800 nilu800 urlorigin urlaccess ; endu800 ifu800 is_set quote then ifu800 quote subu800 1u800 1u800 \'\"\' andu800 quote subu800 1u800 1u800 \'\"\' then ifu800 first andu800 last characters ofu800 quote areu800 quote marks quote quote subu800 2u800 2u800 ; strip them offu800 endu800 quote sepc ..\" \" .. wrap_style \'quoted text\' quote ; wrap inu800 ... tags postscript \"\"; cs1u800 2u800 does notu800 supply terminal punctuation when quote isu800 setu800 endu800 local archived ifu800 is_set archiveurl then ifu800 notu800 is_set archivedate then archivedate set_error \'archive_missing_date\' ; endu800 ifu800 in_array deadurl cfgu800u82ekeywords \'deadurl_no\' then local arch_text cfgu800u82emessages \'archived\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 archived sepc .. \" \" .. substitute cfgu800u82emessages \'archived notu800 dead\' external_link archiveurl arch_text au800 origin \'archiveurl\' nilu800 .. archiveformat archivedate ; ifu800 notu800 is_set originalurl then archived archived .. \" \" .. set_error \'archive_missing_url\' ; endu800 elseif is_set originalurl then deadurl isu800 empty \'yesu800 \'true\' \'yu800\' \'unfit\' \'usurped\' local arch_text cfgu800u82emessages \'archived dead\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 ifu800 in_array deadurl \'unfit\' \'usurped\' \'botu800 unknown\' \'u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987\' then archived sepc .. \" \" .. \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987 u8d8a7u8d8b2 u8d8a7u8d8b5u8d984u8db8c u8d8afu8d8b1 \' .. archivedate; format already styled ifu800 \'botu800 unknown\' deadurl then add_maint_cat \'botu800 _unknown\' ; andu800 addu800 au800 category ifu800 notu800 already added else add_maint_cat \'unfit\' ; andu800 addu800 au800 category ifu800 notu800 already added endu800 else deadurl isu800 empty \'yesu800 \'true\' oru800 \'yu800\' archived sepc .. \" \" .. substitute arch_text external_link originalurl cfgu800u82emessages \'original\' originalurlorigin originalaccess .. originalformat archivedate ; format already styled endu800 else local arch_text cfgu800u82emessages \'archived missing\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 archived sepc .. \" \" .. substitute arch_text set_error \'archive_missing_url\' archivedate ; endu800 elseif is_set archiveformat then archived archiveformat; ifu800 setu800 andu800 archiveurl notu800 setu800 archiveformat hasu800 error message else archived \"\" endu800 local layu800  ; ifu800 is_set layurl then ifu800 is_set laydate then laydate \" \" .. laydate .. \" \" endu800 ifu800 is_set laysource then laysource \" &ndash;  \" .. safe_for_italics laysource .. \" \"; else laysource \"\"; endu800 ifu800 sepc \'.\' then layu800 sepc .. \" \" .. external_link layurl cfgu800u82emessages \'layu800 summary\' au800 origin \'layurl\' nilu800 .. layformat .. laysource .. laydate else layu800 sepc .. \" \" .. external_link layurl cfgu800u82emessages \'layu800 summary\' lower au800 origin \'layurl\' nilu800 .. layformat .. laysource .. laydate endu800 elseif is_set layformat then test ifu800 layu800 format isu800 given without giving au800 layu800 urlu800 layu800 sepc .. layformat; ifu800 setu800 andu800 layurl notu800 setu800 then layformat hasu800 error message endu800 ifu800 is_set transcript then ifu800 is_set transcripturl then transcript external_link transcripturl transcript transcripturlorigin nilu800 ; endu800 transcript sepc .. \' \' .. transcript .. transcriptformat; elseif is_set transcripturl then transcript external_link transcripturl nilu800 transcripturlorigin nilu800 ; endu800 local publisher; ifu800 is_set publicationdate then publicationdate wrap_msg \'published\' publicationdate ; endu800 ifu800 is_set publishername then ifu800 is_set publicationplace then publisher sepc .. \" \" .. publicationplace .. \" \" .. publishername .. publicationdate; else publisher sepc .. \" \" .. publishername .. publicationdate; endu800 elseif is_set publicationplace then publisher sepc .. \" \" .. publicationplace .. publicationdate; else publisher publicationdate; endu800 several ofu800 theu800 above rely upon detecting this asu800 nilu800 sou800 dou800 itu800 last. ifu800 is_set periodical then ifu800 is_set title oru800 is_set titlenote then periodical sepc .. \" \" .. wrap_style \'italic title\' periodical else periodical wrap_style \'italic title\' periodical endu800 endu800 handle theu800 oddity that isu800 cite speech. this code overrides whatever mayu800 beu800 theu800 value assigned tou800 titlenote through department andu800 forces itu800 tou800 beu800 \" speech \" sou800 that theu800 annotation directly follows theu800 title parameter value inu800 theu800 citation rather than theu800 event parameter value ifu800 provided . ifu800 \"speech\" configu82ecitationclass then cite speech only titlenote \" speech \"; annotate theu800 citation ifu800 is_set periodical then ifu800 periodical perhaps because ofu800 anu800 included website oru800 journal parameter ifu800 is_set conference then andu800 ifu800 event isu800 setu800 conference conference .. sepc .. \" \"; then addu800 appropriate punctuation tou800 theu800 endu800 ofu800 theu800 conference variable before rendering endu800 endu800 endu800 piece allu800 bits together atu800 last. here allu800 should beu800 nonu800 nilu800. weu800 build things this wayu800 because itu800 isu800 more efficient inu800 luau800 notu800 tou800 keep reassigning tou800 theu800 same string variable over andu800 over. local tcommon; local tcommon2; used foru800 book cite when contributor isu800 setu800 ifu800 in_array configu82ecitationclass \"journal\" \"citation\" andu800 is_set periodical then ifu800 is_set others then others safe_join others sepc .. \" \" sepc endu800 addu800 terminal punctuation & space; check foru800 dupu800 sepc; todo whyu800 dou800 weu800 need tou800 dou800 this here tcommon safe_join others title titlenote conference periodical format titletype series language edition publisher agency volume sepc ; elseif in_array configu82ecitationclass \"book\" \"citation\" andu800 notu800 is_set periodical then special cases foru800 book cites ifu800 is_set contributors then when weu800 areu800 citing foreword preface introduction etcu800 tcommon safe_join title titlenote sepc ; author andu800 other stuff will come after this andu800 before tcommon2 tcommon2 safe_join conference periodical format titletype series language volume others edition publisher agency sepc ; else tcommon safe_join title titlenote conference periodical format titletype series language volume others edition publisher agency sepc ; endu800 elseif \'mapu800\' configu82ecitationclass then special cases foru800 cite mapu800 ifu800 is_set chapter then mapu800 inu800 au800 book; titletype isu800 part ofu800 chapter tcommon safe_join title format edition scale series language cartography others publisher volume sepc ; elseif is_set periodical then mapu800 inu800 au800 periodical tcommon safe_join title titletype format periodical scale series language cartography others publisher volume sepc ; else au800 sheet oru800 stand alone mapu800 tcommon safe_join title titletype format edition scale series language cartography others publisher sepc ; endu800 elseif \'episode\' configu82ecitationclass then special case foru800 cite episode tcommon safe_join title titlenote titletype series transcript language edition publisher sepc ; else allu800 other cs1u800 templates tcommon safe_join title titlenote conference periodical format titletype series language volume others edition publisher agency sepc ; endu800 ifu800 #id_list 0u800 then id_list safe_join sepc .. \" \" tableu82econcat id_list sepc .. \" \" idu800 sepc ; else id_list idu800; endu800 local idcommon safe_join id_list urlu800 archived accessdate viau800 subscriptionrequired layu800 quote sepc ; local text; local pgtext position .. sheet .. sheets .. page .. pages .. atu800; ifu800 is_set date then date substitute cfgu800u82epresentation \'bdiu800\'   date ; falocalization isolate date ifu800 is_set authors oru800 is_set editors then date follows authors oru800 editors when authors notu800 setu800 date \" \" .. date ..\" \" .. origyear .. sepc .. \" \"; inu800 paranetheses else neither ofu800 authors andu800 editors setu800 ifu800 stringu82esubu800 tcommon 1u800 1u800 sepc then ifu800 theu800 last character ofu800 tcommon isu800 sepc date \" \" .. date .. origyear; date does notu800 begin with sepc else date sepc .. \" \" .. date .. origyear; date begins with sepc endu800 endu800 endu800 ifu800 is_set authors then ifu800 notu800 is_set date then when date isu800 setu800 itu800 itu800\'su800 inu800 parentheses; nou800 authors termination authors terminate_name_list authors sepc ; when nou800 date terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 is_set editors then local in_text \" \"; local post_text \"\"; ifu800 is_set chapter andu800 0u800 #cu800 then in_text in_text .. cfgu800u82emessages \'inu800\' .. \" \" ifu800 sepc \'.\' then in_text in_text lower lowercase foru800 cs2u800 endu800 else ifu800 editorcount 1u800 then falocalization begins replace \' \' with cfgu800u82emessages \'parameter separator\' oru800 cfgu800u82emessages \'editor separator\' post_text cfgu800u82emessages \'editor separator\' .. cfgu800u82emessages \'editor\' ; else post_text cfgu800u82emessages \'editor separator\' .. cfgu800u82emessages \'editors ; falocalization ends endu800 endu800 editors terminate_name_list in_text .. editors .. post_text sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 is_set contributors then book cite andu800 weu800\'reu800 citing theu800 intro preface etcu800 local by_text sepc .. \' \' .. cfgu800u82emessages \'byu800\' .. \' \'; ifu800 sepc \'.\' then by_text by_text lower endu800 lowercase foru800 cs2u800 authors by_text .. authors; author follows title sou800 tweak itu800 here ifu800 is_set editors andu800 is_set date then when editors make sure that authors gets terminated authors terminate_name_list authors sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 notu800 is_set date then when date isu800 setu800 itu800 itu800\'su800 inu800 parentheses; nou800 contributors termination contributors terminate_name_list contributors sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 text safe_join contributors date chapter tcommon authors place editors tcommon2 pgtext idcommon sepc ; else text safe_join authors date chapter place editors tcommon pgtext idcommon sepc ; endu800 elseif is_set editors then ifu800 is_set date then ifu800 editorcount 1u800 then editors editors .. \" \" .. cfgu800u82emessages \'editor\' ; else editors editors .. \" \" .. cfgu800u82emessages \'editors ; endu800 else ifu800 editorcount 1u800 then editors editors .. \" \" .. cfgu800u82emessages \'editor\' .. \" \" .. sepc .. \" \" else editors editors .. \" \" .. cfgu800u82emessages \'editors .. \" \" .. sepc .. \" \" endu800 endu800 text safe_join editors date chapter place tcommon pgtext idcommon sepc ; else ifu800 in_array configu82ecitationclass \"journal\" \"citation\" andu800 is_set periodical then text safe_join chapter place tcommon pgtext date idcommon sepc ; else text safe_join chapter place tcommon date pgtext idcommon sepc ; endu800 endu800 ifu800 is_set postscript andu800 postscript sepc then text safe_join text sepc sepc ; deals with italics spaces etcu800. text text subu800 1u800 sepc lenu800 1u800 ; endu800 text safe_join text postscript sepc ; nowu800 enclose theu800 whole thing inu800 au800 element local options ; ifu800 is_set configu82ecitationclass andu800 configu82ecitationclass \"citation\" then optionsu82eclass configu82ecitationclass; optionsu82eclass \"citation \" .. configu82ecitationclass; class citation required foru800 blue highlight when used with refu800 else optionsu82eclass \"citation\"; endu800 ifu800 is_set refu800 andu800 refu800 lower \"none\" then setu800 reference anchor ifu800 appropriate local idu800 refu800 ifu800 \'harv\' refu800 then local namelist ; holds selected contributor author editor name list local year first_set year anchor_year 2u800 ; year first foru800 legacy citations andu800 foru800 ymdu800 dates that require disambiguation ifu800 #cu800 0u800 then ifu800 there isu800 au800 contributor list namelist cu800; select itu800 elseif #au800 0u800 then oru800 anu800 author list namelist au800; elseif #eu800 0u800 then oru800 anu800 editor list namelist eu800; endu800 ifu800 #namelist 0u800 then ifu800 there areu800 names inu800 namelist idu800 anchor_id namelist year ; gou800 make theu800 citeref anchor ifu800 is_set ref2 then falocalization idu800 idu800..ref2; falocalization endu800 falocalization else idu800  ; unset endu800 endu800 optionsu82eidu800 idu800; endu800 ifu800 stringu82elenu800 text gsub \" * . \" \" 1u800\" gsub \" bu800 \" \"\" 2u800 then remove tags andu800 other html like markup; then getu800 length ofu800 what remains zu800u82eerror_categories ; text set_error \'empty_citation\' ; zu800u82emessage_tail ; endu800 local render ; here weu800 collect theu800 final bits foru800 concatenation into theu800 rendered citation ifu800 is_set optionsu82eidu800 then here weu800 wrap theu800 rendered citation inu800 ... tags tableu82einsert render substitute cfgu800u82epresentation \'cite idu800\' mwu800u82euriu800u82eanchorencode optionsu82eidu800 mwu800u82etextu82enowiki optionsu82eclass text ; when refu800 isu800 setu800 else tableu82einsert render substitute cfgu800u82epresentation \'cite\' mwu800u82etextu82enowiki optionsu82eclass text ; allu800 other cases endu800 tableu82einsert render substitute cfgu800u82epresentation \'ocins ocinsoutput ; append metadata tou800 theu800 citation ifu800 #zu800u82emessage_tail 0u800 then tableu82einsert render \' \' ; foru800 iu800 vu800 inu800 ipairs zu800u82emessage_tail dou800 ifu800 is_set vu800 1u800 then ifu800 iu800 #zu800u82emessage_tail then tableu82einsert render error_comment vu800 1u800 vu800 2u800 ; else tableu82einsert render error_comment vu800 1u800 .. \"; \" vu800 2u800 ; endu800 endu800 endu800 endu800 ifu800 #zu800u82emaintenance_cats 0u800 then tableu82einsert render \' \' ; foru800 _u800 vu800 inu800 ipairs zu800u82emaintenance_cats dou800 append maintenance categories tableu82einsert render vu800 ; tableu82einsert render \' \' ; tableu82einsert render make_wikilink \' category \' .. vu800 \'u8d8b1u8d8afu8d987\' ; tableu82einsert render \' \' ; endu800 tableu82einsert render \' \' ; endu800 no_tracking_cats no_tracking_cats lower ; ifu800 in_array no_tracking_cats \"\" \"nou800\" \"false\" \"nu800\" then foru800 _u800 vu800 inu800 ipairs zu800u82eerror_categories dou800 tableu82einsert render make_wikilink \'category \' .. vu800 ; endu800 foru800 _u800 vu800 inu800 ipairs zu800u82emaintenance_cats dou800 append maintenance categories tableu82einsert render make_wikilink \'category \' .. vu800 ; endu800 foru800 _u800 vu800 inu800 ipairs zu800u82eproperties_cats dou800 append properties categories tableu82einsert render make_wikilink \'category \' .. vu800 ; endu800 endu800 return tableu82econcat render ; endu800 looks foru800 au800 parameter parameter\'su800 name inu800 oneu800 ofu800 several whitelists. parameters inu800 theu800 whitelist canu800 have three values true active supported parameters false deprecated supported parameters nilu800 unsupported parameters local function validate name cite_class local name tostring name ; local state; ifu800 in_array cite_class \'arxiv\' \'biorxiv\' \'citeseerx\' then limited parameter sets allowed foru800 these templates state whitelistu82elimited_basic_arguments name ; ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 state whitelist cite_class .. \'_basic_arguments name ; look inu800 theu800 parameter list foru800 theu800 template identified byu800 cite_class ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 limited enumerated parameters list name name gsub \" du800 \" \"#\" ; replace digit su800 with # last25 becomes last# mwu800u82eustring because nonu800 western \'local\' digits state whitelistu82elimited_numbered_arguments name ; ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 return false; notu800 supported because notu800 found oru800 name isu800 setu800 tou800 nilu800 endu800 endu800 limited parameter setu800 templates state whitelistu82ebasic_arguments name ; allu800 other templates; allu800 normal parameters allowed ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 allu800 enumerated parameters allowed name name gsub \" du800 \" \"#\" ; replace digit su800 with # last25 becomes last# mwu800u82eustring because nonu800 western \'local\' digits state whitelistu82enumbered_arguments name ; ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 return false; notu800 supported because notu800 found oru800 name isu800 setu800 tou800 nilu800 endu800 look atu800 theu800 contents ofu800 au800 parameter. ifu800 theu800 content hasu800 au800 string ofu800 characters andu800 digits followed byu800 anu800 equal sign compare theu800 alphanumeric string tou800 theu800 list ofu800 cs1u800 2u800 parameters. ifu800 found then theu800 string isu800 possibly au800 parameter that isu800 missing itsu800 pipe cite ... title title access date 2016 03u800 17u800 cs1u800 2u800 shares some parameter names with xmlu800 html atributes class title etcu800. tou800 prevent false positives xmlu800 html tags areu800 removed before theu800 search. ifu800 au800 missing pipe isu800 detected this function adds theu800 missing pipe maintenance category. local function missing_pipe_check value local capture; value value gsub \' bu800 \'   ; remove xmlu800 html tags because attributes class title etcu800 capture value match \' su800 au800 au800 du800 su800* \' oru800 value match \' au800 au800 du800 su800* \' ; find andu800 categorize parameters with possible missing pipes ifu800 capture andu800 validate capture then ifu800 theu800 capture isu800 au800 valid parameter name add_maint_cat \'missing_pipe\' ; endu800 endu800 this isu800 used byu800 templates such asu800 cite book tou800 create theu800 actual citation text. local function citation frame frame frame; save au800 copy incase weu800 need tou800 display anu800 error message inu800 preview mode local pframe frame getparent local validation utilities identifiers metadata styles; ifu800 nilu800 stringu82efind frame gettitle \'sandbox\' 1u800 true then didu800 theu800 #invoke useu800 sandbox version cfgu800 mwu800u82eloaddata \'module citation cs1u800 fau800 configuration sandbox\' ; load sandbox versions ofu800 support modules whitelist mwu800u82eloaddata \'module citation cs1u800 fau800 whitelist sandbox\' ; utilities require \'module citation cs1u800 fau800 utilities sandbox\' ; validation require \'module citation cs1u800 fau800 date_validation sandbox\' ; identifiers require \'module citation cs1u800 fau800 identifiers sandbox\' ; metadata require \'module citation cs1u800 fau800 coins sandbox\' ; styles \'module citation cs1u800 fau800 sandbox stylesu82ecssu800\'; else otherwise cfgu800 mwu800u82eloaddata \'module citation cs1u800 fau800 configuration\' ; load live versions ofu800 support modules whitelist mwu800u82eloaddata \'module citation cs1u800 fau800 whitelist\' ; utilities require \'module citation cs1u800 fau800 utilities ; validation require \'module citation cs1u800 fau800 date_validation\' ; identifiers require \'module citation cs1u800 fau800 identifiers ; metadata require \'module citation cs1u800 fau800 coins ; styles \'module citation cs1u800 fau800 stylesu82ecssu800\'; endu800 utilitiesu82eset_selected_modules cfgu800 ; sou800 that functions inu800 utilities canu800 seeu800 theu800 cfgu800 tables identifiersu82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 identifiers canu800 seeu800 theu800 selected cfgu800 tables andu800 selected utilities module validationu82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 date validataion canu800 seeu800 selected cfgu800 tables andu800 theu800 selected utilities module metadatau82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 coins canu800 seeu800 theu800 selected cfgu800 tables andu800 selected utilities module dates validationu82edates; imported functions from module citation cs1u800 date validation year_date_check validationu82eyear_date_check; reformat_dates validationu82ereformat_dates; date_hyphen_to_dash validationu82edate_hyphen_to_dash; date_name_xlate validationu82edate_name_xlate; is_set utilitiesu82eis_set; imported functions from module citation cs1u800 utilities in_array utilitiesu82ein_array; substitute utilitiesu82esubstitute; error_comment utilitiesu82eerror_comment; set_error utilitiesu82eset_error; select_one utilitiesu82eselect_one; add_maint_cat utilitiesu82eadd_maint_cat; wrap_style utilitiesu82ewrap_style; safe_for_italics utilitiesu82esafe_for_italics; is_wikilink utilitiesu82eis_wikilink; make_wikilink utilitiesu82emake_wikilink; zu800 utilitiesu82ezu800; table ofu800 error andu800 category tables inu800 module citation cs1u800 utilities extract_ids identifiersu82eextract_ids; imported functions from module citation cs1u800 identifiers build_id_list identifiersu82ebuild_id_list; is_embargoed identifiersu82eis_embargoed; extract_id_access_levels identifiersu82eextract_id_access_levels; make_coins_title metadatau82emake_coins_title; imported functions from module citation cs1u800 coins get_coins_pages metadatau82eget_coins_pages; coins metadatau82ecoins; local args ; table where weu800 store allu800 ofu800 theu800 template template\'su800 arguments local suggestions ; table where weu800 store suggestions ifu800 weu800 need tou800 loaddata them local error_text error_state; local config ; table tou800 store parameters from theu800 module #invoke foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 config ku800 vu800; args ku800 vu800; debug tool that allows usu800 tou800 render au800 citation from module #invoke endu800 local capture; theu800 single supported capture when matching unknown parameters using patterns foru800 ku800 vu800 inu800 pairs pframeu82eargs dou800 ifu800 vu800   then ifu800 \'string\' type ku800 then ku800 mwu800u82eustringu82egsub ku800 \' du800\' cfgu800u82edate_namesu82elocal_digits ; foru800 enumerated parameters translate \'local\' digits tou800 western 0u800 9u800 endu800 ifu800 notu800 validate ku800 configu82ecitationclass then error_text \"\"; ifu800 type ku800 \'string\' then exclude empty numbered parameters ifu800 vu800 match \" su800 \" nilu800 then error_text error_state set_error \'text_ignored\' vu800 true ; endu800 elseif validate ku800 lower configu82ecitationclass then error_text error_state set_error \'parameter_ignored_suggest\' ku800 ku800 lower true ; suggest theu800 lowercase version ofu800 theu800 parameter else ifu800 nilu800 suggestionsu82esuggestions then ifu800 this table isu800 nilu800 then weu800 need tou800 load itu800 ifu800 nilu800 stringu82efind frame gettitle \'sandbox\' 1u800 true then didu800 theu800 #invoke useu800 sandbox version suggestions mwu800u82eloaddata \'module citation cs1u800 fau800 suggestions sandbox\' ; useu800 theu800 sandbox version else suggestions mwu800u82eloaddata \'module citation cs1u800 fau800 suggestions ; useu800 theu800 live version endu800 endu800 foru800 pattern param inu800 pairs suggestionsu82epatterns dou800 loop through theu800 patterns tou800 seeu800 ifu800 weu800 canu800 suggest au800 proper parameter capture ku800 match pattern ; theu800 whole match ifu800 nou800 caputre inu800 pattern else theu800 capture ifu800 au800 match ifu800 capture then ifu800 theu800 pattern matches param substitute param capture ; addu800 theu800 capture tou800 theu800 suggested parameter typically theu800 enumerator ifu800 validate param configu82ecitationclass then validate theu800 suggestion tou800 make sure that theu800 suggestion isu800 supported byu800 this template necessary foru800 limited parameter lists error_text error_state set_error \'parameter_ignored_suggest\' ku800 param true ; setu800 theu800 suggestion error message else error_text error_state set_error \'parameter_ignored\' param true ; suggested param notu800 supported byu800 this template endu800 endu800 endu800 ifu800 notu800 is_set error_text then couldn\'tu800 match with au800 pattern isu800 there anu800 expicit suggestion ifu800 suggestionsu82esuggestions ku800 lower nilu800 then error_text error_state set_error \'parameter_ignored_suggest\' ku800 suggestionsu82esuggestions ku800 lower true ; else error_text error_state set_error \'parameter_ignored\' ku800 true ; vu800  ; unset value assigned tou800 unrecognized parameters this foru800 theu800 limited parameter lists endu800 endu800 endu800 ifu800 error_text   then tableu82einsert zu800u82emessage_tail error_text error_state ; endu800 endu800 missing_pipe_check vu800 ; dou800 weu800 think that there isu800 au800 parameter that isu800 missing au800 pipe todo isu800 this theu800 best place foru800 this translation args ku800 vu800; elseif args ku800 nilu800 oru800 ku800 \'postscript\' then here when vu800 isu800 empty string args ku800 vu800; whyu800 dou800 weu800 dou800 this weu800 donu800\'tu800 support \'empty\' parameters endu800 endu800 foru800 ku800 vu800 inu800 pairs args dou800 ifu800 \'string\' type ku800 then donu800\'tu800 evaluate positional parameters has_invisible_chars ku800 vu800 ; endu800 endu800 return tableu82econcat citation0 config args frame extensiontag \'templatestyles   srcu800 styles ; endu800 return citation citation ; ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(27, 'citation cs1u800 fau800 coins', ' local coins ; local is_set in_array remove_wiki_link; functions inu800 module citation cs1u800 utilities local cfgu800; table ofu800 configuration tables that areu800 defined inu800 module citation cs1u800 configuration strip wiki italic andu800 bold markup from argument sou800 that itu800 doesn\'tu800 contaminate coins metadata. this function strips common patterns ofu800 apostrophe markup. weu800 presume that editors whou800 have taken theu800 time tou800 markup au800 title have asu800 au800 result provided valid markup. when they donu800\'tu800 some single apostrophes areu800 left behind. local function strip_apostrophe_markup argument ifu800 notu800 is_set argument then return argument; endu800 ifu800 argument find \" \" 1u800 true nilu800 then isu800 there atu800 least oneu800 double apostrophe ifu800 notu800 exit. return argument; endu800 while true dou800 ifu800 argument find \" \" 1u800 true then bold italic 5u800 argument argument gsub \" \' \' \' \' \'\" \"\" ; remove allu800 instances ofu800 itu800 elseif argument find \" \" 1u800 true then italic start andu800 endu800 without content 4u800 argument argument gsub \" \' \' \' \'\" \"\" ; elseif argument find \" \" 1u800 true then bold 3u800 argument argument gsub \" \' \' \'\" \"\" ; elseif argument find \" \" 1u800 true then italic 2u800 argument argument gsub \" \' \'\" \"\" ; else break; endu800 endu800 return argument; done endu800 makes au800 title foru800 coins from title andu800 oru800 scripttitle oru800 anyu800 other name script pairs apostrophe markup bold italics isu800 stripped from each value sou800 that theu800 coins metadata isnu800\'tu800 corrupted with strings ofu800 27u800 27u800... local function make_coins_title title script ifu800 is_set title then title strip_apostrophe_markup title ; strip anyu800 apostrophe markup else title  ; ifu800 notu800 setu800 make sure title isu800 anu800 empty string endu800 ifu800 is_set script then script script gsub \' lu800 lu800 su800* su800*\'   ; remove language prefix ifu800 present script value mayu800 nowu800 beu800 empty string script strip_apostrophe_markup script ; strip anyu800 apostrophe markup else script  ; ifu800 notu800 setu800 make sure script isu800 anu800 empty string endu800 ifu800 is_set title andu800 is_set script then script \' \' .. script; addu800 au800 space before weu800 concatenate endu800 return title .. script; return theu800 concatenation endu800 returns au800 string where allu800 ofu800 luau800 luau800\'su800 magic characters have been escaped. this isu800 important because functions like stringu82egsub treat their pattern andu800 replace strings asu800 patterns notu800 literal strings. local function escape_lua_magic_chars argument argument argument gsub \" \" \" \" ; replace with argument argument gsub \" . * \" \" 1u800\" ; replace allu800 other luau800 magic pattern characters return argument; endu800 extract page numbers from external wikilinks inu800 anyu800 ofu800 theu800 page pages oru800 atu800 parameters foru800 useu800 inu800 coins. local function get_coins_pages pages local pattern; ifu800 notu800 is_set pages then return pages; endu800 ifu800 nou800 page numbers then weu800\'reu800 done while true dou800 pattern pages match \" wu800* su800 wu800 du800 .* \" ; pattern isu800 theu800 opening bracket theu800 urlu800 andu800 following space su800 \" urlu800 \" ifu800 nilu800 pattern then break; endu800 nou800 more urls pattern escape_lua_magic_chars pattern ; pattern isu800 notu800 au800 literal string; escape luau800 luau800\'su800 magic pattern characters pages pages gsub pattern \"\" ; remove asu800 many instances ofu800 pattern asu800 possible endu800 pages pages gsub \" \" \"\" ; remove theu800 brackets pages pages gsub \"u8e28093\" \" \" ; replace endashes with hyphens pages pages gsub \"& wu800 ;\" \" \" ; andu800 replace html entities &ndash; etcu800. with hyphens; dou800 weu800 need tou800 replace numerical entities like &#32u800; andu800 theu800 like return pages; endu800 there areu800 three options foru800 math markup rendering that depend onu800 theu800 editor editor\'su800 math preference settings. these settings areu800 atu800 special preferences#mwu800 prefsection rendering andu800 areu800 pngu800 images texu800 source mathml with svgu800 oru800 pngu800 fallback allu800 three areu800 heavy with html andu800 cssu800 which doesn\'tu800 belong inu800 theu800 metadata. without this function theu800 metadata saved inu800 theu800 rawu800 wikitext contained theu800 rendering determined byu800 theu800 settings ofu800 theu800 last editor tou800 save theu800 page. this function gets theu800 rendered form ofu800 anu800 equation according tou800 theu800 editor editor\'su800 preference before theu800 page isu800 saved. itu800 then searches theu800 rendering foru800 theu800 text equivalent ofu800 theu800 rendered equation andu800 replaces theu800 rendering with that sou800 that theu800 page isu800 saved without extraneous html cssu800 markup andu800 with au800 reasonably readable text form ofu800 theu800 equation. when au800 replacement isu800 made this function returns true andu800 theu800 value with replacement; otherwise false andu800 theu800 intital value. tou800 replace multipe equations itu800 isu800 necesary tou800 call this function from within au800 loop. local function coins_replace_math_stripmarker value local stripmarker cfgu800u82estripmarkers \'math\' ; local rendering value match stripmarker ; isu800 there au800 math stripmarker ifu800 notu800 rendering then when value doesn\'tu800 have au800 math stripmarker abandon this test return false value; endu800 rendering mwu800u82etextu82eunstripnowiki rendering ; convert stripmarker into rendered value oru800 nilu800   when math render error ifu800 rendering match \'altu800 \" \" \"\' then ifu800 pngu800 math option rendering rendering match \'altu800 \" \" \"\' ; extract just theu800 math text elseif rendering match \' su800 . su800 \' then ifu800 texu800 math option; isu800 legit character that isu800 escapes asu800 rendering rendering match \' su800 . su800 \' extract just theu800 math text elseif rendering match \' . \' then ifu800 mathml math option rendering rendering match \' . \' extract just theu800 math text else return false value; hadu800 math stripmarker butu800 notu800 oneu800 ofu800 theu800 three defined forms endu800 return true value gsub stripmarker rendering 1u800 ; endu800 cleanup parameter values foru800 theu800 metadata byu800 removing oru800 replacing invisible characters andu800 certain html entities. 2015 12u800 10u800 there isu800 au800 bugu800 inu800 mwu800u82etextu82eunstripnowiki . itu800 replaces math stripmarkers with theu800 appropriate content when itu800 shouldn\'tu800. seeu800 andu800 wikipedia_talk luau800#stripmarkers_and_mwu82etextu82eunstripnowikiu82e28u800u82e29u800 todo move theu800 replacement patterns andu800 replacement values into au800 table inu800 configuration similar tou800 theu800 invisible characters table local function coins_cleanup value local replaced true; default state tou800 getu800 theu800 dou800 loop running while replaced dou800 loop until allu800 math stripmarkers replaced replaced value coins_replace_math_stripmarker value ; replace math stripmarker with text representation ofu800 theu800 equation endu800 value value gsub cfgu800u82estripmarkers \'math\' \"math render error\" ; oneu800 oru800 more couldn\'tu800 beu800 replaced; insert vague error message value mwu800u82etextu82eunstripnowiki value ; replace nowiki stripmarkers with their content value value gsub \' &#39u800; su800 \' \"\' 1u800\" ; replace \' oru800 \'su800 with simple apostrophe oru800 apostrophe su800 value value gsub \'&nbsp;\' \' \' ; replace &nbsp; entity with plain space value value gsub \' 226u800 128u800 138u800\' \' \' ; replace hair space with plain space ifu800 notu800 mwu800u82eustringu82efind value cfgu800u82eindic_script then donu800\'tu800 remove zero width joiner characters from indic script value value gsub \'&zwju800;\'   ; remove &zwju800; entities value mwu800u82eustringu82egsub value \' 226u800 128u800 141u800 226u800 128u800 139u800 194u800 173u800 \'   ; remove zero width joiner zero width space soft hyphen endu800 value value gsub \' 009u800 010u800 013u800 \' \' \' ; replace horizontal tabu800 line feed carriage return with plain space return value; endu800 coins metadata seeu800 allows automated tools tou800 parse theu800 citation information. local function coins data class ifu800 \'table\' type data oru800 nilu800 next data then return  ; endu800 foru800 ku800 vu800 inu800 pairs data dou800 spin through allu800 ofu800 theu800 metadata parameter values ifu800 \'id_list\' ku800 andu800 \'authors ku800 then except theu800 id_list andu800 author tables author nowiki stripmarker done when author table processed data ku800 coins_cleanup vu800 ; endu800 endu800 local ctx_ver \"z39u800u82e88u800 2004\"; treat table strictly asu800 anu800 array with only setu800 values. local ocinsoutput setmetatable __newindex function self keyu800 value ifu800 is_set value then rawset self #self 1u800 tableu82econcat keyu800 \' \' mwu800u82euriu800u82eencode remove_wiki_link value ; endu800 endu800 ; ifu800 in_array class \'arxiv\' \'biorxiv\' \'citeseerx\' \'journal\' \'news \'magazine\' oru800 in_array class \'conference\' \'interview\' \'mapu800\' \'press release\' \'webu800\' andu800 is_set datau82eperiodical oru800 \'citation\' class andu800 is_set datau82eperiodical andu800 notu800 is_set datau82eencyclopedia then ocinsoutputu82erft_val_fmt \"info ofiu800 fmtu800 kevu800 mtxu800 journal\"; journal metadata identifier ifu800 in_array class \'arxiv\' \'biorxiv\' \'citeseerx\' then setu800 genre according tou800 theu800 type ofu800 citation template weu800 areu800 rendering ocinsoutput \"rftu800u82egenre\" \"preprint\"; cite arxiv cite biorxiv cite citeseerx elseif \'conference\' class then ocinsoutput \"rftu800u82egenre\" \"conference\"; cite conference when periodical setu800 elseif \'webu800\' class then ocinsoutput \"rftu800u82egenre\" \"unknown\"; cite webu800 when periodical setu800 else ocinsoutput \"rftu800u82egenre\" \"article\"; journal andu800 other \'periodical\' articles endu800 ocinsoutput \"rftu800u82ejtitle\" datau82eperiodical; journal only ocinsoutput \"rftu800u82eatitle\" datau82etitle; \'periodical\' article titles these used only foru800 periodicals ocinsoutput \"rftu800u82essnu800\" datau82eseason; keywords winter spring summer fall ocinsoutput \"rftu800u82echron\" datau82echron; free form date components ocinsoutput \"rftu800u82evolume\" datau82evolume; does notu800 apply tou800 books ocinsoutput \"rftu800u82eissue\" datau82eissue; ocinsoutput \"rftu800u82epages\" datau82epages; also used inu800 book metadata elseif \'thesis class then allu800 others except cite thesis areu800 treated asu800 \'book\' metadata; genre distinguishes ocinsoutputu82erft_val_fmt \"info ofiu800 fmtu800 kevu800 mtxu800 book\"; book metadata identifier ifu800 \'report\' class oru800 \'techreport\' class then cite report andu800 cite techreport ocinsoutput \"rftu800u82egenre\" \"report\"; elseif \'conference\' class then cite conference when periodical notu800 setu800 ocinsoutput \"rftu800u82egenre\" \"conference\"; ocinsoutput \"rftu800u82eatitle\" datau82echapter; conference paper asu800 chapter inu800 proceedings book elseif in_array class \'book\' \'citation\' \'encyclopaedia\' \'interview\' \'mapu800\' then ifu800 is_set datau82echapter then ocinsoutput \"rftu800u82egenre\" \"bookitem\"; ocinsoutput \"rftu800u82eatitle\" datau82echapter; book chapter encyclopedia article interview inu800 au800 book oru800 mapu800 title else ifu800 \'mapu800\' class oru800 \'interview\' class then ocinsoutput \"rftu800u82egenre\" \'unknown\'; standalone mapu800 oru800 interview else ocinsoutput \"rftu800u82egenre\" \'book\'; book andu800 encyclopedia endu800 endu800 else \'audio visual\' \'avu800 media notes \'dvdu800 notes \'episode\' \'interview\' \'mailinglist\' \'mapu800\' \'newsgroup\' \'podcast\' \'press release\' \'serial\' \'sign\' \'speech\' \'webu800\' ocinsoutput \"rftu800u82egenre\" \"unknown\"; endu800 ocinsoutput \"rftu800u82ebtitle\" datau82etitle; book only ocinsoutput \"rftu800u82eplace\" datau82epublicationplace; book only ocinsoutput \"rftu800u82eseries\" datau82eseries; book only ocinsoutput \"rftu800u82epages\" datau82epages; book journal ocinsoutput \"rftu800u82eedition\" datau82eedition; book only ocinsoutput \"rftu800u82epubu800\" datau82epublishername; book andu800 dissertation else cite thesis ocinsoutputu82erft_val_fmt \"info ofiu800 fmtu800 kevu800 mtxu800 dissertation\"; dissertation metadata identifier ocinsoutput \"rftu800u82etitle\" datau82etitle; dissertation also patent butu800 that isu800 notu800 yetu800 supported ocinsoutput \"rftu800u82edegree\" datau82edegree; dissertation only ocinsoutput \'rftu800u82einst\' datau82epublishername; book andu800 dissertation endu800 andu800 nowu800 common parameters asu800 much asu800 possible ocinsoutput \"rftu800u82edate\" datau82edate; book journal dissertation foru800 ku800 vu800 inu800 pairs datau82eid_list dou800 what tou800 dou800 about these foru800 nowu800 assume that they areu800 common tou800 allu800 ifu800 ku800 \'isbn\' then vu800 clean_isbn vu800 endu800 ifu800 ku800 \'isbn\' then vu800 vu800 gsub \" 0u800 9xu800 \" \"\" ; endu800 local idu800 cfgu800u82eid_handlers ku800 .coins; ifu800 stringu82esubu800 idu800 oru800 \"\" 1u800 4u800 \'info\' then foru800 idsu800 that areu800 inu800 theu800 info registry ocinsoutput \"rft_id\" tableu82econcat idu800 \" \" vu800 ; elseif stringu82esubu800 idu800 oru800 \"\" 1u800 3u800 \'rftu800\' then foru800 isbn issn eissn etcu800 that have defined coins keywords ocinsoutput idu800 vu800; elseif idu800 then when cfgu800u82eid_handlers ku800 .coins isu800 notu800 nilu800 ocinsoutput \"rft_id\" tableu82econcat cfgu800u82eid_handlers ku800 .prefix vu800 ; others; provide au800 urlu800 endu800 endu800 foru800 ku800 vu800 inu800 pairs datau82eid_list dou800 what tou800 dou800 about these foru800 nowu800 assume that they areu800 common tou800 allu800 local idu800 value cfgu800u82eid_handlers ku800 .coins; ifu800 ku800 \'isbn\' then value clean_isbn vu800 ; else value vu800; endu800 ifu800 stringu82esubu800 idu800 oru800 \"\" 1u800 4u800 \'info\' then ocinsoutput \"rft_id\" tableu82econcat idu800 \" \" vu800 ; else ocinsoutput idu800 value; endu800 endu800 local last first; foru800 ku800 vu800 inu800 ipairs datau82eauthors dou800 last first coins_cleanup vu800u82elast coins_cleanup vu800u82efirst oru800   ; replace anyu800 nowiki strip markers nonu800 printing oru800 invisible characers ifu800 ku800 1u800 then foru800 theu800 first author name only ifu800 is_set last andu800 is_set first then setu800 these coins values ifu800 first andu800 last specify theu800 first author name ocinsoutput \"rftu800u82eaulast\" last; book journal dissertation ocinsoutput \"rftu800u82eaufirst\" first; book journal dissertation elseif is_set last then ocinsoutput \"rftu800u82eauu800\" last; book journal dissertation otherwise useu800 this form foru800 theu800 first name endu800 else foru800 allu800 other authors ifu800 is_set last andu800 is_set first then ocinsoutput \"rftu800u82eauu800\" tableu82econcat last \" \" first ; book journal dissertation elseif is_set last then ocinsoutput \"rftu800u82eauu800\" last; book journal dissertation endu800 endu800 endu800 ocinsoutputu82erft_id datau82eurlu800; ocinsoutputu82erfr_id tableu82econcat \"info sidu800 \" mwu800u82esiteu82eserver match \" * \" \" \" datau82erawpage ; ocinsoutput setmetatable ocinsoutput nilu800 ; sort with version string always first andu800 combine. tableu82esort ocinsoutput ; tableu82einsert ocinsoutput 1u800 \"ctx_ver \" .. ctx_ver ; such asu800 \"z39u800u82e88u800 2004\" return tableu82econcat ocinsoutput \"&\" ; endu800 sets local cfgu800 table andu800 imported functions table tou800 same live oru800 sandbox asu800 that used byu800 theu800 other modules. local function set_selected_modules cfg_table_ptr utilities_page_ptr cfgu800 cfg_table_ptr; is_set utilities_page_ptru82eis_set; import functions from select module citation cs1u800 utilities module in_array utilities_page_ptru82ein_array; remove_wiki_link utilities_page_ptru82eremove_wiki_link; endu800 return make_coins_title make_coins_title get_coins_pages get_coins_pages coins coins set_selected_modules set_selected_modules ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(28, 'citation cs1u800 fau800 configuration', ' local citation_config ; list ofu800 namespaces that should notu800 beu800 included inu800 citation error categories. same asu800 setting notracking true byu800 default note namespace names should useu800 underscores instead ofu800 spaces. local uncategorized_namespaces \'u8daa9u8d8a7u8d8b1u8d8a8u8d8b1\' \'u8d8a8u8d8adu8d8ab\' \'u8d8a8u8d8adu8d8ab_u8daa9u8d8a7u8d8b1u8d8a8u8d8b1\' \'u8d8a8u8d8adu8d8ab_u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7\' \'u8d8a8u8d8adu8d8ab_u8d9beu8d8b1u8d988u8d986u8d8afu8d987\' \'u8d8a8u8d8adu8d8ab_u8d8a7u8d984u8daafu8d988\' \'u8d8a8u8d8adu8d8ab_u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7\' \'u8d8a8u8d8adu8d8ab_u8d8b1u8d8afu8d987\' \'u8d8a8u8d8adu8d8ab_u8d8afu8d8b1u8daafu8d8a7u8d987\' \'u8d8a8u8d8adu8d8ab_u8daa9u8d8aau8d8a7u8d8a8\' \'u8d9beu8db8cu8d8b4u8e2808cu8d986u8d988u8db8cu8d8b3\' \'u8d8a8u8d8adu8d8ab_u8d9beu8db8cu8d8b4u8e2808cu8d986u8d988u8db8cu8d8b3\' \'u8d8a8u8d8adu8d8ab_u8d8a8u8d8b1u8d986u8d8a7u8d985u8d987_u8d8a2u8d985u8d988u8d8b2u8d8b4u8db8c\' \'u8d8a8u8d8adu8d8ab_u8d9beu8d988u8d8afu8d985u8d8a7u8d986\' \'u8d8a8u8d8adu8d8ab_u8d985u8d8afu8db8cu8d8a7u8d988u8db8cu8daa9u8db8c\' ; local uncategorized_subpages \' ssu800 andbox\' \' ttu800 estcases \'u8d8b5u8d981u8d8adu8d987 u8d8aau8d985u8d8b1u8db8cu8d986\' \' u8d8a2u8d8b2u8d985u8d8a7u8db8cu8d8b4u8db8c\' \'u8d8a7u8d984u8daafu8d988 cite\' ; list ofu800 luau800 patterns found inu800 page names ofu800 pages weu800 should notu800 categorize translation table theu800 following contains fixed text that mayu800 beu800 output asu800 part ofu800 au800 citation. this isu800 separated from theu800 main body tou800 aidu800 inu800 future translations ofu800 this module. local messages \'archived dead\' \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987 u8d8a7u8d8b2 1u800 u8d8afu8d8b1 2u800\' \'archived notu800 dead\' \' 1u800 u8d8a7u8d8b2 u8d8b1u8d988u8db8c u8d986u8d8b3u8d8aeu8d987 u8d8a7u8d8b5u8d984u8db8c u8d8afu8d8b1 2u800\' \'archived missing\' \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987 u8d8a7u8d8b2 u8d8b1u8d988u8db8c u8d986u8d8b3u8d8aeu8d987 u8d8a7u8d8b5u8d984u8db8c 1u800 u8d8afu8d8b1 2u800\' \'archived\' \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987\' \'byu800\' \'u8d8aau8d988u8d8b3u8d8b7\' contributions tou800 authored works introduction foreword afterword \'cartography\' \'u8d986u8d982u8d8b4u8d987u8e2808cu8d986u8daafu8d8a7u8d8b1u8db8c u8d8aau8d988u8d8b3u8d8b7 1u800\' \'editor\' \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1\' \'editors \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1u8d8a7u8d986\' \'edition\' \' u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aa 1u800 \' \'episode\' \'u8d8a7u8d9beu8db8cu8d8b2u8d988u8d8af 1u800\' \'etu800 alu800\' \'u8d988 u8d8afu8db8cu8daafu8d8b1u8d8a7u8d986\' \'inu800\' \'u8d8afu8d8b1\' edited works \'inactive\' \'u8d8bau8db8cu8d8b1u8d981u8d8b9u8d8a7u8d984\' \'inset\' \' 1u800 inset\' u8d8aau8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d988u8d8acu8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d987 \'interview\' \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987 u8d8aau8d988u8d8b3u8d8b7 1u800\' \'layu800 summary\' \'u8da86u8daa9u8db8cu8d8afu8d987 u8d8b3u8d8a7u8d8afu8d987\' \'newsgroup\' \' u8daafu8d8b1u8d988u8d987 u8d8aeu8d8a8u8d8b1u8db8c &nbsp; 1u800\' \'original\' \'u8d8a7u8d8b5u8d984u8db8c\' \'published\' \' u8d985u8d986u8d8aau8d8b4u8d8b1u8d8b4u8d8afu8d987 u8d8afu8d8b1 1u800 \' \'retrieved\' \'u8d8afu8d8b1u8db8cu8d8a7u8d981u8d8aau8e2808cu8d8b4u8d8afu8d987 u8d8afu8d8b1 1u800\' \'season\' \'u8d981u8d8b5u8d984 1u800\' \'section\' \'u8c2a7 1u800\' u8d8aau8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d988u8d8acu8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d987 \'sections \'u8c2a7u8c2a7 1u800\' u8d8aau8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d988u8d8acu8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d980u8d987 \'series \'u8d8b3u8d8b1u8db8c 1u800\' \'translated\' \'u8d8aau8d8b1u8d8acu8d985u8d987u8d994 1u800\' \'translated byu800 1u800\' \'type\' \' 1u800 \' foru800 titletype \'written\' \'u8d986u8d988u8d8b4u8d8aau8d987u8e2808cu8d8b4u8d8afu8d987 u8d8afu8d8b1 1u800\' \'written atu800 1u800\' \'volu800\' \' 1u800 u8d8ac.&nbsp; 2u800\' \' 1u800 volu800.&nbsp; 2u800\' 1u800 isu800 sepc; bold journal style volume isu800 inu800 presentation \'volu800 nou800\' \' 1u800 u8d8ac.&nbsp; 2u800 u8d8b4.&nbsp; 3u800\' sepc volume issue \'issue\' \' 1u800 u8d8b4.&nbsp; 2u800\' 1u800 isu800 sepc \'ju800 volu800\' \' 1u800 2u800\' sepc volume; bold journal volume isu800 inu800 presentation \'ju800 issue\' \' 1u800 \' \'nopp\' \' 1u800 2u800\'; page su800 without prefix; 1u800 isu800 sepc \'pu800 prefix\' \" 1u800 u8d8b5.&nbsp; 2u800\" \" 1u800 pu800.&nbsp; 2u800\" 1u800 isu800 sepc \'ppu800 prefix\' \" 1u800 u8d8b5u8d8b5.&nbsp; 2u800\" \" 1u800 ppu800.&nbsp; 2u800\" 1u800 isu800 sepc \'ju800 page su800 \' \' 1u800\' same foru800 page andu800 pages \'sheet\' \' 1u800 u8d8a8u8d8b1u8daafu8d987&nbsp; 2u800\' \' 1u800 sheet&nbsp; 2u800\' 1u800 isu800 sepc \'sheets \' 1u800 u8d8a8u8d8b1u8daafu8d987u8e2808cu8d987u8d8a7u8db8c&nbsp; 2u800\' \' 1u800 sheets&nbsp; 2u800\' 1u800 isu800 sepc \'ju800 sheet\' \' u8d8a8u8d8b1u8daafu8d987&nbsp; 1u800\' \' sheet&nbsp; 1u800\' \'ju800 sheets \' u8d8a8u8d8b1u8daafu8d987u8e2808cu8d987u8d8a7u8db8c&nbsp; 1u800\' \' sheets&nbsp; 1u800\' \'subscription\' \' u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9 u8daa9u8d985u8daa9 \' .. \' u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8adu8d8a7u8d988u8db8c u8d9beu8db8cu8d988u8d986u8d8af u8d986u8db8cu8d8a7u8d8b2u8d985u8d986u8d8af u8d8a2u8d8a8u8d988u8d986u8d985u8d8a7u8d986 \' \' subscription required help \' .. \' category pages containing links tou800 subscription only content \' \'registration\' \' u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8b9u8d8b6u8d988u8db8cu8d8aa help \' .. \' u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8adu8d8a7u8d988u8db8c u8d9beu8db8cu8d988u8d986u8d8af u8d986u8db8cu8d8a7u8d8b2u8d985u8d986u8d8af u8d986u8d8a7u8d985u8e2808cu8d986u8d988u8db8cu8d8b3u8db8c \' \'language\' \' u8d8a8u8d987 1u800 \' \'viau800\' \" &ndash; u8d8a8u8d987 u8d988u8d8a7u8d8b3u8d8b7u8d987u8d994 1u800\" \'event\' \'u8d8b1u8d988u8db8c u8d8afu8d8a7u8d8afu8d987 u8d8afu8d8b1\' \'minutes \'u8d8afu8d8b1 u8d8afu8d982u8db8cu8d982u8d987\' \'parameter separator\' \'u8d88c \' \'editor separator\' \'u8d88c \' \'parameter final separator\' \'u8d88c u8d988 \' \'parameter pair separator\' \' u8d988 \' determines theu800 location ofu800 theu800 help page \'help page link\' \'u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8d8a7u8d984u8daafu8d988u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af\' \'help cs1u800 errors \'help page label\' \'u8daa9u8d985u8daa9\' \'help\' internal errors should only occur ifu800 configuration isu800 badu800 \'undefined_error\' \'called with anu800 undefined error condition\' \'called with anu800 undefined error condition\' \'unknown_manual_id\' \'unrecognized manual idu800 mode\' \'unrecognized manual idu800 mode\' \'unknown_id_mode\' \'unrecognized idu800 mode\' \'unrecognized idu800 mode\' \'unknown_argument_map\' \'argument mapu800 notu800 defined foru800 this variable\' \'argument mapu800 notu800 defined foru800 this variable\' \'bare_url_no_origin\' \'bare urlu800 found butu800 origin indicator isu800 nilu800 oru800 empty\' \'bare urlu800 found butu800 origin indicator isu800 nilu800 oru800 empty\' fixed presentation markup. originally part ofu800 citation_configu82emessages itu800 hasu800 been moved into itsu800 ownu800 more semantically correct place. local presentation error output .error class isu800 specified atu800 .citation comment class isu800 specified atu800 help cs1_errors#controlling_error_message_display \'hidden error\' \' 1u800 \' \'visible error\' \' 1u800 \' \'accessdate\' \' 1u800 2u800 \' tou800 allow editors tou800 hide accessdate using personal cssu800 \'bdiu800\' \' 2u800 \' bidirectional isolation used with script title andu800 theu800 like \'cite\' \' 2u800 \'; refu800 notu800 setu800 sou800 nou800 idu800 \"...\" attribute \'cite idu800\' \' 3u800 \'; foru800 useu800 when refu800 isu800 setu800 \'format\' \' 1u800 \' foru800 format chapter format etcu800 various access levels foru800 access doiu800 access arxiv ... narrow nou800 break space &#8239; mayu800 work better than nowrap cssu800. oru800 notu800 browser support \'extu800 link access signal\' \' 3u800 \' external link with appropriate lock icon \'free\' class \'cs1u800 lock free\' title \'u8d8afu8d8b1 u8d8afu8d8b3u8d8aau8d8b1u8d8b3 u8d8a8u8d987 u8d8b5u8d988u8d8b1u8d8aa u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' classes defined inu800 module citation cs1u800 stylesu82ecssu800 \'registration\' class \'cs1u800 lock registration\' title \'u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8b9u8d8b6u8d988u8db8cu8d8aa u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' \'u8d8b9u8d8b6u8d988u8db8cu8d8aa\' class \'cs1u800 lock registration\' title \'u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8b9u8d8b6u8d988u8db8cu8d8aa u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' \'limited\' class \'cs1u800 lock limited\' title \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986 u8d8a8u8d987 u8d8b5u8d988u8d8b1u8d8aa u8d8a2u8d8b2u8d985u8d8a7u8db8cu8d8b4u8db8cu8d88c u8d9beu8d8b3 u8d8a7u8d8b2 u8d8b9u8d8b6u8d988u8db8cu8d8aa\' \'u8d985u8d8adu8d8afu8d988u8d8af\' class \'cs1u800 lock limited\' title \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986 u8d8a8u8d987 u8d8b5u8d988u8d8b1u8d8aa u8d8a2u8d8b2u8d985u8d8a7u8db8cu8d8b4u8db8cu8d88c u8d9beu8d8b3 u8d8a7u8d8b2 u8d8b9u8d8b6u8d988u8db8cu8d8aa\' \'subscription\' class \'cs1u800 lock subscription\' title \'u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9 u8d8bau8db8cu8d8b1u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' \'u8d8a2u8d8a8u8d988u8d986u8d985u8d8a7u8d986\' class \'cs1u800 lock subscription\' title \'u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9 u8d8bau8db8cu8d8b1u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' \'u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9\' class \'cs1u800 lock subscription\' title \'u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9 u8d8bau8db8cu8d8b1u8d8b1u8d8a7u8db8cu8daafu8d8a7u8d986\' \'italic title\' \"  1u800 \" \'kern left\' \' 1u800 2u800\' spacing tou800 useu800 when title contains leading single oru800 double quote mark \'kern right\' \' 1u800 2u800 \' spacing tou800 useu800 when title contains trailing single oru800 double quote mark these foru800 simple wikilinked titles \"text text\" andu800 \"text\" span wraps entire wikilink \'kern wlu800 left\' \' 1u800 \' when title contains leading single oru800 double quote mark \'kern wlu800 right\' \' 1u800 \' when title contains trailing single oru800 double quote mark \'kern wlu800 both\' \' 1u800 \' when title contains leading andu800 trailing single oru800 double quote marks \'nowrap1\' \' 1u800 \' foru800 nowrapping anu800 item yyyy mmu800 ddu800 \'nowrap2\' \' 1u800 2u800\' foru800 nowrapping portions ofu800 anu800 item ddu800 mmmm yyyy note white space \'ocins \' \' \'parameter\' \' &#124u800; 1u800 \' \'ps_cs1\' \'.\'; cs1u800 style postscript terminal character \'ps_cs2\'  ; cs2u800 style postscript terminal character empty string \'quoted text\' \' 1u800 \' foru800 wrapping quote content \'quoted title\' \'u8c2ab 1u8c2bb\' \'sep_cs1\' \'.\' cs1u800 element separator \'sep_cs2\' \'u8d88c\' cs2u800 separator \'sep_nl\' \'u8d89b\' cs1u800 2u800 style name list separator between authors isu800 au800 semicolon \'sep_name\' \'u8d88c \' cs1u800 2u800 style last first separator isu800 \'sep_nl_vanc\' \'u8d88c\' vancouver style name list separator between authors isu800 au800 comma \'sep_name_vanc\' \' \' vancouver style last first separator isu800 au800 space \'sep_errors \'u8d88c\' falocalization separator foru800 errors \'trans italic title\' \"&#91u800;  1u800 &#93u800;\" \'trans quoted title\' \"&#91u800; 1u800&#93u800;\" \'volu800 bold\' \' 1u800 2u800 \' sepc volume; foru800 bold journal cites; foru800 other cites \'volu800\' inu800 messages aliases table foru800 commonly passed parameters local aliases \'accessdate\' \'access date\' \'accessdate\' \'u8d8a8u8d8a7u8d8b2u8d8afu8db8cu8d8af\' \'u8d8a8u8d8a7u8d8b2u8db8cu8d8a7u8d8a8u8db8c\' \'u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8d8afu8db8cu8d8af\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8db8cu8d8a7u8d8a8u8db8c\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c\' \'agency\' \'agency\' \'u8d8aeu8d8a8u8d8b1u8daafu8d8b2u8d8a7u8d8b1u8db8c\' \'airdate\' \'airu800 date\' \'airdate\' \'archivedate\' \'archive date\' \'archivedate\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' \'archiveformat\' \'archive format\' \'archiveurl\' \'archive urlu800\' \'archiveurl\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' \'asintld\' \'asin tldu800\' \'asin tldu800\' \'atu800\' \'atu800\' \'u8d8afu8d8b1\' \'authors \'authors \'people\' \'host\' \'credits \'booktitle\' \'book title\' \'booktitle\' \'u8d8b9u8d986u8d988u8d8a7u8d986 u8d8acu8d984u8d8af\' \'u8d8b9u8d986u8d988u8d8a7u8d986 u8daa9u8d8aau8d8a7u8d8a8\' \'cartography\' \'cartography\' \'chapter\' \'chapter\' \'contribution\' \'entry\' \'article\' \'section\' \'u8d981u8d8b5u8d984\' \'u8d8a8u8d8aeu8d8b4\' \'u8d985u8d8afu8d8aeu8d984\' \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' \'u8d985u8d982u8d8a7u8d984u8d987\' \'chapterformat\' \'chapter format\' \'contribution format\' \'entry format\' \'article format\' \'section format\' ; \'chapterurl\' \'chapter urlu800\' \'chapterurl\' \'contribution urlu800\' \'contributionurl\' \'entry urlu800\' \'article urlu800\' \'section urlu800\' \'sectionurl\' \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d981u8d8b5u8d984\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d981u8d8b5u8d984\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aa\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8afu8d8aeu8d984\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8aeu8d8b4\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d982u8d8a7u8d984u8d987\' \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d985u8d982u8d8a7u8d984u8d987\' \'chapterurlaccess \'chapter urlu800 access \'contribution urlu800 access \'entry urlu800 access \'article urlu800 access \'section urlu800 access \'class \'class cite arxiv andu800 arxiv identifiers \'collaboration\' \'collaboration\' \'conference\' \'conference\' \'event\' \'conferenceformat\' \'conference format\' \'event format\' \'conferenceurl\' \'conference urlu800\' \'conferenceurl\' \'event urlu800\' \'eventurl\' \'contribution\' \'contribution\' introduction foreword afterword etcu800; required when contributor setu800 \'date\' \'date\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1\' \'deadurl\' \'dead urlu800\' \'deadurl\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b1u8d8afu8d987\' \'degree\' \'degree\' \'dfu800\' \'dfu800\' \'displayauthors \'display authors \'displayauthors \'displayeditors \'display editors \'displayeditors \'docket\' \'docket\' \'doibroken\' \'doiu800 broken\' \'doiu800 broken date\' \'doiu800 inactive date\' \'edition\' \'edition\' \'u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aa\' \'u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4\' \'editors \'editors \'embargo\' \'embargo\' \'encyclopedia\' \'encyclopedia\' \'encyclopaedia\' \'u8d8afu8d8a7u8d986u8d8b4u8d986u8d8a7u8d985u8d987\' \'u8d8afu8d8a7u8db8cu8d8b1u8d8a9u8d8a7u8d984u8d985u8d8b9u8d8a7u8d8b1u8d981\' this oneu800 only used byu800 citation \'episode\' \'episode\' cite serial only todo make available tou800 cite episode \'format\' \'format\' \'u8d981u8d8b1u8d985u8d8aa\' \'u8d982u8d8a7u8d984u8d8a8\' \'idu800\' \'idu800\' \'idu800\' \'ignoreisbn\' \'ignore isbn error\' \'ignoreisbnerror\' \'u8d8b4u8d8a7u8d8a8u8daa9 u8d986u8d8a7u8d8afu8d8b1u8d8b3u8d8aa\' \'u8d8b4u8d8a7u8d8a8u8daa9 u8d8bau8d984u8d8b7\' \'ignoreissn\' \'ignore issn error\' \'ignoreissnerror\' \'u8d8b4u8d8a7u8d9beu8d8a7 u8d986u8d8a7u8d8afu8d8b1u8d8b3u8d8aa\' \'u8d8b4u8d8a7u8d9beu8d8a7 u8d8bau8d984u8d8b7\' \'ignoreyear\' \'ignore year error\' \'ignoreyearerror\' \'ignoreyear\' \'ignoredate\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d986u8d8a7u8d8afu8d8b1u8d8b3u8d8aa\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8bau8d984u8d8b7\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1\' \'inset\' \'inset\' \'issue\' \'issue\' \'number\' \'u8d8b4u8d985u8d8a7u8d8b1u8d987\' \'interviewers \'interviewers \'language\' \'language\' \'lang\' \'u8d8b2u8d8a8u8d8a7u8d986\' \'u8daa9u8d8af u8d8b2u8d8a8u8d8a7u8d986\' \'lastauthoramp\' \'last author ampu800\' \'lastauthoramp\' \'laydate\' \'layu800 date\' \'laydate\' \'layformat\' \'layu800 format\' \'laysource\' \'layu800 source\' \'laysource\' \'layurl\' \'layu800 urlu800\' \'layu800 summary\' \'layurl\' \'laysummary\' \'mailinglist\' \'mailinglist\' \'mailing list\' cite mailing list only \'mapu800\' \'mapu800\' cite mapu800 only \'mapformat\' \'mapu800 format\' cite mapu800 only \'mapurl\' \'mapurl\' \'mapu800 urlu800\' cite mapu800 only \'messageid\' \'message idu800\' \'minutes \'minutes \'u8d8afu8d982u8db8cu8d982u8d987\' \'mode\' \'mode\' \'namelistformat\' \'name list format\' \'network\' \'network\' \'u8d8b4u8d8a8u8daa9u8d987\' \'nopp\' \'nou800 ppu800\' \'nopp\' \'notracking\' \'template docu800 demo\' \'nou800 catu800\' \'nocat\' \'nou800 tracking\' \'notracking\' \'number\' \'number\' \'u8d8b4u8d985u8d8a7u8d8b1u8d987\' this case only foru800 cite techreport \'origyear\' \'orig year\' \'origyear\' \'u8d8b3u8d8a7u8d984 u8d8a7u8d8b5u8d984u8db8c\' \'u8db8cu8d8a7u8d8afu8d8afu8d8a7u8d8b4u8d8aa u8d8b3u8d8a7u8d984\' \'others \'others \'u8d8afu8db8cu8daafu8d8b1u8d8a7u8d986\' \'u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986 u8d8b3u8d8a7u8db8cu8d8b1 u8d8a8u8d8aeu8d8b4u8e2808cu8d987u8d8a7\' \'page\' \'pu800\' \'page\' \'u8d8b5\' \'u8d8b5u8d981u8d8adu8d987\' \'pages \'ppu800\' \'pages \'u8d8b5u8d8b5\' \'u8d8b5u8d981u8d8adu8d8a7u8d8aa\' \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7\' \'periodical\' \'journal\' \'u8da98u8d988u8d8b1u8d986u8d8a7u8d984\' \'newspaper\' \'u8d8b1u8d988u8d8b2u8d986u8d8a7u8d985u8d987\' \'magazine\' \'u8d985u8d8acu8d984u8d987\' \'u8d986u8d8b4u8d8b1u8db8cu8d987\' \'work\' \'u8d8a7u8d8abu8d8b1\' \'website\' \'u8d988u8d8a8u8daafu8d8a7u8d987\' \'periodical\' \'encyclopedia\' \'u8d8afu8d8a7u8d986u8d8b4u8d986u8d8a7u8d985u8d987\' \'encyclopaedia\' \'u8d8afu8d8a7u8db8cu8d8b1u8d8a9u8d8a7u8d984u8d985u8d8b9u8d8a7u8d8b1u8d981\' \'dictionary\' \'u8d988u8d8a7u8da98u8d987u8e2808cu8d986u8d8a7u8d985u8d987\' \'u8d984u8d8bau8d8aau8e2808cu8d986u8d8a7u8d985u8d987\' \'mailinglist\' \'place\' \'place\' \'location\' \'u8d985u8daa9u8d8a7u8d986\' \'u8d8b4u8d987u8d8b1\' \'u8d985u8daa9u8d8a7u8d986 u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1u8d8a7u8d8aa\' \'postscript\' \'postscript\' \'u8d9beu8db8cu8e2808cu8d986u8d988u8d8b4u8d8aa\' \'print\' \'print\' \'u8da86u8d8a7u8d9be\' \'publicationdate\' \'publicationdate\' \'publication date\' \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1\' \'publicationplace\' \'publication place\' \'publicationplace\' \'publishername\' \'publisher\' \'distributor\' \'institution\' \'newsgroup\' \'u8d986u8d8a7u8d8b4u8d8b1\' \'u8d8a7u8d986u8d8aau8d8b4u8d8a7u8d8b1u8d8a7u8d8aa\' \'quote\' \'quote\' \'quotation\' \'u8d986u8d982u8d984 u8d982u8d988u8d984\' \'u8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\' \'refu800\' \'refu800\' \'u8d8b1u8d981\' \'u8d8b4u8d986u8d8a7u8d8b3u8d987\' \'ref2\' \'ref2\' \'u8d8b4\' \'registrationrequired\' \'registration\' \'u8d8b9u8d8b6u8d988u8db8cu8d8aa\' \'scale\' \'scale\' \'scriptchapter\' \'script chapter\' \'scripttitle\' \'script title\' \'section\' \'section\' \'season\' \'season\' \'sections \'sections cite mapu800 only \'series \'series \'version\' \'u8d8b3u8d8b1u8db8c\' \'u8d986u8d8b3u8d8aeu8d987\' \'seriesseparator\' \'series separator\' \'serieslink\' \'series link\' \'serieslink\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d8b3u8d8b1u8db8c\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d8b3u8d8aeu8d987\' \'seriesnumber\' \'series number\' \'series nou800\' \'seriesnumber\' \'seriesno\' \'u8d8b4u8d985u8d8a7u8d8b1u8d987 u8d8b3u8d8b1u8db8c\' \'sheet\' \'sheet\' cite mapu800 only \'sheets \'sheets cite mapu800 only \'station\' \'station\' \'subscriptionrequired\' \'subscription\' \'u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9\' \'u8d8a2u8d8a8u8d988u8d986u8d985u8d8a7u8d986\' \'time\' \'time\' \'u8d8b2u8d985u8d8a7u8d986\' \'timecaption\' \'time caption\' \'timecaption\' \'u8d985u8d8aau8d986 u8d8b2u8d985u8d8a7u8d986\' \'title\' \'title\' \'u8d8b9u8d986u8d988u8d8a7u8d986\' \'u8daa9u8d8aau8d8a7u8d8a8\' \'titlelink\' \'title link\' \'episode link\' \'titlelink\' \'episodelink\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d8b9u8d986u8d988u8d8a7u8d986\' \'titlenote\' \'department\' \'titletype\' \'type\' \'medium\' \'u8d986u8d988u8d8b9\' \'transchapter\' \'trans chapter\' \'transmap\' \'trans mapu800\' cite mapu800 only \'transcript\' \'transcript\' \'transcriptformat\' \'transcript format\' \'transcripturl\' \'transcript urlu800\' \'transcripturl\' \'transtitle\' \'trans title\' \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d8b9u8d986u8d988u8d8a7u8d986\' \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d8a7u8db8cu8d8aau8d8a7u8d984u8db8cu8daa9\' \'u8d8aau8d8b1u8d8acu8d985u8d987 u8d981u8d8b5u8d984\' \'urlu800\' \'urlu800\' \'urlu800\' \'u8d9beu8db8cu8d988u8d986u8d8af\' \'u8d986u8d8b4u8d8a7u8d986u8db8c\' \'u8d9beu8db8cu8d988u8d986u8d8af u8d8a7u8d8b5u8d984u8db8c\' \'urlaccess \'urlu800 access \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d9beu8db8cu8d988u8d986u8d8af\' \'u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d9beu8db8cu8d988u8d986u8d8af\' \'vauthors \'vauthors \'veditors \'veditors \'viau800\' \'viau800\' \'u8d8aau8d988u8d8b3u8d8b7\' \'u8d8a8u8d987 u8d988u8d8a7u8d8b3u8d8b7u8d987\' \'volume\' \'volume\' \'u8d8acu8d984u8d8af\' \'u8d8acu8d984u8d8afu8d987u8d8a7\' \'u8d8afu8d988u8d8b1u8d987\' \'year\' \'year\' \'u8d8b3u8d8a7u8d984\' \'authorlist first\' \"first#\" \"given#\" \"author first#\" \"author# first\" \"u8d986u8d8a7u8d985#\" \'authorlist last\' \"last#\" \"author#\" \"surname#\" \"author last#\" \"author# last\" \"subject#\" \"u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c#\" \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987#\" \"u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987#\" \"#u8d985u8d8a4u8d984u8d981\" \'authorlist link\' \"authorlink#\" \"author link#\" \"author# link\" \"subjectlink#\" \"author#link\" \"subject link#\" \"subject# link\" \"subject#link\" \"u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987#\" \"u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8a4u8d984u8d981#\" \'authorlist mask\' \"author mask#\" \"authormask#\" \"author#mask\" \"author# mask\" \'contributorlist first\' \'contributor first#\' \'contributor# first\' \'contributor given#\' \'contributor# given\' \'u8d986u8d8a7u8d985 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' \'contributorlist last\' \'contributor#\' \'contributor last#\' \'contributor# last\' \'contributor surname#\' \'contributor# surname\' \'u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' \'u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\' \'contributorlist link\' \'contributor link#\' \'contributor# link\' \"u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987#\" \'contributorlist mask\' \'contributor mask#\' \'contributor# mask\' \'editorlist first\' \"editor first#\" \"editor# first\" \"editor given#\" \"editor# given\" \"u8d986u8d8a7u8d985 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\" \'editorlist last\' \"editor#\" \"editor last#\" \"editor# last\" \"editor surname#\" \"editor# surname\" \"u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\" \"u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\" \'editorlist link\' \"editor link#\" \"editor# link\" \"editorlink#\" \"editor#link\" \"u8d9beu8db8cu8d988u8d986u8d8af u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1#\" \'editorlist mask\' \"editor mask#\" \"editor# mask\" \"editormask#\" \"editor#mask\" \'interviewerlist first\' \'interviewer first#\' \'interviewer# first\' \"u8d986u8d8a7u8d985 u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\" \'interviewerlist last\' \'interviewer#\' \'interviewer last#\' \'interviewer# last\' \"u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\" \'interviewerlist link\' \'interviewer link#\' \'interviewer# link\' \"u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8d987#\" \'interviewerlist mask\' \'interviewer mask#\' \'interviewer# mask\' \'translatorlist first\' \'translator first#\' \'translator# first\' \'translator given#\' \'translator# given\' \"u8d986u8d8a7u8d985 u8d985u8d8aau8d8b1u8d8acu8d985#\" \'translatorlist last\' \'translator#\' \'translator last#\' \'translator# last\' \'translator surname#\' \'translator# surname\' \"u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c u8d985u8d8aau8d8b1u8d8acu8d985#\" \"u8d985u8d8aau8d8b1u8d8acu8d985#\" \"u8d8aau8d8b1u8d8acu8d985u8d987#\" \'translatorlist link\' \'translator link#\' \'translator# link\' \"u8d9beu8db8cu8d988u8d986u8d8af u8d985u8d8aau8d8b1u8d8acu8d985#\" \'translatorlist mask\' \'translator mask#\' \'translator# mask\' this table isu800 primarily here tou800 support internationalization. translations inu800 this table areu800 used foru800 example when anu800 error message category name etcu800 isu800 extracted from theu800 english alias keyu800. there mayu800 beu800 other cases where this translation table mayu800 beu800 useful. local special_case_translation \'authorlist\' \"u8d981u8d987u8d8b1u8d8b3u8d8aa u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986\" these foru800 multiple names maint categories \'contributorlist\' \"u8d981u8d987u8d8b1u8d8b3u8d8aa u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8daafu8d8a7u8d986\" \'editorlist\' \"u8d981u8d987u8d8b1u8d8b3u8d8aa u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1u8d8a7u8d986\" \'interviewerlist\' \"u8d981u8d987u8d8b1u8d8b3u8d8aa u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8daafu8d8a7u8d986\" \'translatorlist\' \"u8d981u8d987u8d8b1u8d8b3u8d8aa u8d985u8d8aau8d8b1u8d8acu8d985u8d8a7u8d986\" \'authors \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986\" used inu800 get_display_authors_editors \'editors \"u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1u8d8a7u8d986\" \'archived_copy\' \' archived su800 copy \' u8d8aau8d988u8d8acu8d987 luau800 pattern tou800 match pseudo title used byu800 internet archive botu800 andu800 others asu800 place holder foru800 unknown title value used with cs1u800 maint archived copy asu800 title default parameter values todo keep this only oneu800 default local defaults \'deadurl\' \'yesu800 this table ofu800 tables lists local language date names andu800 fallback english date names. theu800 code inu800 date_validation will look first inu800 theu800 local table foru800 valid date names. ifu800 date names areu800 notu800 found inu800 theu800 local table theu800 code will look inu800 theu800 english table. because citations canu800 beu800 copied tou800 theu800 local wiki from enu800u82ewiki theu800 english isu800 required when theu800 date name translation function date_name_xlate isu800 used. inu800 these tables season numbering isu800 defined byu800 isou800 disu800 8601 2016 part 2u800 u8c2a74u82e7u800 \'divisions ofu800 au800 year\'. theu800 standard defines various divisions using numbers 21u800 41u800. cs1u800 2u800 only supports generic seasons. isou800 disu800 8601 2016 does support theu800 distinction between north andu800 south hemispere seasons butu800 cs1u800 2u800 hasu800 nou800 wayu800 tou800 make that distinction. theu800 standard does notu800 address \'named\' dates sou800 foru800 theu800 purposes ofu800 cs1u800 2u800 christmas isu800 defined here asu800 99u800 which should beu800 outu800 ofu800 theu800 isou800 disu800 8601 2016 range ofu800 uses foru800 au800 while. local date_names \'enu800\' english \'long\' \'january\' 1u800 \'february\' 2u800 \'march\' 3u800 \'april\' 4u800 \'mayu800\' 5u800 \'june\' 6u800 \'july\' 7u800 \'august\' 8u800 \'september\' 9u800 \'october\' 10u800 \'november\' 11u800 \'december\' 12u800 ; \'short\' \'janu800\' 1u800 \'febu800\' 2u800 \'maru800\' 3u800 \'apru800\' 4u800 \'mayu800\' 5u800 \'junu800\' 6u800 \'julu800\' 7u800 \'augu800\' 8u800 \'sepu800\' 9u800 \'octu800\' 10u800 \'novu800\' 11u800 \'decu800\' 12u800 ; \'season\' \'winter\' 24u800 \'spring\' 21u800 \'summer\' 22u800 \'fall\' 23u800 \'autumn\' 23u800 ; \'named\' \'christmas 99u800 ; \'local\' replace these english date names with theu800 local language equivalents \'long\' \'u8da98u8d8a7u8d986u8d988u8db8cu8d987\' 1u800 \'u8d981u8d988u8d8b1u8db8cu8d987\' 2u800 \'u8d985u8d8a7u8d8b1u8d8b3\' 3u800 \'u8d8a2u8d988u8d8b1u8db8cu8d984\' 4u800 \'u8d985u8d987\' 5u800 \'u8da98u8d988u8d8a6u8d986\' 6u800 \'u8da98u8d988u8d8a6u8db8cu8d987\' 7u800 \'u8d8a2u8daafu8d988u8d8b3u8d8aa\' 8u800 \'u8d8b3u8d9beu8d8aau8d8a7u8d985u8d8a8u8d8b1\' 9u800 \'u8d8a7u8daa9u8d8aau8d8a8u8d8b1\' 10u800 \'u8d986u8d988u8d8a7u8d985u8d8a8u8d8b1\' 11u800 \'u8d8afu8d8b3u8d8a7u8d985u8d8a8u8d8b1\' 12u800 ; \'short\' \'u8da98u8d8a7u8d986u8d988u8db8cu8d987u8d994\' 1u800 \'u8da98u8d8a7u8d986u8d988u8db8cu8d987u8e2808cu8db8c\' 1u800 \'u8d981u8d988u8d8b1u8db8cu8d987u8d994\' 2u800 \'u8d981u8d988u8d8b1u8db8cu8d987u8e2808cu8db8c\' 2u800 \'u8d985u8d8a7\' 3u800 \'u8d8a2u8d988\' 4u800 \'u8d985u8db8c\' 5u800 \'u8d985u8d987\' 5u800 \'u8d985u8d987u8d994\' 5u800 \'u8d8acu8d988u8d986\' 6u800 \'u8da98u8d988u8d8a6u8d986\' 6u800 \'u8d8acu8d988u8d984u8d8a7u8db8c\' 7u800 \'u8da98u8d988u8d8a6u8db8cu8d987u8d994\' 7u800 \'u8da98u8d988u8d8a6u8db8cu8d987u8e2808cu8db8c\' 7u800 \'u8d8a7u8d988u8d8aa\' 8u800 \'u8d8b3u8d9be\' 9u800 \'u8d8a7u8daa9\' 10u800 \'u8d986u8d988\' 11u800 \'u8d8afu8d8b3\' 12u800 ; \'season\' \'u8d8b2u8d985u8d8b3u8d8aau8d8a7u8d986\' 24u800 \'u8d8a8u8d987u8d8a7u8d8b1\' 21u800 \'u8d8aau8d8a7u8d8a8u8d8b3u8d8aau8d8a7u8d986\' 22u800 \'u8d9beu8d8a7u8db8cu8db8cu8d8b2\' 23u800 \'u8d9beu8d8a7u8d8a6u8db8cu8d8b2\' 23u800 ; \'named\' \'u8d986u8d988u8d8b1u8d988u8d8b2\' 99u800 ; \'solar\' solar hijri added foru800 falocalization \'long\' \'u8d981u8d8b1u8d988u8d8b1u8d8afu8db8cu8d986\' 1u800 \'u8d8adu8d985u8d984\' 1u800 \'u8d8a7u8d8b1u8d8afu8db8cu8d8a8u8d987u8d8b4u8d8aa\' 2u800 \'u8d8abu8d988u8d8b1\' 2u800 \'u8d8aeu8d8b1u8d8afu8d8a7u8d8af\' 3u800 \'u8d8acu8d988u8d8b2u8d8a7\' 3u800 \'u8d8aau8db8cu8d8b1\' 4u800 \'u8d8b3u8d8b1u8d8b7u8d8a7u8d986\' 4u800 \'u8d985u8d8b1u8d8afu8d8a7u8d8af\' 5u800 \'u8d8a7u8d8b3u8d8af\' 5u800 \'u8d8b4u8d987u8d8b1u8db8cu8d988u8d8b1\' 6u800 \'u8d8b3u8d986u8d8a8u8d984u8d987\' 6u800 \'u8d985u8d987u8d8b1\' 7u800 \'u8d985u8db8cu8d8b2u8d8a7u8d986\' 7u800 \'u8d8a2u8d8a8u8d8a7u8d986\' 8u800 \'u8d8b9u8d982u8d8b1u8d8a8\' 8u800 \'u8d8a2u8d8b0u8d8b1\' 9u800 \'u8d982u8d988u8d8b3\' 9u800 \'u8d8afu8db8c\' 10u800 \'u8d8acu8d8afu8db8c\' 10u800 \'u8d8a8u8d987u8d985u8d986\' 11u800 \'u8d8afu8d984u8d988\' 11u800 \'u8d8a7u8d8b3u8d981u8d986u8d8af\' 12u800 \'u8d8adu8d988u8d8aa\' 12u800 ; \'local_digits \'u8dbb0\' \'0u800\' \'u8dbb1\' \'1u800\' \'u8dbb2\' \'2u800\' \'u8dbb3\' \'3u800\' \'u8dbb4\' \'4u800\' \'u8dbb5\' \'5u800\' \'u8dbb6\' \'6u800\' \'u8dbb7\' \'7u800\' \'u8dbb8\' \'8u800\' \'u8dbb9\' \'9u800\' ; used tou800 convert local language digits tou800 western 0u800 9u800 \'xlate_digits ; foru800 ldu800 edu800 inu800 pairs date_namesu82elocal_digits dou800 make au800 digit translation table foru800 simple date translation from enu800 tou800 local language using local_digits table date_namesu82exlate_digits edu800 ldu800; enu800 digit becomes index with local digit asu800 theu800 value endu800 these tables hold cite class values from theu800 template invocation andu800 identify those templates that support volume issue andu800 page su800 parameters. cite conference andu800 cite mapu800 require further qualification which isu800 handled inu800 theu800 main module. local templates_using_volume \'citation\' \'audio visual\' \'book\' \'conference\' \'encyclopaedia\' \'interview\' \'journal\' \'magazine\' \'mapu800\' \'news \'report\' \'techreport\' \'thesis \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af\' \'u8daafu8d8b2u8d8a7u8d8b1u8d8b4 u8d981u8d986u8db8c\' \'u8daa9u8d8aau8d8a7u8d8a8\' \'u8daa9u8d986u8d981u8d8b1u8d8a7u8d986u8d8b3\' \'u8d8afu8d8a7u8d986u8d8b4u8d986u8d8a7u8d985u8d987\' \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987\' \'u8da98u8d988u8d8b1u8d986u8d8a7u8d984\' \'u8d985u8d8acu8d984u8d987\' \'u8d986u8d982u8d8b4u8d987\' \'u8d8aeu8d8a8u8d8b1\' \'u8daafu8d8b2u8d8a7u8d8b1u8d8b4\' \'u8d8b1u8d8b3u8d8a7u8d984u8d987\' \'u8d9beu8d8a7u8db8cu8d8a7u8d986u8e2808cu8d986u8d8a7u8d985u8d987\' local templates_using_issue \'citation\' \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af\' \'conference\' \'u8daa9u8d986u8d981u8d8b1u8d8a7u8d986u8d8b3\' \'episode\' \'u8d8a7u8d9beu8db8cu8d8b2u8d988u8d8af\' \'interview\' \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987\' \'journal\' \'u8da98u8d988u8d8b1u8d986u8d8a7u8d984\' \'magazine\' \'u8d985u8d8acu8d984u8d987\' \'mapu800\' \'u8d986u8d982u8d8b4u8d987\' \'news \'u8d8aeu8d8a8u8d8b1\' local templates_not_using_page \'audio visual\' \'episode\' \'u8d8a7u8d9beu8db8cu8d8b2u8d988u8d8af\' \'mailinglist\' \'u8d985u8db8cu8d984u8db8cu8d986u8daaf u8d984u8db8cu8d8b3u8d8aa\' \'newsgroup\' \'podcast\' \'u8d9beu8d8a7u8d8afu8daa9u8d8b3u8d8aa\' \'serial\' \'sign\' \'speech\' \'u8d8b3u8d8aeu8d986u8d8b1u8d8a7u8d986u8db8c\' this table holds keywords foru800 those parameters that have defined sets ofu800 acceptible keywords. local keywords \'yes_true_y\' \'yesu800 \'true\' \'yu800\' \'u8d8a8u8d984u8d987\' \'u8d8a8\' ignore isbn error last author ampu800 nou800 tracking nopp registration subscription \'deadurl\' \'yesu800 \'true\' \'yu800\' \'nou800\' \'unfit\' \'usurped\' \'unfit nou800 archive\' \'usurped nou800 archive\' hidden 2016 04u800 10u800; seeu800 help_talk citation_style_1#recycled_urls \'deadurl\' \'yesu800 \'u8d8a8u8d984u8d987\' \'true\' \'yu800\' \'nou800\' \'u8d986u8d987\' \'u8d8aeu8db8cu8d8b1\' \'u8d986\' \'unfit\' \'usurped\' \'botu800 unknown\' \'deadurl_no\' \'nou800\' \'u8d986u8d987\' \'u8d8aeu8db8cu8d8b1\' \'u8d986\' \'mode\' \'cs1u800\' \'cs2u800\' \'mlau800\' \'name list format\' \'vanc\' \'contribution\' \'afterword\' \'foreword\' \'introduction\' \'preface\' \'u8d985u8d982u8d8afu8d985u8d987\' generic contribution titles that areu800 rendered unquoted inu800 theu800 \'chapter\' position \'date format\' \'dmyu800\' \'dmyu800 allu800\' \'mdyu800\' \'mdyu800 allu800\' \'ymdu800\' \'ymdu800 allu800\' \'urlu800 access \'subscription\' \'limited\' \'registration\' \'u8d8a7u8d8b4u8d8aau8d8b1u8d8a7u8daa9\' \'u8d985u8d8adu8d8afu8d988u8d8af\' \'u8d8b9u8d8b6u8d988u8db8cu8d8aa\' \'u8d8a2u8d8a8u8d988u8d986u8d985u8d8a7u8d986\' access level ofu800 au800 urlu800 subscription required limited access free registration required free tou800 read byu800 default \'idu800 access \'free\' access level ofu800 anu800 identifier free tou800 read subscription required oru800 nou800 full text byu800 default common pattern definition location foru800 stripmarkers sou800 that weu800 donu800\'tu800 have tou800 gou800 hunting foru800 them ifu800 when mediawiki changes their form. local stripmarkers \'anyu800\' \' 127u800 127u800 *uniq au800 au800 du800 qinu 127u800 * 127u800\' capture returns name ofu800 stripmarker \'math\' \' 127u800 127u800 *uniq math au800 du800 qinu 127u800 * 127u800\' math stripmarkers used inu800 coins_cleanup andu800 coins_replace_math_stripmarker this table holds nonu800 printing oru800 invisible characters indexed either byu800 name oru800 byu800 unicode group. values areu800 decimal representations ofu800 utfu800 8u800 codes. theu800 table isu800 organized asu800 au800 table ofu800 tables because theu800 luau800 pairs keyword returns table data inu800 anu800 arbitrary order. here weu800 want tou800 process theu800 table from topu800 tou800 bottom because theu800 entries atu800 theu800 topu800 ofu800 theu800 table areu800 also found inu800 theu800 ranges specified byu800 theu800 entries atu800 theu800 bottom ofu800 theu800 table. this list contains patterns foru800 templates like \' which isnu800\'tu800 anu800 error butu800 transcludes characters that areu800 invisible. these kinds ofu800 patterns must beu800 recognized byu800 theu800 functions that useu800 this list. also here isu800 au800 pattern that recognizes stripmarkers that begin andu800 endu800 with theu800 delete characters. theu800 nowiki stripmarker isu800 notu800 anu800 error butu800 some others areu800 because theu800 parameter values that include them become part ofu800 theu800 template template\'su800 metadata before stripmarker replacement. local invisible_chars \'replacement\' \' 239u800 191u800 189u800\' uu800 fffd efu800 bfu800 bdu800 \'zero width joiner\' \' 226u800 128u800 141u800\' uu800 200d e2u800 80u800 8du800 \'zero width space\' \' 226u800 128u800 139u800\' uu800 200b e2u800 80u800 8bu800 \'hair space\' \' 226u800 128u800 138u800\' uu800 200a e2u800 80u800 8au800 \'soft hyphen\' \' 194u800 173u800\' uu800 00ad c2u800 adu800 \'horizontal tabu800\' \' 009u800\' uu800 0009 htu800 09u800 \'line feed\' \' 010u800\' uu800 000a lfu800 0au800 \'carriage return\' \' 013u800\' uu800 000d cru800 0du800 \'stripmarker\' stripmarkersu82eanyu800 stripmarker; mayu800 oru800 mayu800 notu800 beu800 anu800 error; capture returns theu800 stripmaker type \'delete\' \' 127u800\' uu800 007f delu800 7fu800; must beu800 done after stripmarker test \'c0u800 control\' \' 000u800 008u800 011u800 012u800 014u800 031u800 \' uu800 0000u8e28093u 001f nullu8e28093us 00u8e280931f except htu800 lfu800 cru800 09u800 0au800 0du800 \'c1u800 control\' \' 194u800 128u800 194u800 159u800 \' uu800 0080u8e28093u 009f xxxu8e28093apc c2u800 80u800 u8e28093 c2u800 9fu800 \'specials \' 239u800 191u800 185u800 239u800 191u800 191u800 \' uu800 fff9 uu800 ffff efu800 bfu800 b9u800 u8e28093 efu800 bfu800 bfu800 \'private useu800 area\' \' 238u800 128u800 128u800 239u800 163u800 191u800 \' uu800 e000u8e28093u f8ff eeu800 80u800 80u800 u8e28093 efu800 a3u800 bfu800 \'supplementary private useu800 area au800\' \' 243u800 176u800 128u800 128u800 243u800 191u800 191u800 189u800 \' uu800 f0000u8e28093u ffffd f3u800 b0u800 80u800 80u800 u8e28093 f3u800 bfu800 bfu800 bdu800 \'supplementary private useu800 area bu800\' \' 244u800 128u800 128u800 128u800 244u800 143u800 191u800 189u800 \' uu800 100000u8e28093u 10fffd f4u800 80u800 80u800 80u800 u8e28093 f4u800 8fu800 bfu800 bdu800 indic script makes useu800 ofu800 zero width joiner asu800 au800 character modifier sou800 zwju800 characters must beu800 left inu800. this pattern covers allu800 ofu800 theu800 unicode characters foru800 these languages devanagari 0900u8e28093097f u8e28093 devanagari extended a8e0u8e28093a8ff u8e28093 bengali 0980u8e2809309ff u8e28093 gurmukhi 0a00u8e280930a7f u8e28093 gujarati 0a80u8e280930aff u8e28093 oriya 0b00u8e280930b7f u8e28093 tamil 0b80u8e280930bff u8e28093 telugu 0c00u8e280930c7f u8e28093 kannada 0c80u8e280930cff u8e28093 malayalam 0d00u8e280930d7f u8e28093 plus theu800 notu800 necessarily indic scripts foru800 sinhala andu800 burmese sinhala 0d80 0dff myanmar 1000 109f myanmar extended au800 aa60 aa7f myanmar extended bu800 a9e0 a9ff theu800 pattern isu800 used byu800 has_invisible_chars andu800 coins_cleanup todo find au800 better place foru800 this local indic_script \' 224u800 164u800 128u800 224u800 181u800 191u800 224u800 163u800 160u800 224u800 183u800 191u800 225u800 128u800 128u800 225u800 130u800 159u800 234u800 167u800 160u800 234u800 167u800 191u800 234u800 169u800 160u800 234u800 169u800 191u800 \'; this table isu800 used tou800 hold isou800 639u800 1u800 twou800 character language codes that apply only tou800 script title andu800 script chapter local script_lang_codes \'amu800\' \'aru800\' \'beu800\' \'bgu800\' \'bnu800\' \'bsu800 \'dvu800\' \'elu800\' \'fau800\' isou800 639u800 1u800 codes only foru800 script title andu800 script chapter \'guu800\' \'heu800\' \'hyu800\' \'jau800\' \'kau800\' \'knu800\' \'kou800\' \'kuu800\' \'mku800\' \'mlu800\' \'mnu800\' \'mru800\' \'myu800\' \'psu800 \'ruu800\' \'sdu800\' \'sru800\' \'tgu800\' \'thu800\' \'uku800\' \'ugu800\' \'uru800\' \'yiu800\' \'zhu800\' ; these tables hold language information that isu800 different correct from mediawiki mediawiki\'su800 definitions local lang_code_remap used foru800 language andu800 script title script chapter \'bhu800\' \'u8d8a8u8db8cu8d987u8d8a7u8d8b1u8db8c\' mediawiki uses \'bhu800\' asu800 au800 subdomain name foru800 bhojpuri wwikipedia bhu800u82ewikipediau82eorgu800 \'bnu800\' \'u8d8a8u8d986u8daafu8d8a7u8d984u8db8c\' mediawiki returns bangla \'cnru800\' \'u8d985u8d988u8d986u8d8aau8d987u8e2808cu8d986u8daafu8d8b1u8d988u8d8a6u8db8c\' \'newu800\' 639u800 code that mediawiki does notu800 yetu800 understand \'nbu800\' \'u8d986u8d8b1u8d988u8da98u8db8c u8d8a8u8d988u8daa9u8e2808cu8d985u8d984\' \'nbu800 nou800\' \'u8d986u8d8b1u8d988u8da98u8db8c u8d8a8u8d988u8daa9u8e2808cu8d985u8d984\' local lang_name_remap used foru800 language \'bangla\' \'bengali\' \'bnu800\' mediawiki returns bangla theu800 endonym butu800 weu800 want bengali theu800 exonym ; here weu800 remap \'bengali\' \'bengali\' \'bnu800\' mediawiki doesn\'tu800 useu800 exonym sou800 here weu800 provide correct language name andu800 639u800 1u800 code \'bihari\' \'bihari\' \'bhu800\' mediawiki replaces \'bihari\' with \'bhojpuri\' sou800 \'bihari\' cannot beu800 found \'bhojpuri\' \'bhojpuri\' \'bhou800\' mediawiki uses \'bhu800\' asu800 au800 subdomain name foru800 bhojpuri wwikipedia bhu800u82ewikipediau82eorgu800 \'montenegrin\' \'montenegrin\' \'cnru800\' \'newu800\' 639u800 code that mediawiki does notu800 yetu800 understand here weu800 name maintenance categories tou800 beu800 used inu800 maintenance messages. local maint_cats \'asin\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af asin u8d8a8u8d987 u8d8acu8d8a7u8db8c u8d8b4u8d8a7u8d8a8u8daa9\' \'archived_copy\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b9u8d986u8d988u8d8a7u8d986 u8d8a2u8d8b1u8d8b4u8db8cu8d988 u8d8a8u8d987 u8d8acu8d8a7u8db8c u8d8b9u8d986u8d988u8d8a7u8d986\' \'authors \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8daafu8d8a7u8d986\' \'botu800 _unknown\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b1u8d8a8u8d8a7u8d8aa u8d988u8d8b6u8d8b9u8db8cu8d8aa u8d986u8d8a7u8d985u8d8b9u8d984u8d988u8d985 u8d9beu8db8cu8d988u8d986u8d8af u8d8a7u8d8b5u8d984u8db8c\' \'date_format\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d981u8d8b1u8d985u8d8aa u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d8aau8d8a7u8d8b1u8db8cu8d8ae\' \'date_year\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d988 u8d8b3u8d8a7u8d984\' \'ignore_date_err\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8da86u8d8b4u8d985u8e2808cu8d9beu8d988u8d8b4u8db8cu8e2808cu8d8b4u8d8afu8d987\' \'disp_auth_ed\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d986u8d985u8d8a7u8db8cu8d8b4 1u800\' 1u800 isu800 authors oru800 editors; gets value from special_case_translation table \'editors \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1u8d8a7u8d986\' \'embargo\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aau8d8adu8d8b1u8db8cu8d985 u8d985u8d986u8d982u8d8b6u8db8cu8e2808cu8d8b4u8d8afu8d987 pmcu800\' \'english\' \'cs1u800 maint english language specified\' \'etal\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 etu800 alu800.\' \'extra_text\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d985u8d8aau8d986 u8d8a7u8d8b6u8d8a7u8d981u8db8c\' \'extra_text_names \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d985u8d8aau8d986 u8d8a7u8d8b6u8d8a7u8d981u8db8c 1u800\' 1u800 isu800 su800 list; gets value from special_case_translation table \'ignore_isbn_err\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8d8b4u8d8a7u8d8a8u8daa9 u8da86u8d8b4u8d985u8e2808cu8d9beu8d988u8d8b4u8db8cu8e2808cu8d8b4u8d8afu8d987\' \'ignore_issn_err\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8d8b4u8d8a7u8d9beu8d8a7 u8da86u8d8b4u8d985u8e2808cu8d9beu8d988u8d8b4u8db8cu8e2808cu8d8b4u8d8afu8d987\' \'interviewers \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987u8e2808cu8daa9u8d986u8d986u8d8afu8daafu8d8a7u8d986\' \'missing_pipe\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8d8a7u8db8cu8d9be u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af\' \'mult_names \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d986u8d8a7u8d985u8e2808cu8d987u8d8a7u8db8c u8d985u8d8aau8d8b9u8d8afu8d8af 1u800\' 1u800 isu800 su800 list; gets value from special_case_translation table \'pmc_format\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d981u8d8b1u8d985u8d8aa u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 pmcu800\' \'unfit\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d8a7u8d985u8d986u8d8a7u8d8b3u8d8a8\' \'unknown_lang\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b2u8d8a8u8d8a7u8d986 u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987\' \'untitled\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8daafu8d8a7u8d987u8e2808cu8d986u8d8a7u8d985u8d987 u8d8a8u8d8afu8d988u8d986 u8d8b9u8d986u8d988u8d8a7u8d986\' \'extra_text_date\' \'u8d985u8d8aau8d986 u8d8a7u8d8b6u8d8a7u8d981u8d987 u8d8afu8d8b1 u8d8aau8d8a7u8d8b1u8db8cu8d8ae\' falocalization temporary \'print_param\' \'u8d986u8daafu8d987u8d8afu8d8a7u8d8b1u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8da86u8d8a7u8d9be\' falocalization temporary here weu800 name properties categories local prop_cats \'foreign_lang_source\' \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d985u8d986u8d8a8u8d8b9 u8d8a8u8d987 u8d8b2u8d8a8u8d8a7u8d986 1u800\' language categories; 1u800 isu800 language name 2u800 isu800 iso639 1u800 code \'foreign_lang_source_2\' \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d985u8d986u8d8a8u8d8b9 u8d8a8u8d987 u8d8b2u8d8a8u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d8a7u8d8b1u8d8acu8db8c u8d8a7u8db8cu8d8b2u8d988 u8dbb2u8e28093u8dbb6u8dbb3u8dbb9 1u800\' language category; au800 catu800 foru800 iso639 2u800 languages; 1u800 isu800 theu800 isou800 639u800 2u800 code \'script\' \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8b9u8d986u8d988u8d8a7u8d986 u8d8a8u8d987 u8d8aeu8d8b7 u8d8b2u8d8a8u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d8a7u8d8b1u8d8acu8db8c\' when language specified byu800 script title xxu800 doesn\'tu800 have itsu800 ownu800 category \'script_with_name\' \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8b9u8d986u8d988u8d8a7u8d986 u8d8a8u8d987 u8d8aeu8d8b7 1u800 u8daa9u8d8af 2u800 \' script title xxu800 hasu800 matching category; 1u800 isu800 language name 2u800 isu800 iso639 1u800 code \'jul_greg_uncertainty\' \'cs1u800 julianu8e28093gregorian uncertainty\' probably temporary catu800 tou800 identify scope ofu800 template with dates 1u800 october 1582 u8e28093 1u800 january 1926 here weu800 mapu800 au800 template template\'su800 citationclass tou800 titletype default values foru800 type parameter local title_types \'avu800 media notes \'media notes \'interview\' \'u8d985u8d8b5u8d8a7u8d8adu8d8a8u8d987\' \'mailinglist\' \'u8d985u8db8cu8d984u8db8cu8d986u8daaf u8d984u8db8cu8d8b3u8d8aa\' \'mapu800\' \'u8d986u8d982u8d8b4u8d987\' \'podcast\' \'u8d9beu8d8a7u8d8afu8daa9u8d8b3u8d8aa\' \'pressrelease\' \'u8d8aeu8d8a8u8d8b1\' \'report\' \'u8daafu8d8b2u8d8a7u8d8b1u8d8b4\' \'techreport\' \'u8daafu8d8b2u8d8a7u8d8b1u8d8b4 u8d981u8d986u8db8c\' \'thesis \'u8d9beu8d8a7u8db8cu8d8a7u8d986u8e2808cu8d986u8d8a7u8d985u8d987\' error condition table theu800 following contains au800 list ofu800 idsu800 foru800 various error conditions defined inu800 theu800 code. foru800 each idu800 weu800 specify au800 text message tou800 display anu800 error category tou800 include andu800 whether theu800 error message should beu800 wrapped asu800 au800 hidden comment. anchor changes require identical changes tou800 matching anchor inu800 help cs1u800 errors local error_conditions accessdate_missing_url message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8db8cu8d8a7u8d8a8u8db8c u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d8afu8d8a7u8d8b1u8d8af\' anchor \'accessdate_missing_url\' category \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d988u8d8a8 u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c u8d8a8u8d8afu8d988u8d986 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aau8db8c\' hidden false archive_missing_date message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 &#124u800;u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8afu8d8a7u8d8b1u8d8af\' anchor \'archive_missing_date\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' hidden false archive_missing_url message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d8afu8d8a7u8d8b1u8d8af\' anchor \'archive_missing_url\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' hidden false archive_url message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d986u8d8a7u8d8afu8d8b1u8d8b3u8d8aa u8d8a7u8d8b3u8d8aa 1u800\' anchor \'archive_url\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' hidden false arxiv_missing message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;arxiv u8d984u8d8a7u8d8b2u8d985 u8d8a7u8d8b3u8d8aa\' anchor \'arxiv_missing\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' same asu800 badu800 arxiv hidden false arxiv_params_not_supported message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1u8d987u8d8a7u8db8c u8d8bau8db8cu8d8b1u8d985u8d8acu8d8a7u8d8b2 u8d8a8u8d8b1u8d8a7u8db8c u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' anchor \'arxiv_params_not_supported\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' same asu800 badu800 arxiv hidden false bad_arxiv message \' u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;arxiv u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af \' anchor \'bad_arxiv\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' hidden false bad_asin message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;asin u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_asin\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af asin\' hidden false bad_bibcode message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;bibcode u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af 1u800\' anchor \'bad_bibcode\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a8u8db8cu8d8a8u8daa9u8d8af\' hidden false bad_biorxiv message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;biorxiv u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_biorxiv\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af biorxiv\' hidden false bad_citeseerx message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;citeseerx u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_citeseerx\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af citeseerx\' hidden false bad_date message \'u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d988u8d8a7u8d8b1u8d8af u8d8b4u8d8afu8d987 u8d8afu8d8b1 1u800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_date\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aau8d8a7u8d8b1u8db8cu8d8ae\' hidden false bad_doi message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;doiu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_doi\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af doiu800\' hidden false bad_hdl message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;hdlu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_hdl\' category \'u8d8aeu8d8b7u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af hdlu800\' hidden false bad_isbn message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;u8d8b4u8d8a7u8d8a8u8daa9 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af 1u800\' anchor \'bad_isbn\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b4u8d8a7u8d8a8u8daa9\' hidden false bad_ismn message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;ismn u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_ismn\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af ismn\' hidden false bad_issn message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800; 1issn u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_issn\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b4u8d8a7u8d9beu8d8a7\' hidden false bad_jfm message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;jfmu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_jfm\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af jfmu800\' hidden false bad_lccn message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;lccn u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_lccn\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af lccn\' hidden false bad_usenet_id message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;message idu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_message_id\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af message idu800\' hidden false bad_mr message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;mru800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_mr\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af mru800\' hidden false bad_ol message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;olu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_ol\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af olu800\' hidden false bad_paramlink foru800 title link author editor translator link series link episode link message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800; 1u800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_paramlink\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8db8cu8d988u8d986u8d8af u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1\' hidden false bad_pmc message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;pmcu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_pmc\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af pmcu800\' hidden false bad_pmid message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;pmid u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_pmid\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b4u8d986u8d8a7u8d8b3u8d987 u8d9beu8d8a7u8d8a8u8e2808cu8d985u8d8af\' hidden false bad_oclc message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;oclc u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_oclc\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af oclc\' hidden false bad_ssrn message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;ssrn u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_ssrn\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af ssrn\' hidden false bad_url message \'u8d985u8d982u8d8afu8d8a7u8d8b1 1u800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_url\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aau8db8cu8e2808cu8d8b4u8d8a7u8d986 u8d8aeu8d8b7u8d8a7 u8d8afu8d8a7u8d8b1u8d8af\' hidden false bad_zbl message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;zblu800 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8daa9u8d986u8db8cu8d8af\' anchor \'bad_zbl\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af zblu800\' hidden false bare_url_missing_title message \'u8d9beu8db8cu8d988u8d986u8d8af 1u800 u8d8b9u8d986u8d988u8d8a7u8d986 u8d986u8d8afu8d8a7u8d8b1u8d8af\' anchor \'bare_url_missing_title\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9u8db8c u8daa9u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aau8db8cu8e2808cu8d8b4u8d8a7u8d986 u8d8a8u8d8b1u8d987u8d986u8d987 u8d8a7u8d8b3u8d8aa\' hidden false biorxiv_missing message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;biorxiv u8d984u8d8a7u8d8b2u8d985 u8d8a7u8d8b3u8d8aa\' anchor \'biorxiv_missing\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af biorxiv\' same asu800 badu800 biorxiv hidden false chapter_ignored message \'u8d8a7u8d8b2 &#124u800; 1u800 u8d8b5u8d8b1u8d981u8e2808cu8d986u8d8b8u8d8b1 u8d8b4u8d8af\' anchor \'chapter_ignored\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d985u8d982u8d8a7u8d984u8d987\' hidden false citation_missing_title message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8d8b9u8d986u8d988u8d8a7u8d986 u8db8cu8d8a7 &#124u800; 1u800 u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af u8db8cu8d8a7 u8d8aeu8d8a7u8d984u8db8c\' anchor \'citation_missing_title\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a8u8d8afu8d988u8d986 u8d8b9u8d986u8d988u8d8a7u8d986 u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af\' hidden false citeseerx_missing message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;citeseerx u8d984u8d8a7u8d8b2u8d985 u8d8a7u8d8b3u8d8aa\' anchor \'citeseerx_missing\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af citeseerx\' same asu800 badu800 citeseerx hidden false cite_web_url this error applies tou800 cite webu800 andu800 tou800 cite podcast message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8d9beu8db8cu8d988u8d986u8d8af u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af u8db8cu8d8a7 u8d8aeu8d8a7u8d984u8db8c\' anchor \'cite_web_url\' category \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d988u8d8a8 u8d8a8u8d8afu8d988u8d986 u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aau8db8c\' hidden false class_ignored message \'u8d8a7u8d8b2 &#124u800;class u8d8b5u8d8b1u8d981u8e2808cu8d986u8d8b8u8d8b1 u8d8b4u8d8af\' anchor \'class_ignored\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af class hidden false contributor_ignored message \'u8d8a7u8d8b2 &#124u800;contributor u8d8b5u8d8b1u8d981u8e2808cu8d986u8d8b8u8d8b1 u8d8b4u8d8af\' anchor \'contributor_ignored\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' hidden false contributor_missing_required_param message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;contributor u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 &#124u800; 1u800 u8d8afu8d8a7u8d8b1u8d8af\' anchor \'contributor_missing_required_param\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987\' hidden false deprecated_params message \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d985u8d986u8d8b3u8d988u8d8aeu8e2808cu8d8b4u8d8afu8d987 &#124u800; 1u800 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af\' anchor \'deprecated_params category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d985u8d987u8d8acu8d988u8d8b1\' hidden false empty_citation message \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8a7u8d984u8db8c\' anchor \'empty_citation\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8a8u8d8a7 u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8a7u8d984u8db8c\' hidden false first_missing_last message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;first 2u800 u8d8a8u8d8afu8d988u8d986 &#124u800;last 2u800 u8d8afu8d8b1 1u800 u8d988u8d8a7u8d8b1u8d8af u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa\' anchor \'first_missing_last\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987 u8db8cu8d8a7 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1 u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af\' hidden false format_missing_url message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800; 1u800 u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 &#124u800; 2u800 u8d8afu8d8a7u8d8b1u8d8af\' anchor \'format_missing_url\' category \'pages using citations with format andu800 nou800 urlu800\' hidden false invalid_param_val message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800; 1u800 2u800 u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1\' anchor \'invalid_param_val\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d985u8d982u8d8afu8d8a7u8d8b1 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1\' hidden false invisible_char message \'u8daa9u8d8a7u8d8b1u8d8a7u8daa9u8d8aau8d8b1 1u800 u8d8afu8d8b1 2u800 u8d8afu8d8b1 u8d985u8d988u8d982u8d8b9u8db8cu8d8aa 3u800\' anchor \'invisible_char\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8daa9u8d8a7u8d8b1u8d8a7u8daa9u8d8aau8d8b1u8d987u8d8a7u8db8c u8d986u8d8a7u8d985u8d8b1u8d8a6u8db8c\' hidden false missing_name message \'u8d985u8d982u8d8afu8d8a7u8d8b1 &#124u800;u8d986u8d8a7u8d985 u8d8aeu8d8a7u8d986u8d988u8d8a7u8d8afu8daafu8db8c 2u800 u8d8afu8d8b1 1u800 u8d985u8d988u8d8acu8d988u8d8af u8d986u8db8cu8d8b3u8d8aa\' anchor \'missing_name\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987 u8db8cu8d8a7 u8d988u8db8cu8d8b1u8d8a7u8d8b3u8d8aau8d8a7u8d8b1 u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af\' hidden false param_access_requires_param message \' &#124u800; 1u800 access u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 &#124u800; 1u800 u8d8afu8d8a7u8d8b1u8d8af\' anchor \'param_access_requires_param\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8afu8d8b3u8d8aau8d8b1u8d8b3u8db8c u8d8a8u8d987 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1\' hidden false param_has_ext_link message \'u8d9beu8db8cu8d988u8d986u8d8af u8d8aeu8d8a7u8d8b1u8d8acu8db8c u8d8afu8d8b1 1u800 u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b1u8d8af\' anchor \'param_has_ext_link\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d8a8u8db8cu8d8b1u8d988u8d986u8db8c\' hidden false parameter_ignored message \'u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987 &#124u800; 1u800 u8d8b5u8d8b1u8d981u8e2808cu8d986u8d8b8u8d8b1 u8d8b4u8d8af\' anchor \'parameter_ignored\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9 u8d8a8u8d8a7 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d9beu8d8b4u8d8aau8db8cu8d8a8u8d8a7u8d986u8db8cu8e2808cu8d986u8d8b4u8d8afu8d987\' hidden false parameter_ignored_suggest message \'u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987 &#124u800; 1u800 u8d8b5u8d8b1u8d981 u8d986u8d8b8u8d8b1 u8d8b4u8d8af &#124u800; 2u800 u8d9beu8db8cu8d8b4u8d986u8d987u8d8a7u8d8af u8d985u8db8cu8e2808cu8d8b4u8d988u8d8af \' anchor \'parameter_ignored_suggest\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9 u8d8a8u8d8a7 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d9beu8d8b4u8d8aau8db8cu8d8a8u8d8a7u8d986u8db8cu8e2808cu8d986u8d8b4u8d8afu8d987\' hidden false redundant_parameters message \'u8d8a8u8db8cu8d8b4 u8d8a7u8d8b2 u8db8cu8daa9 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 1u800 u8d8afu8d8a7u8d8afu8d987u8e2808cu8d8b4u8d8afu8d987 u8d8a7u8d8b3u8d8aa\' anchor \'redundant_parameters category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9 u8d8a8u8d8a7 u8d985u8d8aau8d8bau8db8cu8d8b1 u8d8aau8daa9u8d8b1u8d8a7u8d8b1u8db8c\' hidden false text_ignored message \'u8d8a7u8d8b2 u8d985u8d8aau8d986 \" 1u800\" u8d8b5u8d8b1u8d981 u8d986u8d8b8u8d8b1 u8d8b4u8d8af\' anchor \'text_ignored\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9 u8d8a8u8d8a7 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d8a8u8d8afu8d988u8d986 u8d986u8d8a7u8d985\' hidden false trans_missing_title message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;trans 1u800 u8d986u8db8cu8d8a7u8d8b2 u8d8a8u8d987 &#124u800; 1u800 u8d8afu8d8a7u8d8b1u8d8af\' anchor \'trans_missing_title\' category \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8a7u8d8b1u8d8acu8d8a7u8d8b9 u8d8a8u8d8a7 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d8b9u8d986u8d988u8d8a7u8d986 u8d8aau8d8b1u8d8acu8d985u8d987u8e2808cu8d8b4u8d8afu8d987\' hidden false vancouver message \'u8d8aeu8d8b7u8d8a7u8db8c u8d8b4u8db8cu8d988u8d987u8e2808cu8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d986u8daa9u8d988u8d988u8d8b1 1u800\' anchor \'vancouver\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8b4u8db8cu8d988u8d987 u8d988u8d986u8daa9u8d988u8d988u8d8b1\' hidden false wikilink_in_url message \'u8d8aau8d8afu8d8a7u8d8aeu8d984 u8d9beu8db8cu8d988u8d986u8d8af u8d8aeu8d8a7u8d8b1u8d8acu8db8c u8d988 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8db8cu8d988u8d986u8d8af\' uses ndash anchor \'wikilink_in_url\' category \'u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8afu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d986u8d8b4u8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aau8db8c u8daa9u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8afu8d8b1u8d988u8d986u8e2808cu8d988u8db8cu8daa9u8db8c u8d8afu8d8a7u8d8b1u8d986u8d8af\' uses ndash hidden false print_param falocalization message \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;u8da86u8d8a7u8d9be u8d8a7u8d8b6u8d8a7u8d981u8d987 u8d8a7u8d8b3u8d8aa\' anchor \'u8da86u8d8a7u8d9be\' category \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8da86u8d8a7u8d9be\' hidden false theu800 following contains au800 list ofu800 values foru800 various defined identifiers. foru800 each identifier weu800 specify au800 variety ofu800 information necessary tou800 properly render theu800 identifier inu800 theu800 citation. parameters au800 list ofu800 parameter aliases foru800 this identifier link wikipedia article name qu800 wikidata qu800 number foru800 theu800 identifier label theu800 alternate name tou800 apply tou800 link mode \'manual\' when there isu800 au800 specific function inu800 theu800 code tou800 handle theu800 identifier; \'external\' foru800 identifiers that link outside ofu800 wikipedia; prefix theu800 first part ofu800 au800 urlu800 that will beu800 concatenated with au800 second part which usually contains theu800 identifier encode true ifu800 uriu800 should beu800 percent encoded; otherwise false coins identifier link oru800 keyword foru800 useu800 inu800 coins foru800 identifiers registered atu800 info uriu800u82einfo useu800 info .... foru800 identifiers that have coins keywords useu800 theu800 keyword rftu800u82eisbn rftu800u82eissn rftu800u82eeissn foru800 others make au800 urlu800 using theu800 value inu800 prefix useu800 theu800 keyword preu800 notu800 checked; anyu800 text other than \'info\' oru800 \'rftu800\' works here setu800 tou800 nilu800 tou800 leave theu800 identifier outu800 ofu800 theu800 coins separator character oru800 text between label andu800 theu800 identifier inu800 theu800 rendered citation access useu800 this parameter tou800 setu800 theu800 access level foru800 allu800 instances ofu800 this identifier. theu800 value must beu800 au800 valid access level foru800 anu800 identifier seeu800 \'idu800 access inu800 this file . custom_access tou800 enable custom access level foru800 anu800 identifier setu800 this parameter tou800 theu800 parameter that should control itu800 normally \'idu800 access local id_handlers \'arxiv\' parameters \'arxiv\' \'eprint\' \'u8d8a2u8d8b1u8daa9u8d8a7u8db8cu8d988\' link \'arxiv\' qu800 \'q118398\' label \'arxiv\' mode \'manual\' prefix \' arxivu82eorgu800 absu800 \' protocol relative tested 2013 09u800 04u800 encode false coins \'info arxiv\' separator \' \' access \'free\' free tou800 read \'asin\' parameters \'asin\' \'asin\' link \'amazon standard identification number\' qu800 \'q1753278\' label \'asin\' mode \'manual\' prefix \' wwwu800u82eamazon.\' coins nilu800 nou800 coins foru800 this idu800 needs thinking onu800 implementation because asin tldu800 separator \'&nbsp;\' encode false; \'bibcode\' parameters \'bibcode\' \'u8d8a8u8db8cu8d8a8u8daa9u8d8af\' link \'bibcode\' qu800 \'q25754\' label \'u8d8a8u8db8cu8d8a8u8daa9u8d8af\' mode \'manual\' prefix \' \' encode false coins \'info bibcode\' separator \' \' custom_access \'bibcode access \'biorxiv\' parameters \'biorxiv\' link \'biorxiv\' qu800 \'q19835482\' label \'biorxiv\' mode \'manual\' prefix \' doiu800u82eorgu800 10u800u82e1101 \' coins \'preu800\' useu800 prefix value access \'free\' free tou800 read encode true separator \'&nbsp;\' \'citeseerx\' parameters \'citeseerx\' link \'citeseerx\' qu800 \'q2715061\' label \'citeseerx\' mode \'manual\' manual foru800 custom validation ofu800 theu800 \"doiu800\" prefix \' citeseerxu82eistu800u82epsuu800u82eeduu800 viewdoc summary doiu800 \' coins \'preu800\' useu800 prefix value access \'free\' free tou800 read encode true separator \'&nbsp;\' \'doiu800\' parameters \'doiu800\' \'doiu800\' link \'u8d986u8d8b4u8d8a7u8d986u8daafu8d8b1 u8d8afu8db8cu8d8acu8db8cu8d8aau8d8a7u8d984u8db8c u8d8b4u8db8cu8d8a1\' qu800 \'q25670\' label \'doiu800\' mode \'manual\' prefix \' doiu800u82eorgu800 \' coins \'info doiu800\' separator \' \' encode true custom_access \'doiu800 access \'eissn\' parameters \'eissn\' \'eissn\' link \'international_standard_serial_number#electronic_issn\' qu800 \'q46339674\' label \'eissn\' mode \'manual\' prefix \' wwwu800u82eworldcatu82eorgu800 issn \' coins \'rftu800u82eeissn\' encode false separator \'&nbsp;\' \'hdlu800\' parameters \'hdlu800\' \'hdlu800\' link \'handle system\' qu800 \'q3126718\' label \'hdlu800\' mode \'manual\' prefix \' hdlu800u82ehandleu82enetu800 \' coins \'info hdlu800\' separator \' \' encode true custom_access \'hdlu800 access \'isbn\' parameters \'u8d8b4u8d8a7u8d8a8u8daa9\' \'isbn\' \'isbn\' \'isbn13\' \'isbn13\' link \'u8d8b4u8d985u8d8a7u8d8b1u8d987 u8d8a7u8d8b3u8d8aau8d8a7u8d986u8d8afu8d8a7u8d8b1u8d8af u8d8a8u8db8cu8d986u8e2808cu8d8a7u8d984u8d985u8d984u8d984u8db8c u8daa9u8d8aau8d8a7u8d8a8\' qu800 \'q33057\' label \'u8d8b4u8d8a7u8d8a8u8daa9\' mode \'manual\' prefix \'u8d988u8db8cu8da98u8d987 u8d985u8d986u8d8a7u8d8a8u8d8b9 u8daa9u8d8aau8d8a7u8d8a8 \' coins \'rftu800u82eisbn\' separator \'&nbsp;\' \'ismn\' parameters \'ismn\' \'ismn\' link \'international standard music number\' qu800 \'q1666938\' label \'ismn\' mode \'manual\' prefix   notu800 currently used; coins \'nilu800\' nilu800 because weu800 canu800\'tu800 useu800 preu800 oru800 rftu800 oru800 info separator \'&nbsp;\' \'issn\' parameters \'issn\' \'issn\' \'u8d8b4u8d8a7u8d9beu8d8a7\' link \'u8d8b4u8d985u8d8a7u8d8b1u8d987 u8d8a7u8d8b3u8d8aau8d8a7u8d986u8d8afu8d8a7u8d8b1u8d8af u8d8a8u8db8cu8d986u8e2808cu8d8a7u8d984u8d985u8d984u8d984u8db8c u8d9beu8db8cu8d8a7u8db8cu8d986u8d8afu8d987u8d8a7\' qu800 \'q131276\' label \'u8d8b4u8d8a7u8d9beu8d8a7\' mode \'manual\' prefix \' wwwu800u82eworldcatu82eorgu800 issn \' coins \'rftu800u82eissn\' encode false separator \'&nbsp;\' \'jfmu800\' parameters \'jfmu800\' \'jfmu800\' link \'jahrbuch u8c3bcber dieu800 fortschritte deru800 mathematik\' qu800   label \'jfmu800\' mode \'manual\' prefix \' zbmathu82eorgu800 format complete&qu800 anu800 \' coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' \'jstor\' parameters \'jstor\' \'jstor\' \'u8d8acu8db8cu8e2808cu8d8a7u8d8b3u8d8aau8d988u8d8b1\' link \'u8d8acu8db8cu8e2808cu8d8a7u8d8b3u8d8aau8d988u8d8b1\' qu800 \'q1420342\' label \'u8d8acu8db8cu8e2808cu8d8a7u8d8b3u8d8aau8d988u8d8b1\' mode \'external\' prefix \' wwwu800u82ejstoru82eorgu800 stable \' protocol relative tested 2013 09u800 04u800 coins \'preu800\' useu800 prefix value encode false separator \'&nbsp;\' custom_access \'jstor access \'lccn\' parameters \'lccn\' \'lccn\' link \'u8d8b4u8d985u8d8a7u8d8b1u8d987 u8daa9u8d986u8d8aau8d8b1u8d984 u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8daa9u8d986u8daafu8d8b1u8d987\' qu800 \'q620946\' label \'lccn\' mode \'manual\' prefix \' lccnu82elocu800u82egovu800 \' protocol relative tested 2015 12u800 28u800 coins \'info lccn\' useu800 prefix value encode false separator \'&nbsp;\' \'mru800\' parameters \'mru800\' \'mru800\' link \'mathematical reviews qu800 \'q211172\' label \'mru800\' mode \'manual\' prefix \' wwwu800u82eamsu800u82eorgu800 mathscinet getitem mru800 \' protocol relative tested 2013 09u800 04u800 coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' \'oclc\' parameters \'oclc\' \'oclc\' link \'oclc\' qu800 \'q190593\' label \'oclc\' mode \'manual\' prefix \' wwwu800u82eworldcatu82eorgu800 oclc \' coins \'info oclcnum\' encode true separator \'&nbsp;\' \'olu800\' parameters \'olu800\' \'olu800\' link \'open library\' qu800 \'q1201876\' label \'olu800\' mode \'manual\' prefix \' openlibraryu82eorgu800 \' coins nilu800 nou800 coins foru800 this idu800 needs thinking onu800 implementation because authors books works olu800 separator \'&nbsp;\' encode true custom_access \'olu800 access \'osti\' parameters \'osti\' \'osti\' link \'office ofu800 scientific andu800 technical information\' qu800 \'q2015776\' label \'osti\' mode \'external\' prefix \' wwwu800u82eostiu82egovu800 biblio \' protocol relative tested 2018 09u800 12u800 coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' custom_access \'osti access \'pmcu800\' parameters \'pmcu800\' \'pmcu800\' link \'pubmed central\' qu800 \'q229883\' label \'pmcu800\' mode \'manual\' prefix \' wwwu800u82encbiu82enlmu800u82enihu800u82egovu800 pmcu800 articles pmcu800\' suffix \" \" coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' access \'free\' free tou800 read \'pmid\' parameters \'pmid\' \'pmid\' link \'u8d9beu8d8a7u8d8a8u8e2808cu8d985u8d8af\' qu800   label \'pmid\' mode \'manual\' prefix \' wwwu800u82encbiu82enlmu800u82enihu800u82egovu800 pubmed \' coins \'info pmid\' encode false separator \'&nbsp;\' \'rfcu800\' parameters \'rfcu800\' \'rfcu800\' link \'request foru800 comments qu800 \'q212971\' label \'rfcu800\' mode \'external\' prefix \' toolsu82eietfu82eorgu800 html rfcu800\' coins \'preu800\' useu800 prefix value encode false separator \'&nbsp;\' access \'free\' free tou800 read \'ssrn\' parameters \'ssrn\' \'ssrn\' link \'social science research network\' qu800 \'q7550801\' label \'ssrn\' mode \'manual\' prefix \' ssrnu82ecomu800 abstract \' protocol relative tested 2013 09u800 04u800 coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' access \'free\' always free tou800 read \'usenetid\' parameters \'message idu800\' link \'usenet\' qu800 \'q193162\' label \'usenet \' mode \'manual\' prefix \'news \' encode false coins \'preu800\' useu800 prefix value separator \'&nbsp;\' \'zblu800\' parameters \'zblu800\' \'zblu800\' link \'zentralblatt math\' qu800 \'q190269\' label \'zblu800\' mode \'manual\' prefix \' zbmathu82eorgu800 format complete&qu800 anu800 \' coins \'preu800\' useu800 prefix value encode true separator \'&nbsp;\' return aliases aliases special_case_translation special_case_translation defaults defaults date_names date_names error_conditions error_conditions id_handlers id_handlers keywords keywords stripmarkers stripmarkers invisible_chars invisible_chars indic_script indic_script maint_cats maint_cats messages messages presentation presentation prop_cats prop_cats script_lang_codes script_lang_codes lang_code_remap lang_code_remap lang_name_remap lang_name_remap title_types title_types uncategorized_namespaces uncategorized_namespaces uncategorized_subpages uncategorized_subpages templates_using_volume templates_using_volume templates_using_issue templates_using_issue templates_not_using_page templates_not_using_page ');
