Wikipedia gvwiki https://gv.wikipedia.org/wiki/Ard-ghuillag MediaWiki 1.47.0-wmf.14 first-letter Meanyn Er lheh Resooney Ymmydeyr Resooney ymmydeyr Wikipedia Resooney Wikipedia Coadan Resooney coadan MediaWiki Resooney MediaWiki Clowan Resooney clowan Cooney Resooney cooney Ronney Resooney ronney TimedText TimedText talk Module Module talk Event Event talk Yn Pheroo 0 2175 387375 387374 2026-08-05T12:07:20Z MacTire02 219 lettyraghey 387375 wikitext text/x-wiki {{Kishtey fys çheer |ennym_dooghyssagh = Pobblaght y Pheroo |ennym_foddey_cadjincliaghtagh= {{nobold|República del Perú {{small|([[Spaainish]])}}<br/>{{rolley yn-filley |titlestyle = background:transparent;line-height:normal;text-align:center;|title = {{nobold|Enmyn co-oikoil}} |{{Infobox |subbox=yes |bodystyle=font-size:80%;font-weight:normal; |rowclass1 = mergedrow |label1=[[Quechua]]: |data1={{lang|qu|Piruw Ripuwlika}} |rowclass2 = mergedrow |label2=[[Aymarish]]: |data2={{lang|ay|Piruwxa Ripuwlika}} }} }} }} |ennym_gienneydagh = y Pheroo |jalloo_brattagh = Flag of Peru.svg |jalloo_cleinney = Escudo nacional del Perú.svg |jalloo_caslys = Peru (orthographic projection).svg |jarroo-raa = {{lang|es|"[[Shickyr as Maynrey da'n Unnaneys|Firme y feliz por la unión]]{{noitalic|"}}|nolink=on}}<br />"Shickyr as Maynrey da'n Unnaneys" |arrane_ashoonagh = {{lang|es|"[[Arrane Ashoonagh y Pheroo|Himno Nacional del Perú]]"}}<br />"Arrane Ashoonagh y Pheroo"{{parabr}}{{center|[[Coadan:United States Navy Band - Marcha Nacional del Perú.ogg]]}} |çhengaghyn_oikoil = [[Spaainish]] |sorçh_çhengaghyn = Çhengaghyn co-oikoil |çhengaghyn = {{Plainlist| * [[Quechua]] * [[Aymarish]] * [[Çhengaghyn y Pheroo|Çhengaghyn bun-dooghyssagh elley]] }} |possanyn_kynneeagh = |preeu-valley = [[Lima]] |latd=12 |latm=02.6 |latNS=S |longd=77 |longm=01.7 |longEW=W |latNSgael=Yiass |longEWgael=Heear |balley_smoo = preeu-valley |sorçh_reiltys = [[Pobblaght lieh-eaghtyraneagh]] unnaneagh |enmys1_fer-toshee = [[Eaghtyrane y Pheroo|Eaghtyrane]] |ennym1_fer-toshee = [[Keiko Fujimori]] |enmys2_fer-toshee = [[Lhiass-eaghtyrane y Pheroo|Lhiass-eaghtyrane]] |ennym2_fer-toshee = [[Luis Galarreta]] |enmys3_fer-toshee = [[Eaghtyrane Choonseil Shirveishee yn Pheroo|Ard-vinishter]] |ennym3_fer-toshee = [[Luis Galarreta]] |enmys4_fer-toshee = [[Eaghtyrane Chohionnal Phobblaght y Pheroo|Eaghtyrane y Chohionnal]] |ennym4_fer-toshee = [[Miki Torres]]/<br>[[Óscar de Jesús Reto Otero]] |eaghtyr_km2 = 1,285,216 |eaghtyr_mi_ker = 496,222 |eaghtyr_rhenk = 20oo |ushtey_sy_cheead = 8.8 |pobble_ooley = 28,220,764 |blein_ooley_pobble = 2007 |rhenk_ooley_pobble = |pobble_coontey = {{WD Earroo yn Phobble cour Kishtey Fys}} |blein_coontey_pobble = |rhenk_coontey_pobble = |glooaght_pobble_km2 = 22 |glooaght_pobble_mi_ker = 57 |rhenk_glooaght_pobble = 193oo |blein_LTS_CCK = 2025 |LTS_CCK = {{increase}} $643.05 billoon<ref name="IMFWEO.PE">{{cite web |url=https://www.imf.org/en/Publications/WEO/weo-database/2023/October/weo-report?c=293,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2020&ey=2028&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1 |title=World Economic Outlook Database, October 2023 Edition. (Peru) |publisher=[[Tashtey Argidoil Eddyrashoonagh]] |date=10 Jerrey Fouyir 2023 |access-date=12 Jerrey Fouyir 2023 |archive-date=29 Jerrey Fouyir 2023 |archive-url=https://web.archive.org/web/20231029022041/https://www.imf.org/en/Publications/WEO/weo-database/2023/October/weo-report?c=293,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2020&ey=2028&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1 |url-status=live}}</ref> |rhenk_LTS_CCK = 47oo |LTS_CCK_yn_dooinney = {{increase}} $18,689<ref name="IMFWEO.PE" /> |rhenk_LTS_CCK_yn_dooinney = 99oo |LTS_ennymagh = {{increase}} $303.3 billoon<ref name="IMFWEO.PE" /> |rhenk_LTS_ennymagh = 47oo |blein_LTS_ennymagh = 2025 |LTS_ennymagh_yn_dooinney = {{increase}} $8,814<ref name="IMFWEO.PE" /> |rhenk_LTS_ennymagh_yn_dooinney = 86oo |Gini = 40.2<ref>{{cite web |url=https://data.worldbank.org/indicator/SI.POV.GINI?locations=PE |title=Gini Index |publisher=[[yn Banc Dowanagh|Y Banc Dowanagh]] |access-date=12 Mayrnt 2024 |archive-date=3 Mayrnt 2024 |archive-url=https://web.archive.org/web/20240303115916/https://data.worldbank.org/indicator/SI.POV.GINI?locations=PE |url-status=live}}</ref> |blein_Gini = 2022 |ronney_Gini = |blein_ALD = 2023 |ALD = 0.794<ref>{{cite web|url=https://hdr.undp.org/data-center/specific-country-data#/countries/PER|title=Human Development Report 2023/24|language=en|publisher=[[Claare Lhiasaghey ny h-Ashoonyn Unnaneysit]]|date=13 March 2024|access-date=13 Mayrnt 2024|archive-date=13 Mayrnt 2024|archive-url=https://web.archive.org/web/20240313164319/https://hdr.undp.org/system/files/documents/global-report-document/hdr2023-24reporten.pdf|url-status=live}}</ref> |rhenk_ALD = 79oo |ronney_ALD = |sorçh_kiondeeaght = [[Caggey Neuchrogheydys y Pheroo|Neuchrogheydys]] |note_kiondeeaght = veih'n [[Shennaghys y Spaainey (1814-1873)|Spaainey]] | taghyrt1_bunnit = [[Caggey Neuchrogheydys y Pheroo|Fogrit magh]] | date1_bunnit = 28 Jerrey Souree 1821 | taghyrt2_bunnit = [[Cah Ayacucho|Co-hickyrit]] | date2_bunnit = 9 Nollick 1824 | taghyrt3_bunnit = Ennit | date3_bunnit = 14 Luanistyn 1879 |argid = [[Sol y Pheroo]] |coad_argid = PEN |traa_ynnydagh = [[Traa ynnydagh y Pheroo|PET]] |ashchur_utc = -5 |traa_ynnydagh_TTLS = |ashchur_utc_TTLS = |cctld = [[.pe]] |coad_çhellvane = 51 |fo-note1 = }} She çheer ayns [[America Yiass]] ee '''yn Pheroo''' ({{lang-es|Perú}}, [[Quechua]]: ''Piruw'', [[Aymarish]]: ''Piruw''). T'ee çhemmit liorish [[Ecuador]] as [[Yn Cholombey|y Cholombey]] da'n twoaie, [[Yn Vrasseel|y Vrasseel]] da'n shiar, [[Yn Volivia|y Volivia]] da'n shiar yiass, liorish [[Yn Çhillee|y Çhillee]] da'n jiass as liorish [[Yn Keayn Sheealtagh|y Cheayn Sheealtagh]] da'n sheear. She [[Lima]] yn [[preeu-valley]]. [[File:Peru - Regions and departments (labeled).svg|thumb|250px| Yn Pheroo]] [[File:Peru Machu Picchu Sunrise.jpg|thumb|250px| Machu Picchu - Yn Pheroo]] ==Imraaghyn== {{reflist}} {{commonscat|Peru|Yn Pheroo}} {{America Yiass}} {{Gurneil eaghtyrys}}{{Coord|10|S|76|W|region:PE|display=title}} {{DEFAULTSORT:Pheroo, Yn}} {{bun}} [[Ronney:Yn Pheroo| ]] [[Ronney:Yn Boodeeys Andeeagh]] [[Ronney:Çheeraghyn America Yiass]] [[Ronney:Eear-choloinyn Spaainagh]] [[Ronney:Çheeraghyn-oltey ny h-Ashoonyn Unnaneysit]] [[Ronney:Pobblaghtyn]] [[Ronney:Steatyn as thallooyn bunnit 'sy vlein 1821]] [[Ronney:Clean shiveeltaght]] [[Ronney:CPTPP]] fuay81otd5bqhjtt8asw7k5j8dkja8b Ronney:1935 14 3872 387603 273954 2026-08-05T19:17:38Z MacTire02 219 clowan noa 387603 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1813 14 3874 387727 280633 2026-08-05T23:24:19Z MacTire02 219 clowan noa 387727 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1812 14 3906 387728 273970 2026-08-05T23:24:27Z MacTire02 219 clowan noa 387728 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1732 14 3907 387806 326823 2026-08-05T23:38:39Z MacTire02 219 clowan noa 387806 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1870 14 3909 387670 280640 2026-08-05T23:07:31Z MacTire02 219 clowan noa 387670 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1818 14 3911 387722 280642 2026-08-05T23:23:34Z MacTire02 219 clowan noa 387722 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1848 14 3913 387692 280645 2026-08-05T23:13:04Z MacTire02 219 clowan noa 387692 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1903 14 3915 387637 273971 2026-08-05T23:01:15Z MacTire02 219 clowan noa 387637 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1950 14 3917 387588 273972 2026-08-05T19:14:57Z MacTire02 219 clowan noa 387588 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1952 14 3920 387586 273974 2026-08-05T19:14:41Z MacTire02 219 clowan noa 387586 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1998 14 3922 387520 281163 2026-08-05T18:55:09Z MacTire02 219 clowan noa 387520 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1977 14 3926 387544 273975 2026-08-05T19:02:38Z MacTire02 219 clowan noa 387544 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1557 14 3929 387942 326552 2026-08-06T00:08:59Z MacTire02 219 clowan noa 387942 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1491 14 3930 387993 386960 2026-08-06T00:18:57Z MacTire02 219 clowan noa 387993 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1932 14 3933 387606 273977 2026-08-05T19:18:04Z MacTire02 219 clowan noa 387606 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1882 14 3935 387658 280649 2026-08-05T23:05:25Z MacTire02 219 clowan noa 387658 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1941 14 3937 387597 273984 2026-08-05T19:16:14Z MacTire02 219 clowan noa 387597 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1960 14 3939 387578 273985 2026-08-05T19:13:31Z MacTire02 219 clowan noa 387578 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1970 14 3941 387551 280652 2026-08-05T19:03:39Z MacTire02 219 clowan noa 387551 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1958 14 3943 387580 273986 2026-08-05T19:13:49Z MacTire02 219 clowan noa 387580 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1949 14 3945 387589 273987 2026-08-05T19:15:05Z MacTire02 219 clowan noa 387589 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1943 14 3947 387595 273988 2026-08-05T19:15:57Z MacTire02 219 clowan noa 387595 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1942 14 3951 387596 273990 2026-08-05T19:16:05Z MacTire02 219 clowan noa 387596 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1934 14 3953 387604 273991 2026-08-05T19:17:47Z MacTire02 219 clowan noa 387604 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1968 14 3955 387570 281165 2026-08-05T19:12:22Z MacTire02 219 clowan noa 387570 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1940 14 4131 387598 274072 2026-08-05T19:16:23Z MacTire02 219 clowan noa 387598 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1814 14 4134 387726 280626 2026-08-05T23:24:10Z MacTire02 219 clowan noa 387726 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1865 14 4136 387675 280627 2026-08-05T23:09:56Z MacTire02 219 clowan noa 387675 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1937 14 4142 387601 274076 2026-08-05T19:17:20Z MacTire02 219 clowan noa 387601 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1892 14 4174 387648 280630 2026-08-05T23:03:16Z MacTire02 219 clowan noa 387648 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1973 14 4176 387548 280622 2026-08-05T19:03:13Z MacTire02 219 clowan noa 387548 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1685 14 4184 387845 278322 2026-08-05T23:44:57Z MacTire02 219 clowan noa 387845 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1881 14 4186 387659 280623 2026-08-05T23:05:35Z MacTire02 219 clowan noa 387659 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1750 14 4187 387790 280624 2026-08-05T23:36:16Z MacTire02 219 clowan noa 387790 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1916 14 4189 387624 380479 2026-08-05T22:58:59Z MacTire02 219 clowan noa 387624 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1963 14 4266 387575 280628 2026-08-05T19:13:06Z MacTire02 219 clowan noa 387575 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1980 14 4281 387541 280643 2026-08-05T19:00:27Z MacTire02 219 clowan noa 387541 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1962 14 4297 387576 274121 2026-08-05T19:13:16Z MacTire02 219 clowan noa 387576 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1981 14 4302 387540 280646 2026-08-05T19:00:16Z MacTire02 219 clowan noa 387540 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1990 14 4338 387530 280657 2026-08-05T18:57:15Z MacTire02 219 clowan noa 387530 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1983 14 4340 387538 280658 2026-08-05T18:59:46Z MacTire02 219 clowan noa 387538 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1974 14 4341 387547 280660 2026-08-05T19:03:04Z MacTire02 219 clowan noa 387547 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1978 14 4358 387543 280662 2026-08-05T19:02:29Z MacTire02 219 clowan noa 387543 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1955 14 4361 387583 274154 2026-08-05T19:14:14Z MacTire02 219 clowan noa 387583 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1982 14 4365 387539 280663 2026-08-05T19:00:05Z MacTire02 219 clowan noa 387539 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1979 14 4375 387542 280664 2026-08-05T19:02:20Z MacTire02 219 clowan noa 387542 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1987 14 4376 387533 280665 2026-08-05T18:57:48Z MacTire02 219 clowan noa 387533 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1965 14 4383 387573 280667 2026-08-05T19:12:47Z MacTire02 219 clowan noa 387573 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1951 14 4384 387587 274167 2026-08-05T19:14:50Z MacTire02 219 clowan noa 387587 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:37 14 4391 387555 274170 2026-08-05T19:05:10Z MacTire02 219 clowan noa 387555 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:68 14 4393 387557 278326 2026-08-05T19:05:45Z MacTire02 219 clowan noa 387557 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:65 14 4395 387556 285553 2026-08-05T19:05:33Z MacTire02 219 clowan noa 387556 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:3 14 4398 387554 274179 2026-08-05T19:04:49Z MacTire02 219 clowan noa 387554 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2 14 4399 387553 274182 2026-08-05T19:04:39Z MacTire02 219 clowan noa 387553 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1 14 4400 387552 274184 2026-08-05T19:04:23Z MacTire02 219 clowan noa 387552 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1911 14 4420 387629 380473 2026-08-05T22:59:51Z MacTire02 219 cl 387629 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1997 14 4422 387523 280674 2026-08-05T18:56:11Z MacTire02 219 clowan noa 387523 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1757 14 4452 387783 280680 2026-08-05T23:35:09Z MacTire02 219 clowan noa 387783 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1836 14 4454 387704 280682 2026-08-05T23:20:49Z MacTire02 219 clowan noa 387704 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1758 14 4463 387782 280683 2026-08-05T23:35:00Z MacTire02 219 clowan noa 387782 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1831 14 4465 387709 281172 2026-08-05T23:21:34Z MacTire02 219 clowan noa 387709 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1782 14 4467 387758 324939 2026-08-05T23:30:55Z MacTire02 219 clowan noa 387758 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1826 14 4469 387714 281173 2026-08-05T23:22:19Z MacTire02 219 clowan noa 387714 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1827 14 4470 387713 280688 2026-08-05T23:22:10Z MacTire02 219 clowan noa 387713 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1751 14 4473 387789 278722 2026-08-05T23:36:07Z MacTire02 219 clowan noa 387789 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1815 14 4478 387725 280690 2026-08-05T23:24:01Z MacTire02 219 clowan noa 387725 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1852 14 4480 387688 280691 2026-08-05T23:12:08Z MacTire02 219 clowan noa 387688 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1790 14 4484 387750 280692 2026-08-05T23:29:27Z MacTire02 219 clowan noa 387750 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1862 14 4486 387678 280693 2026-08-05T23:10:26Z MacTire02 219 clowan noa 387678 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1923 14 4489 387615 274229 2026-08-05T19:19:57Z MacTire02 219 clowan noa 387615 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1988 14 4501 387532 280695 2026-08-05T18:57:39Z MacTire02 219 clowan noa 387532 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1000 14 4526 387495 274249 2026-08-05T17:52:23Z MacTire02 219 ++ 387495 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1964 14 4532 387574 280699 2026-08-05T19:12:57Z MacTire02 219 clowan noa 387574 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1897 14 4561 387643 280654 2026-08-05T23:02:23Z MacTire02 219 clowan noa 387643 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2007 14 4565 388038 280659 2026-08-06T00:27:31Z MacTire02 219 clowan noa 388038 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1928 14 4567 387610 274264 2026-08-05T19:18:48Z MacTire02 219 clowan noa 387610 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1833 14 4578 387707 280671 2026-08-05T23:21:16Z MacTire02 219 clowan noa 387707 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1735 14 4579 387804 326212 2026-08-05T23:38:23Z MacTire02 219 clowan noa 387804 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1841 14 4582 387699 280673 2026-08-05T23:14:09Z MacTire02 219 clowan noa 387699 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1904 14 4584 387636 274278 2026-08-05T23:01:06Z MacTire02 219 cl 387636 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1957 14 4590 387581 274283 2026-08-05T19:13:57Z MacTire02 219 clowan noa 387581 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1840 14 4594 387700 280677 2026-08-05T23:14:18Z MacTire02 219 clowan noa 387700 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1893 14 4596 387647 280678 2026-08-05T23:03:07Z MacTire02 219 clowan noa 387647 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1986 14 4597 387534 280679 2026-08-05T18:57:58Z MacTire02 219 clowan noa 387534 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1984 14 4598 387537 280681 2026-08-05T18:59:34Z MacTire02 219 clowan noa 387537 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2008 14 4604 388037 280684 2026-08-06T00:27:19Z MacTire02 219 clowan noa 388037 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1948 14 4609 387590 274291 2026-08-05T19:15:15Z MacTire02 219 clowan noa 387590 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1995 14 4611 387525 280687 2026-08-05T18:56:28Z MacTire02 219 clowan noa 387525 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:999 14 4619 387492 278791 2026-08-05T17:47:52Z MacTire02 219 clowan noa 387492 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:658 14 4620 387470 285555 2026-08-05T17:42:42Z MacTire02 219 clowan noa 387470 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:650 14 4621 387469 285554 2026-08-05T17:42:26Z MacTire02 219 clowan noa 387469 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:100 14 4622 387559 285532 2026-08-05T19:06:22Z MacTire02 219 clowan noa 387559 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1079 14 4623 387502 278120 2026-08-05T17:53:40Z MacTire02 219 clowan noa 387502 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1100 14 4624 387506 285534 2026-08-05T17:54:18Z MacTire02 219 clowan noa 387506 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1200 14 4625 387401 386970 2026-08-05T16:13:44Z MacTire02 219 ronney elley 387401 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1200}} [[Ronney:13oo eash rere blein|00]] [[Ronney:1200yn| 0]] 7gcjfkg3bnjjjcrnm5fcepk9s82yj9e 387415 387401 2026-08-05T16:30:59Z MacTire02 219 clowan noa 387415 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1266 14 4626 387427 386982 2026-08-05T17:31:59Z MacTire02 219 clowan noa 387427 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1300 14 4627 387431 278805 2026-08-05T17:33:31Z MacTire02 219 clowan noa 387431 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1301 14 4628 387432 278125 2026-08-05T17:33:40Z MacTire02 219 clowan noa 387432 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1302 14 4629 387433 278806 2026-08-05T17:33:51Z MacTire02 219 clowan noa 387433 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1303 14 4630 387434 278126 2026-08-05T17:34:05Z MacTire02 219 clowan noa 387434 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1304 14 4631 387435 278831 2026-08-05T17:34:17Z MacTire02 219 clowan noa 387435 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1305 14 4632 387436 278127 2026-08-05T17:34:30Z MacTire02 219 clowan noa 387436 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1306 14 4633 387437 278128 2026-08-05T17:34:46Z MacTire02 219 clowan noa 387437 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1307 14 4634 387438 278129 2026-08-05T17:34:56Z MacTire02 219 clowan noa 387438 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1308 14 4635 387439 278130 2026-08-05T17:35:05Z MacTire02 219 clowan noa 387439 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1309 14 4636 387440 278131 2026-08-05T17:35:20Z MacTire02 219 clowan noa 387440 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1310 14 4637 387441 280694 2026-08-05T17:35:29Z MacTire02 219 clowan noa 387441 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1311 14 4638 387442 278132 2026-08-05T17:35:37Z MacTire02 219 clowan noa 387442 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1312 14 4639 387443 278832 2026-08-05T17:35:49Z MacTire02 219 clowan noa 387443 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1313 14 4640 387444 278133 2026-08-05T17:36:01Z MacTire02 219 clowan noa 387444 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1314 14 4641 387445 278134 2026-08-05T17:36:10Z MacTire02 219 clowan noa 387445 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1380 14 4642 387451 386994 2026-08-05T17:37:42Z MacTire02 219 clowan noa 387451 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1400 14 4643 387453 278844 2026-08-05T17:38:07Z MacTire02 219 clowan noa 387453 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1538 14 4644 387958 326839 2026-08-06T00:12:03Z MacTire02 219 clowan noa 387958 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1540 14 4645 387956 325999 2026-08-06T00:11:44Z MacTire02 219 clowan noa 387956 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1765 14 4646 387775 278845 2026-08-05T23:33:52Z MacTire02 219 clowan noa 387775 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1800 14 4647 387740 280696 2026-08-05T23:27:18Z MacTire02 219 clowan noa 387740 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1801 14 4648 387739 280697 2026-08-05T23:27:10Z MacTire02 219 clowan noa 387739 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1822 14 4649 387718 280698 2026-08-05T23:22:56Z MacTire02 219 clowan noa 387718 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1900 14 4650 387640 274293 2026-08-05T23:01:48Z MacTire02 219 clowan noa 387640 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1901 14 4651 387639 274294 2026-08-05T23:01:37Z MacTire02 219 clowan noa 387639 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2000 14 4652 387521 301864 2026-08-05T18:55:37Z MacTire02 219 clowan noa 387521 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2001 14 4653 388044 280701 2026-08-06T00:28:31Z MacTire02 219 clowan noa 388044 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2002 14 4654 388043 280702 2026-08-06T00:28:21Z MacTire02 219 clowan noa 388043 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2003 14 4655 388042 281174 2026-08-06T00:28:10Z MacTire02 219 clowan noa 388042 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2004 14 4656 388041 280703 2026-08-06T00:28:00Z MacTire02 219 clowan noa 388041 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2005 14 4657 388040 280704 2026-08-06T00:27:50Z MacTire02 219 clowan noa 388040 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2006 14 4658 388039 280705 2026-08-06T00:27:40Z MacTire02 219 clowan noa 388039 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1999 14 4659 387522 280706 2026-08-05T18:55:50Z MacTire02 219 clowan noa 387522 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1902 14 4660 387638 274295 2026-08-05T23:01:24Z MacTire02 219 clowan noa 387638 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1917 14 4661 387623 380480 2026-08-05T22:58:47Z MacTire02 219 clowan noa 387623 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1918 14 4662 387622 380481 2026-08-05T22:58:37Z MacTire02 219 clowan noa 387622 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1919 14 4663 387621 380482 2026-08-05T22:58:25Z MacTire02 219 clowan noa 387621 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1920 14 4664 387620 274299 2026-08-05T22:58:14Z MacTire02 219 clowan noa 387620 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1921 14 4665 387619 274300 2026-08-05T22:58:04Z MacTire02 219 clowan noa 387619 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1922 14 4666 387618 274301 2026-08-05T22:57:53Z MacTire02 219 clowan noa 387618 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1924 14 4667 387614 274302 2026-08-05T19:19:50Z MacTire02 219 clowan noa 387614 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1925 14 4668 387613 274303 2026-08-05T19:19:12Z MacTire02 219 clowan noa 387613 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1926 14 4669 387612 274304 2026-08-05T19:19:04Z MacTire02 219 clowan noa 387612 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1927 14 4670 387611 274305 2026-08-05T19:18:56Z MacTire02 219 clowan noa 387611 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1929 14 4671 387609 274306 2026-08-05T19:18:33Z MacTire02 219 clowan noa 387609 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1930 14 4672 387608 274307 2026-08-05T19:18:26Z MacTire02 219 clowan noa 387608 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1931 14 4673 387607 274308 2026-08-05T19:18:14Z MacTire02 219 clowan noa 387607 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1933 14 4674 387605 274309 2026-08-05T19:17:55Z MacTire02 219 clowan noa 387605 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1936 14 4675 387602 274310 2026-08-05T19:17:29Z MacTire02 219 clowan noa 387602 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1938 14 4676 387600 274311 2026-08-05T19:17:12Z MacTire02 219 clowan noa 387600 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1939 14 4677 387599 274312 2026-08-05T19:17:04Z MacTire02 219 clowan noa 387599 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1944 14 4678 387594 274313 2026-08-05T19:15:48Z MacTire02 219 clowan noa 387594 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1945 14 4679 387593 274314 2026-08-05T19:15:39Z MacTire02 219 clowan noa 387593 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1946 14 4680 387592 274315 2026-08-05T19:15:30Z MacTire02 219 clowan noa 387592 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1947 14 4681 387591 274316 2026-08-05T19:15:23Z MacTire02 219 clowan noa 387591 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1953 14 4682 387585 274317 2026-08-05T19:14:32Z MacTire02 219 clowan noa 387585 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1954 14 4683 387584 274318 2026-08-05T19:14:23Z MacTire02 219 clowan noa 387584 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1956 14 4684 387582 274319 2026-08-05T19:14:06Z MacTire02 219 clowan noa 387582 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1959 14 4685 387579 274320 2026-08-05T19:13:41Z MacTire02 219 clowan noa 387579 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1961 14 4686 387577 280707 2026-08-05T19:13:24Z MacTire02 219 clowan noa 387577 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1966 14 4687 387572 280708 2026-08-05T19:12:39Z MacTire02 219 clowan noa 387572 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1967 14 4688 387571 280709 2026-08-05T19:12:30Z MacTire02 219 clowan noa 387571 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1969 14 4689 387569 280710 2026-08-05T19:12:12Z MacTire02 219 clowan noa 387569 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1971 14 4690 387550 281175 2026-08-05T19:03:31Z MacTire02 219 clowan noa 387550 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1972 14 4691 387549 280711 2026-08-05T19:03:22Z MacTire02 219 clowan noa 387549 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1975 14 4692 387546 280712 2026-08-05T19:02:55Z MacTire02 219 clowan noa 387546 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1976 14 4693 387545 280713 2026-08-05T19:02:46Z MacTire02 219 clowan noa 387545 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1985 14 4694 387535 280714 2026-08-05T18:58:08Z MacTire02 219 clowan noa 387535 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1989 14 4695 387531 280715 2026-08-05T18:57:29Z MacTire02 219 clowan noa 387531 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1991 14 4696 387529 280716 2026-08-05T18:57:00Z MacTire02 219 clowan noa 387529 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1992 14 4697 387528 280717 2026-08-05T18:56:52Z MacTire02 219 clowan noa 387528 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1993 14 4698 387527 280718 2026-08-05T18:56:44Z MacTire02 219 clowan noa 387527 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1994 14 4699 387526 280719 2026-08-05T18:56:36Z MacTire02 219 clowan noa 387526 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1996 14 4700 387524 280720 2026-08-05T18:56:20Z MacTire02 219 clowan noa 387524 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:961 14 4704 387490 278135 2026-08-05T17:47:24Z MacTire02 219 clowan noa 387490 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1022 14 4741 387496 274338 2026-08-05T17:52:40Z MacTire02 219 clowan noa 387496 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1066 14 4743 387500 280724 2026-08-05T17:53:20Z MacTire02 219 clowan noa 387500 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1723 14 4752 387815 326846 2026-08-05T23:40:08Z MacTire02 219 clowan noa 387815 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1533 14 4766 387963 330598 2026-08-06T00:12:54Z MacTire02 219 clowan noa 387963 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1603 14 4768 387911 321451 2026-08-06T00:02:20Z MacTire02 219 clowan noa 387911 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1884 14 4787 387656 280727 2026-08-05T23:04:44Z MacTire02 219 clowan noa 387656 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1905 14 4882 387635 274381 2026-08-05T23:00:55Z MacTire02 219 clowan noa 387635 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1850 14 4896 387690 280731 2026-08-05T23:12:28Z MacTire02 219 clowan noa 387690 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1031 14 4945 387497 278138 2026-08-05T17:52:51Z MacTire02 219 clowan noa 387497 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1859 14 4946 387681 280733 2026-08-05T23:10:55Z MacTire02 219 clowan noa 387681 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1093 14 4948 387504 300269 2026-08-05T17:54:02Z MacTire02 219 clowan noa 387504 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1473 14 4982 388006 278331 2026-08-06T00:21:23Z MacTire02 219 clowan noa 388006 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1846 14 4984 387694 280737 2026-08-05T23:13:22Z MacTire02 219 clowan noa 387694 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1906 14 5004 387634 274430 2026-08-05T23:00:45Z MacTire02 219 clowan noa 387634 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1907 14 5006 387633 274432 2026-08-05T23:00:36Z MacTire02 219 clowan noa 387633 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1584 14 5049 387924 321317 2026-08-06T00:05:19Z MacTire02 219 clowan noa 387924 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1711 14 5051 387826 278838 2026-08-05T23:41:58Z MacTire02 219 clowan noa 387826 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1484 14 5054 388000 386968 2026-08-06T00:20:24Z MacTire02 219 clowan noa 388000 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1485 14 5056 387999 386967 2026-08-06T00:20:14Z MacTire02 219 clowan noa 387999 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1486 14 5058 387998 386965 2026-08-06T00:19:58Z MacTire02 219 clowan noa 387998 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1487 14 5060 387997 386964 2026-08-06T00:19:44Z MacTire02 219 clowan noa 387997 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1488 14 5062 387996 386963 2026-08-06T00:19:31Z MacTire02 219 clowan noa 387996 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1489 14 5064 387995 386952 2026-08-06T00:19:19Z MacTire02 219 clowan noa 387995 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1490 14 5066 387994 386961 2026-08-06T00:19:07Z MacTire02 219 clowan noa 387994 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1908 14 5069 387632 274464 2026-08-05T23:00:27Z MacTire02 219 clowan noa 387632 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1910 14 5076 387630 380474 2026-08-05T23:00:02Z MacTire02 219 clowan noa 387630 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1885 14 5088 387655 280739 2026-08-05T23:04:34Z MacTire02 219 clowan noa 387655 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1817 14 5092 387723 281180 2026-08-05T23:23:43Z MacTire02 219 clowan noa 387723 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1825 14 5094 387715 280740 2026-08-05T23:22:27Z MacTire02 219 clowan noa 387715 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1797 14 5098 387743 278828 2026-08-05T23:27:50Z MacTire02 219 clowan noa 387743 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1809 14 5102 387731 280741 2026-08-05T23:24:55Z MacTire02 219 clowan noa 387731 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1845 14 5108 387695 278144 2026-08-05T23:13:31Z MacTire02 219 clowan noa 387695 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1869 14 5111 387671 280742 2026-08-05T23:07:42Z MacTire02 219 clowan noa 387671 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1877 14 5113 387663 350113 2026-08-05T23:06:15Z MacTire02 219 clowan noa 387663 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1789 14 5118 387751 280744 2026-08-05T23:29:37Z MacTire02 219 clowan noa 387751 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1829 14 5120 387711 280745 2026-08-05T23:21:51Z MacTire02 219 clowan noa 387711 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1837 14 5122 387703 280746 2026-08-05T23:20:39Z MacTire02 219 clowan noa 387703 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1849 14 5124 387691 280747 2026-08-05T23:12:51Z MacTire02 219 clowan noa 387691 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1853 14 5126 387687 280748 2026-08-05T23:11:59Z MacTire02 219 clowan noa 387687 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1857 14 5128 387683 280749 2026-08-05T23:11:22Z MacTire02 219 clowan noa 387683 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1861 14 5130 387679 280750 2026-08-05T23:10:36Z MacTire02 219 clowan noa 387679 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1889 14 5132 387651 280751 2026-08-05T23:03:48Z MacTire02 219 clowan noa 387651 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1909 14 5135 387631 274499 2026-08-05T23:00:17Z MacTire02 219 clowan noa 387631 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1913 14 5137 387627 380476 2026-08-05T22:59:30Z MacTire02 219 clowan noa 387627 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1366 14 5140 387449 386990 2026-08-05T17:37:13Z MacTire02 219 clowan noa 387449 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1895 14 5146 387645 350106 2026-08-05T23:02:46Z MacTire02 219 clowan noa 387645 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1912 14 5150 387628 380475 2026-08-05T22:59:39Z MacTire02 219 clowan noa 387628 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1914 14 5154 387626 380477 2026-08-05T22:59:20Z MacTire02 219 clowan noa 387626 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1915 14 5155 387625 380478 2026-08-05T22:59:11Z MacTire02 219 clowan noa 387625 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1265 14 5219 387428 386981 2026-08-05T17:32:10Z MacTire02 219 clowan noa 387428 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1321 14 5221 387446 278785 2026-08-05T17:36:31Z MacTire02 219 clowan noa 387446 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1799 14 5225 387741 280754 2026-08-05T23:27:27Z MacTire02 219 clowan noa 387741 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1890 14 5234 387650 280755 2026-08-05T23:03:38Z MacTire02 219 clowan noa 387650 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1678 14 5269 387850 278903 2026-08-05T23:45:44Z MacTire02 219 clowan noa 387850 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1741 14 5271 387799 280759 2026-08-05T23:37:39Z MacTire02 219 clowan noa 387799 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1005 14 5272 387493 274545 2026-08-05T17:48:13Z MacTire02 219 clowan noa 387493 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1639 14 5273 387883 278333 2026-08-05T23:57:49Z MacTire02 219 clowan noa 387883 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1791 14 5274 387749 280760 2026-08-05T23:29:17Z MacTire02 219 clowan noa 387749 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1880 14 5275 387660 280761 2026-08-05T23:05:44Z MacTire02 219 clowan noa 387660 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1886 14 5276 387654 280762 2026-08-05T23:04:23Z MacTire02 219 clowan noa 387654 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1600 14 5277 387913 278334 2026-08-06T00:02:40Z MacTire02 219 clowan noa 387913 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1756 14 5278 387784 280763 2026-08-05T23:35:17Z MacTire02 219 clowan noa 387784 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1770 14 5279 387770 280764 2026-08-05T23:33:07Z MacTire02 219 clowan noa 387770 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1811 14 5280 387729 280765 2026-08-05T23:24:36Z MacTire02 219 clowan noa 387729 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1819 14 5281 387721 280766 2026-08-05T23:23:24Z MacTire02 219 clowan noa 387721 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1856 14 5282 387684 280768 2026-08-05T23:11:31Z MacTire02 219 clowan noa 387684 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1621 14 5326 387894 278335 2026-08-05T23:59:39Z MacTire02 219 clowan noa 387894 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1695 14 5328 387838 278337 2026-08-05T23:43:52Z MacTire02 219 clowan noa 387838 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1608 14 5388 387906 278336 2026-08-06T00:01:33Z MacTire02 219 clowan noa 387906 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1697 14 5391 387836 320665 2026-08-05T23:43:30Z MacTire02 219 clowan noa 387836 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1674 14 5393 387853 285550 2026-08-05T23:46:16Z MacTire02 219 clowan noa 387853 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1855 14 5969 387685 281191 2026-08-05T23:11:39Z MacTire02 219 clowan noa 387685 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1810 14 6453 387730 281531 2026-08-05T23:24:45Z MacTire02 219 clowan noa 387730 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1824 14 6456 387716 281533 2026-08-05T23:22:35Z MacTire02 219 clowan noa 387716 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1759 14 6460 387781 281544 2026-08-05T23:34:50Z MacTire02 219 clowan noa 387781 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1899 14 6499 387641 281542 2026-08-05T23:02:00Z MacTire02 219 clowan noa 387641 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1802 14 6508 387738 281511 2026-08-05T23:27:01Z MacTire02 219 clowan noa 387738 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1803 14 6510 387737 281534 2026-08-05T23:26:52Z MacTire02 219 clowan noa 387737 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1874 14 6568 387666 280781 2026-08-05T23:06:53Z MacTire02 219 clowan noa 387666 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1879 14 6575 387661 350115 2026-08-05T23:05:55Z MacTire02 219 clowan noa 387661 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1883 14 6610 387657 280783 2026-08-05T23:04:54Z MacTire02 219 clowan noa 387657 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1887 14 6613 387653 280784 2026-08-05T23:04:14Z MacTire02 219 clowan noa 387653 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1868 14 6618 387672 280785 2026-08-05T23:09:31Z MacTire02 219 clowan noa 387672 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1743 14 6694 387797 281541 2026-08-05T23:37:19Z MacTire02 219 clowan noa 387797 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1767 14 6712 387773 279090 2026-08-05T23:33:33Z MacTire02 219 clowan noa 387773 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1773 14 6719 387767 281530 2026-08-05T23:32:20Z MacTire02 219 clowan noa 387767 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1795 14 6739 387745 281529 2026-08-05T23:28:08Z MacTire02 219 clowan noa 387745 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1784 14 6747 387756 281516 2026-08-05T23:30:35Z MacTire02 219 clowan noa 387756 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1804 14 6768 387736 281536 2026-08-05T23:26:42Z MacTire02 219 clowan noa 387736 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1808 14 6782 387732 281194 2026-08-05T23:25:05Z MacTire02 219 clowan noa 387732 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1875 14 6784 387665 280788 2026-08-05T23:06:44Z MacTire02 219 clowan noa 387665 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1843 14 6813 387697 280791 2026-08-05T23:13:50Z MacTire02 219 clowan noa 387697 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1858 14 6816 387682 280787 2026-08-05T23:11:13Z MacTire02 219 clowan noa 387682 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1872 14 6852 387668 280789 2026-08-05T23:07:12Z MacTire02 219 clowan noa 387668 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2009 14 7248 388036 280796 2026-08-06T00:27:04Z MacTire02 219 clowan noa 388036 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1896 14 7388 387644 280798 2026-08-05T23:02:33Z MacTire02 219 clowan noa 387644 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1820 14 7434 387720 280803 2026-08-05T23:23:15Z MacTire02 219 clowan noa 387720 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1325 14 7513 387447 386992 2026-08-05T17:36:43Z MacTire02 219 clowan noa 387447 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1521 14 7515 387972 275137 2026-08-06T00:14:59Z MacTire02 219 clowan noa 387972 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1894 14 8013 387646 350107 2026-08-05T23:02:56Z MacTire02 219 clowan noa 387646 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1898 14 8108 387642 281224 2026-08-05T23:02:11Z MacTire02 219 clowan noa 387642 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1860 14 8191 387680 280836 2026-08-05T23:10:45Z MacTire02 219 clowan noa 387680 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1504 14 8533 387984 325109 2026-08-06T00:17:18Z MacTire02 219 clowan noa 387984 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1451 14 8534 388018 326895 2026-08-06T00:23:35Z MacTire02 219 clowan noa 388018 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1101 14 10123 387507 285535 2026-08-05T17:54:31Z MacTire02 219 clowan noa 387507 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Yn Oarpey 'sy vlein 1923 14 10594 387616 284674 2026-08-05T19:20:28Z MacTire02 219 MacTire02 moved page [[Ronney:1923 'syn Oarpey]] to [[Ronney:Yn Oarpey 'sy vlein 1923]] without leaving a redirect: aght 284674 wikitext text/x-wiki {{Commonscat|1923 in Europe}} [[Ronney:1923|Oarpey]] [[Ronney:Bleeantyn y 20oo eash 'syn Oarpey]] npox2c885h4g41c94ta3aqghsqdhv6z 387617 387616 2026-08-05T19:20:50Z MacTire02 219 ronnaghyn elley 387617 wikitext text/x-wiki {{Commonscat|1923 in Europe}} [[Ronney:1923|Oarpey]] [[Ronney:Yn Oarpey 'sy 20oo eash rere blein| 1923]] f8ca5u1o7yrvwz83vdubd6rfg0cnrnp Ronney:1675 14 13013 387852 278255 2026-08-05T23:46:05Z MacTire02 219 clowan noa 387852 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1632 14 13016 387886 278256 2026-08-05T23:58:18Z MacTire02 219 clowan noa 387886 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1863 14 13017 387677 280412 2026-08-05T23:10:16Z MacTire02 219 clowan noa 387677 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1832 14 13050 387708 281020 2026-08-05T23:21:25Z MacTire02 219 clowan noa 387708 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1593 14 13196 387919 326817 2026-08-06T00:04:26Z MacTire02 219 clowan noa 387919 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1652 14 13200 387871 325387 2026-08-05T23:55:50Z MacTire02 219 clowan noa 387871 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1666 14 13218 387859 325648 2026-08-05T23:47:30Z MacTire02 219 clowan noa 387859 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1186 14 13387 387514 278274 2026-08-05T17:55:59Z MacTire02 219 clowan noa 387514 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1471 14 13542 388008 330534 2026-08-06T00:21:47Z MacTire02 219 clowan noa 388008 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1528 14 13546 387967 325051 2026-08-06T00:13:34Z MacTire02 219 clowan noa 387967 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1753 14 13692 387787 280431 2026-08-05T23:35:47Z MacTire02 219 clowan noa 387787 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod King Chiaullee 0 13795 387384 322461 2026-08-05T13:46:41Z MacTire02 219 ++ 387384 wikitext text/x-wiki {{Kishtey fys ellyneyr kiaullee | jalloo = Kc lorient.jpg | fo-heidyl = King Chiaullee er yn ardan ayns [[An Oriant]] 'sy vlein 2008. |bleeantyn_obbree = 1994–2010yn |aa-olteynyn = {{ubl |Adam Rhodes |David Kilgallon |Russel Cowin |Gilno Carswell |Matthew Kelly }} }} Va '''King Chiaullee''' ny vann kiaullee veih [[Mannin]]. Hie yn bann ry-cheilley 'sy scoill 'sy vlein 1994, as veih'n traa shen, ren y bann cloie ayns ram feaillaghyn kiaullee er feie'n [[Reeriaght Unnaneysit]], [[yn Oarpey]], as ayns [[ny Steatyn Unnaneysit]]. Ta queig olteynyn 'sy vann: * Adam Rhodes ([[fiddyl]] as [[bouzouki]]) * David Kilgallon ([[fiddyl]]) * Russel Cowin ([[bodhrán]] as [[biol injil]]) * Gilno Carswell ([[feddan]]) * Matthew Kelly ([[gitar]] as [[mandalyn]]) Ren King Chiaullee mestey kiaull hradishoonagh ass [[Mannin]], [[Nalbin]] as [[Nerin]] marish arraneyn bunneydagh ta screeuit ec olteynyn y vann, dys mestey jeh chiaull Cheltiagh dy chur magh. Ta tree albymyn skeaylt magh ec y vann: ''Baase Cooil Stroo'' (2000), ''Reel: Ode'' (2003), as ''Nish!'' (2006), as ta ram cohoyrtyssyn jeant oc ayns albymyn elley. 'Sy vlein 2008 ren y bann cloie ayns [[Feailley Eddyr-cheltiagh An Oriant]] 'sy Vritaan, as va'n aundyr ''Trophée Cidrerie des Terroirs'' cosnit ec y vann - y chied ynnyd 'sy chohirrey bann. ==Kianglaghyn magh== * [https://web.archive.org/web/20090531080913/http://www.kciom.com/ Ynnyd-eggey oikoil] {{gurneil eaghtyrys}} {{bun}} [[Ronney:Possanyn kiaullee Manninagh]] [[Ronney:Possanyn kiaullee bunnit 'sy vlein 1994]] [[Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994]] [[Ronney:Kiaull Vannin ayns ny 1990yn]] [[Ronney:Kiaull Vannin ayns ny 2000yn]] [[Ronney:Kiaull Vannin ayns ny 2010yn]] [[Ronney:Jee-vunneeaghtyn ayns Mannin ayns ny 2010yn]] [[Ronney:Possanyn kiaull çheerey Manninagh]] ju2khco7pmkss0s0zfuotlazjtiay9a 387390 387384 2026-08-05T15:54:33Z MacTire02 219 - > ndash 387390 wikitext text/x-wiki {{Kishtey fys ellyneyr kiaullee | jalloo = Kc lorient.jpg | fo-heidyl = King Chiaullee er yn ardan ayns [[An Oriant]] 'sy vlein 2008. |bleeantyn_obbree = 1994–2010yn |aa-olteynyn = {{ubl |Adam Rhodes |David Kilgallon |Russel Cowin |Gilno Carswell |Matthew Kelly }} }} Va '''King Chiaullee''' ny vann kiaullee veih [[Mannin]]. Hie yn bann ry-cheilley 'sy scoill 'sy vlein 1994, as veih'n traa shen, ren y bann cloie ayns ram feaillaghyn kiaullee er feie'n [[Reeriaght Unnaneysit]], [[yn Oarpey]], as ayns [[ny Steatyn Unnaneysit]]. Ta queig olteynyn 'sy vann: * Adam Rhodes ([[fiddyl]] as [[bouzouki]]) * David Kilgallon ([[fiddyl]]) * Russel Cowin ([[bodhrán]] as [[biol injil]]) * Gilno Carswell ([[feddan]]) * Matthew Kelly ([[gitar]] as [[mandalyn]]) Ren King Chiaullee mestey kiaull hradishoonagh ass [[Mannin]], [[Nalbin]] as [[Nerin]] marish arraneyn bunneydagh ta screeuit ec olteynyn y vann, dys mestey jeh chiaull Cheltiagh dy chur magh. Ta tree albymyn skeaylt magh ec y vann: ''Baase Cooil Stroo'' (2000), ''Reel: Ode'' (2003), as ''Nish!'' (2006), as ta ram cohoyrtyssyn jeant oc ayns albymyn elley. 'Sy vlein 2008 ren y bann cloie ayns [[Feailley Eddyr-cheltiagh An Oriant]] 'sy Vritaan, as va'n aundyr ''Trophée Cidrerie des Terroirs'' cosnit ec y vann &ndash; y chied ynnyd 'sy chohirrey bann. ==Kianglaghyn magh== * [https://web.archive.org/web/20090531080913/http://www.kciom.com/ Ynnyd-eggey oikoil] {{gurneil eaghtyrys}} {{bun}} [[Ronney:Possanyn kiaullee Manninagh]] [[Ronney:Possanyn kiaullee bunnit 'sy vlein 1994]] [[Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994]] [[Ronney:Kiaull Vannin ayns ny 1990yn]] [[Ronney:Kiaull Vannin ayns ny 2000yn]] [[Ronney:Kiaull Vannin ayns ny 2010yn]] [[Ronney:Jee-vunneeaghtyn ayns Mannin ayns ny 2010yn]] [[Ronney:Possanyn kiaull çheerey Manninagh]] ct2pf3oi6ra38iv7bvpvor4ovmbcvj0 Ronney:1095 14 14058 387505 278280 2026-08-05T17:54:10Z MacTire02 219 clowan noa 387505 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1775 14 14403 387765 325145 2026-08-05T23:32:01Z MacTire02 219 clowan noa 387765 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2010 14 14614 388035 280455 2026-08-06T00:26:51Z MacTire02 219 clowan noa 388035 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2011 14 14883 388034 280465 2026-08-06T00:26:40Z MacTire02 219 clowan noa 388034 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1891 14 15055 387649 280467 2026-08-05T23:03:29Z MacTire02 219 clowan noa 387649 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1807 14 15255 387733 280468 2026-08-05T23:25:14Z MacTire02 219 clowan noa 387733 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1805 14 15256 387735 280469 2026-08-05T23:25:35Z MacTire02 219 clowan noa 387735 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1806 14 15257 387734 280470 2026-08-05T23:25:23Z MacTire02 219 clowan noa 387734 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1873 14 15452 387667 281091 2026-08-05T23:07:02Z MacTire02 219 clowan noa 387667 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2012 14 16737 388033 280528 2026-08-06T00:26:30Z MacTire02 219 clowan noa 388033 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Yn Phroosh 0 17408 387377 360166 2026-08-05T12:23:48Z MacTire02 219 rere en 387377 wikitext text/x-wiki {{Kishtey fys shenn-çheer |mooar-rheynn = Yn Oaraishey |ard = |stayd = |çheer = |eash = |sorçh_reiltys = [[Reeriaght]] |tammylt = |blein_hoshee = 1525 |blein_yerrinagh = 1947 |ennym_gienneydagh= y Phroosh |ennym_dooghyssagh= Preußen |ennym_foddey_cadjincliaghtit = Yn Phroosh |taghyrt_toshiaght= [[Duicaght y Phroosh]] |date_toshee = 10 Averil |taghyrt_jerrey = [[Coonseil Stiuree ny Cochaarjyn|Scryssey]] (''[[de jure]]'') |date_jerrinagh = 25 T. Arree |taghyrt1 = [[Brandenburg-Y Phroosh|Unnaneyssey rish Brandenburg]] |date_taghyrt1 = 27 Luanistyn 1618 |taghyrt2 = [[Reeriaght y Phroosh]] |date_taghyrt2 = 18 J. Geuree 1701 |taghyrt3 = [[Steat Seyr y Phroosh]] |date_taghyrt3 = 9 Sauin 1918 |taghyrt4 = [[Preußenschlag|Scryssey]] (''[[de facto]]'') |date_taghyrt4 = 30 J. Geuree 1934 |caslys_brattagh = Flag_of_the_Kingdom_of_Prussia_(1803-1892).svg |caslys_cowrey = Preußischer_Adler.svg |sorçh_cowrey = Armys |caslys_çheerey = Map-DR-Prussia.svg |preeu-valley = [[Königsberg]], as [[Berleen]] ny s'anmey |jarroo-raa_ashoonagh = Suum cuique <small>([[Ladjyn]])</small><br />"Leshyn, ny ta toilçhin" |çhengaghyn_cadjin= [[Germaanish]] |staydraa_blein1 = 1939 |staydraa_eaghtyr1= 297007 |staydraa_pob1 = 41915040 }} She reeriaght Ghermaanagh as y bun eck ayns [[Diucaght y Proosh]] as [[Marg-eearlaght Brandenburg]] va'n '''Phroosh''' ({{lang-de|Preußen}}; {{lang-la|Borussia, Prutenia}}; {{lang-lv|Prūsija}}; {{lang-lt|Prūsija}}; {{lang-pl|Prusy}}; [[Shenn Phrooshish]]: ''Prūsija''; {{lang-dk|Prøjsen}}; {{lang-ru|Пруссия, ''Prussija''}}). Er feie ny keead-bleeantyn ren reeaghyn ass [[Reeraghtys Hohenzollern]] stiurey yn Phroosh. Ren ad mooadaghey yn steat liorish y çheshaght chaggee feer-reaghit ec y steat. Ren y Phroosh cur cummey er [[shennaghys y Ghermaan]] as y preeu-valley eck ayns [[Berleen]] lurg y vlein 1451. Roish y vlein 1871 haink er ram steatyn beggey dy ve conastit as kianglt rish y Phroosh, obbraghey ren cur er bun [[Impiraght y Ghermaan]]. 'Sy vlein 1918 dirree y lught reeoil magh ass oik as chaill y lught ooasle y chooid smoo jeh ny pooraghyn politickagh oc. Haink jerrey lesh y Phroosh 'sy vlein 1932 dy breeoil, as haink jerrey lhee dy h-oikoil 'sy vlein 1947. {{Gurneil eaghtyrys}} {{DEFAULTSORT:Phroosh, Yn}} [[Ronney:Yn Phroosh| ]] [[Ronney:Eear-heeraghyn yn Oarpey]] [[Ronney:Shennaghys Brandenburg]] [[Ronney:Bunneeaghtyn 'sy Phroosh 'sy vlein 1525]] [[Ronney:Jee-vunneeaghtyn 'sy Phroosh 'sy vlein 1947]] [[Ronney:Ardjyn shenndeeagh]] {{bun}} r1khp2yj49j06kl7wzrjbaf09cgqf34 Ronney:2013 14 17635 388032 277783 2026-08-06T00:26:21Z MacTire02 219 clowan noa 388032 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1663 14 18029 387861 285549 2026-08-05T23:47:48Z MacTire02 219 clowan noa 387861 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1701 14 18585 387833 285439 2026-08-05T23:43:04Z MacTire02 219 clowan noa 387833 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1744 14 18587 387796 285441 2026-08-05T23:37:10Z MacTire02 219 clowan noa 387796 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1564 14 18635 387937 286020 2026-08-06T00:08:02Z MacTire02 219 clowan noa 387937 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1257 14 18641 387430 386979 2026-08-05T17:32:31Z MacTire02 219 clowan noa 387430 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1475 14 18646 388004 286034 2026-08-06T00:21:03Z MacTire02 219 clowan noa 388004 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1838 14 18648 387702 286036 2026-08-05T23:14:36Z MacTire02 219 clowan noa 387702 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:600 14 19277 387467 291402 2026-08-05T17:42:00Z MacTire02 219 clowan noa 387467 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2014 14 19371 388031 294609 2026-08-06T00:26:10Z MacTire02 219 clowan noa 388031 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ymmydeyr:Llywelyn2000/List of Manx people 2 19947 388163 387207 2026-08-06T10:21:00Z ListeriaBot 10339 Wikidata list updated [V2] 388163 wikitext text/x-wiki {{Wikidata list |sparql=SELECT ?item ?yob ?yod WHERE { ?item wdt:P19 ?pob . ?pob wdt:P131* wd:Q9676 . OPTIONAL { ?item wdt:P569 ?dob . BIND(YEAR(?dob) as ?yob) } OPTIONAL { ?item wdt:P570 ?dod . BIND(YEAR(?dod) as ?yod) } . } |wdq=. |sort=569 |section=31 |columns=number:#,P18:XXX Add 'Image' in Manx here please! XXX,label:XXX change to 'Name' in Manx! XXX,?yob:XXX dob XXX,?yod:XXX date of death XXX,P19:xxx Place of birth xxx }} == human == {| class='wikitable sortable' ! # ! XXX Add 'Image' in Manx here please! XXX ! XXX change to 'Name' in Manx! XXX ! XXX dob XXX ! XXX date of death XXX ! xxx Place of birth xxx |- | style='text-align:right'| 1 | | ''[[:d:Q135256163|Michael Higgins]]'' | 1939 | 1988 | [[Mannin]] |- | style='text-align:right'| 2 | | ''[[:d:Q136434024|Albert Hugh Teare]]'' | 1877 | 1932 | [[Rhumsaa]] |- | style='text-align:right'| 3 | [[Coadan:Frederick Agnew Gill LCCN2014714984 (cropped).jpg|center|128px]] | [[Frederick Agnew Gill]] | 1873 | 1938 | [[Balley Chashtal]] |- | style='text-align:right'| 4 | | ''[[:d:Q75456632|Elizabeth Quayle]]'' | | | [[Skeerey Chreest ny h-Ayrey]] |- | style='text-align:right'| 5 | [[Coadan:RobinGibb.jpg|center|128px]] | ''[[:d:Q188482|Robin Gibb]]'' | 1949 | 2012 | [[Doolish]] |- | style='text-align:right'| 6 | [[Coadan:Maurice Gibb (Bee Gees) - TopPop 1973 (cropped).png|center|128px]] | ''[[:d:Q296876|Maurice Gibb]]'' | 1949 | 2003 | [[Doolish]] |- | style='text-align:right'| 7 | | [[Randolph Quirk]] | 1920 | 2017 | [[Maayl]] |- | style='text-align:right'| 8 | | [[Ned Maddrell]] | 1877 | 1974 | [[Creneash]] |- | style='text-align:right'| 9 | [[Coadan:Rhodri Mawr - Historiae Cambriae.png|center|128px]] | ''[[:d:Q470862|Rhodri Mawr]]'' | 820 | 878 | [[Mannin]] |- | style='text-align:right'| 10 | [[Coadan:John Thomas Caine.jpg|center|128px]] | ''[[:d:Q964884|John Thomas Caine]]'' | 1829 | 1911 | [[Mannin]] |- | style='text-align:right'| 11 | | ''[[:d:Q1064177|Charles Duncan Cameron]]'' | 1825 | 1870 | [[Doolish]] |- | style='text-align:right'| 12 | | [[Chris Killip]] | 1946 | 2020 | [[Doolish]] |- | style='text-align:right'| 13 | [[Coadan:Edward Forbes.jpg|center|128px]] | [[Edward Forbes]] | 1815 | 1854 | [[Doolish]] |- | style='text-align:right'| 14 | [[Coadan:Peter Heywood, by John Simpson.jpg|center|128px]] | ''[[:d:Q1370965|Peter Heywood]]'' | 1772 | 1831 | [[Doolish]] |- | style='text-align:right'| 15 | [[Coadan:Eredoctoraten UvA nr. 21, 22 Charles B. Timmer , nr. 1 20 prof. J. Frank Kerm, Bestanddeelnr 934-1653.jpg|center|128px]] | [[Frank Kermode]] | 1919 | 2010 | [[Mannin]] |- | style='text-align:right'| 16 | [[Coadan:Hugh Binney.jpeg|center|128px]] | ''[[:d:Q1634227|Hugh Binney]]'' | 1883 | 1953 | [[Doolish]] |- | style='text-align:right'| 17 | | ''[[:d:Q2025044|Daniel Lowey]]'' | 1878 | 1951 | [[Rhumsaa]] |- | style='text-align:right'| 18 | [[Coadan:Gofraid Crobán (British Library Cotton MS Julius A VII, folio 50v).jpg|center|128px]] | [[Gorree Crovan]] | 1050 | 1095 | [[Mannin]] |- | style='text-align:right'| 19 | [[Coadan:MikeKerruish.jpg|center|128px]] | [[Mike Kerruish]] | 1948 | 2010 | [[Mannin]] |- | style='text-align:right'| 20 | [[Coadan:Brian Stowell - Gaisgeach na Gaelg.jpg|center|128px]] | [[Brian Stowell]] | 1936 | 2019 | [[Doolish]] |- | style='text-align:right'| 21 | [[Coadan:Archibald Knox.jpg|center|128px]] | ''[[:d:Q2860090|Archibald Knox]]'' | 1864 | 1933 | [[Mannin]] |- | style='text-align:right'| 22 | [[Coadan:Goshen-Routh 10.jpg|center|128px]] | [[Arthur Caley]] | 1824 | 1889 | [[Skeerey Chreest ny h-Ayrey]] |- | style='text-align:right'| 23 | | ''[[:d:Q2917082|Peter Buckley]]'' | 1944 | 1969 | [[Doolish]] |- | style='text-align:right'| 24 | | ''[[:d:Q2960723|Charles de Viry]]'' | 1809 | 1888 | [[Doolish]] |- | style='text-align:right'| 25 | | ''[[:d:Q2979086|Clifford Irving]]'' | 1914 | 2004 | [[Mannin]] |- | style='text-align:right'| 26 | | ''[[:d:Q3048476|Edward Christian]]'' | 1600<br/>1590 | 1659<br/>1661 | [[Mannin]] |- | style='text-align:right'| 27 | | ''[[:d:Q3082831|Frank Tipper]]'' | 1909 | 1963 | [[Doolish]] |- | style='text-align:right'| 28 | | [[Hilary Pritchard]] | 1942 | 1996 | [[Mannin]] |- | style='text-align:right'| 29 | [[Coadan:Illiam Dhone.JPG|center|128px]] | [[Illiam Dhone]] | 1608 | 1662<br/>1663 | [[Camys y Ree]] |- | style='text-align:right'| 30 | [[Coadan:Captain John Quilliam RN.jpg|center|128px]] | ''[[:d:Q3182325|John Quilliam]]'' | 1771 | 1829 | [[Mannin]] |- | style='text-align:right'| 31 | | ''[[:d:Q3184768|Joseph Clayton Clark]]'' | 1857<br/>1856 | 1937 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 32 | | [[Joseph Davidson Qualtrough]] | 1885 | 1960 | [[Mannin]] |- | style='text-align:right'| 33 | | ''[[:d:Q3375184|Percy Cowley]]'' | 1886 | 1958 | [[Rhumsaa]] |- | style='text-align:right'| 34 | | ''[[:d:Q3780140|Gwen Crellin]]'' | 1917 | 2007 | [[Mannin]] |- | style='text-align:right'| 35 | | ''[[:d:Q4647267|A.P. Penketh]]'' | 1865 | 1932 | [[Mannin]] |- | style='text-align:right'| 36 | | ''[[:d:Q4684998|Adrian Earnshaw]]'' | 1950 | 2022 | [[Mannin]] |- | style='text-align:right'| 37 | [[Coadan:AWM 099103 Arnold Potts.jpg|center|128px]] | ''[[:d:Q4795209|Arnold Potts]]'' | 1896 | 1968 | [[Mannin]] |- | style='text-align:right'| 38 | [[Coadan:Arthur William Moore.png|center|128px]] | [[Arthur William Moore]] | 1853 | 1909 | [[Doolish]] |- | style='text-align:right'| 39 | [[Coadan:Baldwin Wake Walker.jpg|center|128px]] | ''[[:d:Q4850612|Baldwin Wake Walker]]'' | 1802 | 1876 | ''[[:d:Q3398663|Port e Vullen]]'' |- | style='text-align:right'| 40 | [[Coadan:Bertram Kelly, vicar.jpg|center|128px]] | [[Bertram Kelly]] | 1884 | 1976 | [[Doolish]] |- | style='text-align:right'| 41 | | [[Bill Malarkey (politickeyr)|Bill Malarkey]] | 1951 | 2020 | [[Mannin]] |- | style='text-align:right'| 42 | | ''[[:d:Q4980208|Bryan Kneale]]'' | 1930 | 2025 | [[Doolish]] |- | style='text-align:right'| 43 | | [[Charles Kerruish]] | 1917 | 2003 | [[Mannin]] |- | style='text-align:right'| 44 | [[Coadan:TT Lightweight - Dan Kneen (8985019419).jpg|center|128px]] | ''[[:d:Q5213818|Dan Kneen]]'' | 1987 | 2018 | [[Doolish]] |- | style='text-align:right'| 45 | | ''[[:d:Q5232102|David Callister]]'' | 1935 | 2020 | [[Mannin]] |- | style='text-align:right'| 46 | | ''[[:d:Q5233727|David Forbes]]'' | 1828 | 1876 | [[Doolish]] |- | style='text-align:right'| 47 | | ''[[:d:Q5262311|Derek Robinson]]'' | 1941 | 2002 | [[Mannin]] |- | style='text-align:right'| 48 | | [[Dursley McLinden]] | 1965 | 1995 | [[Doolish]] |- | style='text-align:right'| 49 | | ''[[:d:Q5339649|Edmund Lowey]]'' | 1938 | 2024 | [[Balley Sallagh]] |- | style='text-align:right'| 50 | | ''[[:d:Q5442313|Felix Fordati Ready]]'' | 1872 | 1940 | [[Balley Sallagh]] |- | style='text-align:right'| 51 | | ''[[:d:Q5534099|Geoff Corkish]]'' | 1953 | 2025 | [[Mannin]] |- | style='text-align:right'| 52 | | ''[[:d:Q5585508|Gordon Manley]]'' | 1902 | 1980 | [[Doolish]] |- | style='text-align:right'| 53 | | ''[[:d:Q5702651|Harry Dacre]]'' | 1860 | 1922 | [[Mannin]] |- | style='text-align:right'| 54 | [[Coadan:Hugh Stowell Brown.jpg|center|128px]] | [[Hugh Stowell Brown]] | 1823 | 1886 | [[Doolish]] |- | style='text-align:right'| 55 | | [[Jack Nivison]] | 1910 | 2003 | [[Skeerey Vraddan|Skeerey Braddan]]<br/>[[Kione Droghad]] |- | style='text-align:right'| 56 | [[Coadan:James Ashton.jpeg|center|128px]] | ''[[:d:Q6128902|James Ashton]]'' | 1859 | 1935 | [[Mannin]] |- | style='text-align:right'| 57 | [[Coadan:James Kewley Ward 1890.jpg|center|128px]] | ''[[:d:Q6137285|James Kewley Ward]]'' | 1819 | 1910 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 58 | | ''[[:d:Q6218777|John Allen Mylrea]]'' | 1849 | 1911 | [[Doolish]] |- | style='text-align:right'| 59 | | [[John Joseph Kneen]] | 1873 | 1938 | [[Doolish]] |- | style='text-align:right'| 60 | [[Coadan:John McHutchin.jpg|center|128px]] | ''[[:d:Q6247893|John McHutchin]]'' | 1788 | 1847 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 61 | | ''[[:d:Q6387399|Ken Burns]]'' | 1923 | 2006 | [[Rhumsaa]] |- | style='text-align:right'| 62 | [[Coadan:Mark Cubbon b1785.jpg|center|128px]] | ''[[:d:Q6767214|Mark Cubbon]]'' | 1775 | 1861 | [[Skeerey Maghal]] |- | style='text-align:right'| 63 | [[Coadan:ColMarkWilks.jpg|center|128px]] | ''[[:d:Q6770348|Mark Wilks]]'' | 1759 | 1831 | [[Mannin]] |- | style='text-align:right'| 64 | | ''[[:d:Q6777668|Martyn Quayle]]'' | 1959 | 2016 | [[Mannin]] |- | style='text-align:right'| 65 | | ''[[:d:Q7173434|Peter Craine]]'' | 2000 | 2003 | [[Doolish]] |- | style='text-align:right'| 66 | | ''[[:d:Q7324916|Richard Costain]]'' | 1839 | 1902 | [[Mannin]] |- | style='text-align:right'| 67 | | ''[[:d:Q7342026|Robert Benjamin Young]]'' | 1773 | 1846 | [[Doolish]] |- | style='text-align:right'| 68 | | ''[[:d:Q7351285|Robert Wylie]]'' | 1839 | 1877 | [[Mannin]] |- | style='text-align:right'| 69 | [[Coadan:Sophia Morrison.jpg|center|128px]] | [[Sophia Morrison]] | 1859 | 1917 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 70 | | ''[[:d:Q7627097|Stuart Slack]]'' | 1935 | 1998 | [[Doolish]] |- | style='text-align:right'| 71 | [[Coadan:T. E. Brown (young).jpg|center|128px]] | ''[[:d:Q7789264|Thomas Edward Brown]]'' | 1830 | 1897 | [[Doolish]] |- | style='text-align:right'| 72 | | ''[[:d:Q7790684|Thomas Hill Dixon]]'' | 1816 | 1880 | [[Mannin]] |- | style='text-align:right'| 73 | | ''[[:d:Q7821311|Toni Onley]]'' | 1928 | 2004 | [[Doolish]] |- | style='text-align:right'| 74 | | [[Walter y Chleree]] | 1928 | 2007 | [[Rhumsaa]] |- | style='text-align:right'| 75 | | ''[[:d:Q8010366|William H. Corlett]]'' | 1856 | 1937 | [[Mannin]] |- | style='text-align:right'| 76 | | [[William Kennish]] | 1799 | 1862 | [[Skeerey Maghal]] |- | style='text-align:right'| 77 | [[Coadan:William Moore (1898).jpg|center|128px]] | ''[[:d:Q8015768|William Moore]]'' | 1823 | 1914 | [[Mannin]] |- | style='text-align:right'| 78 | [[Coadan:Sir William Rowan.jpg|center|128px]] | ''[[:d:Q8017805|William Rowan]]'' | 1789 | 1879 | [[Mannin]] |- | style='text-align:right'| 79 | [[Coadan:Rushen Abbey.jpg|center|128px]] | ''[[:d:Q8017850|William Russell]]'' | | 1374 | [[Mannin]] |- | style='text-align:right'| 80 | | ''[[:d:Q9374876|William Russell]]'' | 1852 | 1940 | [[Doolish]] |- | style='text-align:right'| 81 | | ''[[:d:Q10314191|Kenneth Creer]]'' | 1925 | 2020 | [[Doolish]] |- | style='text-align:right'| 82 | | [[John Kelly (scoillar)|John Kelly]] | 1750 | 1809 | [[Doolish]] |- | style='text-align:right'| 83 | | [[Noel Cringle]] | 1937 | 2021 | [[Mannin]] |- | style='text-align:right'| 84 | [[Coadan:Edward Faragher.jpeg|center|128px]] | [[Edward Faragher]] | 1831 | 1908 | [[Creneash]] |- | style='text-align:right'| 85 | [[Coadan:Josephine Kermode (Cushag).jpg|center|128px]] | [[Josephine Kermode]] | 1852 | 1937 | [[Rhumsaa]] |- | style='text-align:right'| 86 | [[Coadan:Mona Margaret McBURNEY.jpg|center|128px]] | ''[[:d:Q15433239|Mona McBurney]]'' | 1862 | 1932 | [[Doolish]] |- | style='text-align:right'| 87 | [[Coadan:Philip Moore Callow Kermode.png|center|128px]] | ''[[:d:Q15453822|P. M. C. Kermode]]'' | 1855 | 1932 | [[Rhumsaa]] |- | style='text-align:right'| 89 | [[Coadan:Hugo Flinn 1933.png|center|128px]] | ''[[:d:Q15996075|Hugo Flinn]]'' | 1880 | 1943 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 90 | [[Coadan:Canon John Quine.jpg|center|128px]] | ''[[:d:Q15997058|John Quine]]'' | 1857 | 1940 | [[Skeerey Charmane]] |- | style='text-align:right'| 91 | [[Coadan:W. Walter Gill.jpg|center|128px]] | ''[[:d:Q16002989|W. Walter Gill]]'' | 1876 | 1963 | [[Mannin]] |- | style='text-align:right'| 92 | | ''[[:d:Q16007058|Harry Korris]]'' | 1891 | 1971 | [[Kione Droghad]] |- | style='text-align:right'| 93 | [[Coadan:Christopher R. Shimmin.jpg|center|128px]] | ''[[:d:Q16029252|Christopher R. Shimmin]]'' | 1870 | 1933 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 94 | [[Coadan:Actress Annie Yeamans, c. 1896.png|center|128px]] | [[Annie Yeamans]] | 1835 | 1912 | [[Mannin]] |- | style='text-align:right'| 95 | [[Coadan:Robert Q. Kermode.jpg|center|128px]] | ''[[:d:Q16065654|Robert Kermode]]'' | 1812 | 1870 | [[Mannin]] |- | style='text-align:right'| 96 | | ''[[:d:Q16169661|John Dongan]]'' | 1301 | 1413 | [[Mannin]] |- | style='text-align:right'| 97 | | ''[[:d:Q16200333|Esther Nelson]]'' | 1810 | 1843 | [[Jorby]] |- | style='text-align:right'| 98 | [[Coadan:Kathleen Faragher.jpg|center|128px]] | [[Kathleen Faragher]] | 1904 | 1974 | [[Rhumsaa]] |- | style='text-align:right'| 99 | | ''[[:d:Q16825531|Stewart Henbest Capper]]'' | 1859 | 1925 | [[Lunnin]]<br/>[[Doolish]] |- | style='text-align:right'| 100 | | ''[[:d:Q17182825|William Garrett]]'' | 1842 | 1916 | [[Mannin]] |- | style='text-align:right'| 101 | | ''[[:d:Q17309064|Charles Gibbon]]'' | 1843 | 1890 | [[Mannin]] |- | style='text-align:right'| 102 | [[Coadan:Plexus (1901) (14597471297).jpg|center|128px]] | ''[[:d:Q18157096|William Edward Quine]]'' | 1847 | 1922 | [[Skeerey Stondane]] |- | style='text-align:right'| 103 | [[Coadan:Capt. William Gill, the first Captain of the line..jpg|center|128px]] | [[William Gill (marrinagh)|William Gill]] | 1795 | 1858 | [[Rhumsaa]] |- | style='text-align:right'| 104 | [[Coadan:William Cubbon.jpg|center|128px]] | [[William Cubbon]] | 1865 | 1955 | [[Colby]] |- | style='text-align:right'| 105 | [[Coadan:Sir Benjamin Alfred Dobson statue, Bolton (4).JPG|center|128px]] | ''[[:d:Q18681459|Benjamin Dobson]]'' | 1847 | 1898 | [[Doolish]] |- | style='text-align:right'| 106 | [[Coadan:Sir James Gell.jpg|center|128px]] | ''[[:d:Q18922358|James Gell]]'' | 1823 | 1905 | [[Mannin]] |- | style='text-align:right'| 107 | [[Coadan:Archibald Cregeen.png|center|128px]] | [[Archibald Cregeen]] | 1774 | 1841 | [[Colby]] |- | style='text-align:right'| 108 | [[Coadan:Rev thomas bacon.jpg|center|128px]] | ''[[:d:Q19282324|Thomas Bacon]]'' | 1711 | 1768 | [[Mannin]] |- | style='text-align:right'| 109 | | ''[[:d:Q20639142|Annie Warren Gill]]'' | 1862 | 1930 | [[Balley Chashtal]] |- | style='text-align:right'| 110 | | ''[[:d:Q20683954|Charles Clague]]'' | 1890 | 1962 | [[Mannin]] |- | style='text-align:right'| 111 | | ''[[:d:Q20711846|Frank Gill]]'' | 1866 | 1950 | [[Balley Chashtal]] |- | style='text-align:right'| 112 | | ''[[:d:Q20747196|Arthur Lemon]]'' | 1850 | 1912 | [[Mannin]] |- | style='text-align:right'| 113 | | ''[[:d:Q20756364|Patrick William Stuart-Menteath]]'' | 1845 | 1925 | [[Doolish]] |- | style='text-align:right'| 114 | | ''[[:d:Q20763301|Richard Paget Murray]]'' | 1842 | 1908 | [[Mannin]] |- | style='text-align:right'| 115 | [[Coadan:Joseph Creer MLA.png|center|128px]] | ''[[:d:Q20810712|Joseph Creer]]'' | 1832 | 1913 | [[Mannin]] |- | style='text-align:right'| 116 | | ''[[:d:Q20877240|Edward Quayle]]'' | 1802 | 1862 | [[Mannin]] |- | style='text-align:right'| 117 | | ''[[:d:Q20981819|Sidney Nowell Rostron]]'' | 1883 | 1948 | [[Doolish]] |- | style='text-align:right'| 118 | | ''[[:d:Q21461346|Frederick Swynnerton]]'' | 1858 | 1918 | [[Doolish]] |- | style='text-align:right'| 119 | | ''[[:d:Q21538837|Thomas O'Reilly]]'' | 1819 | 1881 | [[Doolish]] |- | style='text-align:right'| 120 | [[Coadan:Capt. James Teare of the RMS Ellan Vannin..JPG|center|128px]] | ''[[:d:Q22018744|James Teare]]'' | 1872 | 1909 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 121 | | ''[[:d:Q24034942|Amelia Jane Murray]]'' | 1800 | 1896 | [[Doolish]] |- | style='text-align:right'| 122 | | ''[[:d:Q24205000|William Cain]]'' | 1831 | 1914 | [[Mannin]] |- | style='text-align:right'| 123 | | ''[[:d:Q24264205|James F. Keggin]]'' | 1905 | 1993 | [[Mannin]] |- | style='text-align:right'| 124 | | [[Doolish y Karagher]] | 1926 | 1987 | [[Doolish]] |- | style='text-align:right'| 125 | | ''[[:d:Q26330510|William Hutchison]]'' | 1904 | 1975 | [[Mannin]] |- | style='text-align:right'| 126 | | ''[[:d:Q27178436|Robert H. Nesbitt]]'' | 1883 | 1966 | [[Mannin]] |- | style='text-align:right'| 127 | [[Coadan:David "Dawsey" Kewley.jpg|center|128px]] | ''[[:d:Q27827705|David Kewley]]'' | 1850 | 1904 | [[Doolish]] |- | style='text-align:right'| 128 | [[Coadan:James Stowell Gell.jpg|center|128px]] | ''[[:d:Q28179118|James Stowell Gell]]'' | 1855 | 1919 | [[Balley Chashtal]] |- | style='text-align:right'| 129 | [[Coadan:Samuel Harris.jpg|center|128px]] | ''[[:d:Q28203030|Samuel Harris]]'' | 1815 | 1905 | [[Doolish]] |- | style='text-align:right'| 130 | [[Coadan:Paul Lebiedzinski.jpg|center|128px]] | ''[[:d:Q28810393|Paul Lebiedzinski]]'' | 1951 | 1995 | [[Rhumsaa]] |- | style='text-align:right'| 131 | [[Coadan:John Moore Jeffcott.png|center|128px]] | ''[[:d:Q31201248|John Moore Jeffcott]]'' | 1817 | 1892 | [[Balley Chashtal]] |- | style='text-align:right'| 132 | [[Coadan:Stewart Stevenson Moore.jpg|center|128px]] | ''[[:d:Q37154286|Stewart Stevenson Moore]]'' | 1860 | 1951 | [[Mannin]] |- | style='text-align:right'| 133 | | ''[[:d:Q39070085|John Kelly]]'' | 1793 | 1854 | [[Mannin]] |- | style='text-align:right'| 134 | [[Coadan:Snaefell Miners.jpg|center|128px]] | ''[[:d:Q41757067|John Kewley]]'' | 1832 | 1905 | [[Mannin]] |- | style='text-align:right'| 135 | [[Coadan:Elizabeth S. Nutt, A.R.C.A. (I0007923).jpg|center|128px]] | ''[[:d:Q43196426|Elizabeth Styring Nutt]]'' | 1870 | 1946 | [[Kione Droghad]] |- | style='text-align:right'| 136 | | ''[[:d:Q43606976|Charles Swynnerton]]'' | 1843 | 1923 | [[Mannin]] |- | style='text-align:right'| 137 | | ''[[:d:Q43779525|Mark Hildesley Quayle]]'' | 1804 | 1879 | [[Mannin]] |- | style='text-align:right'| 138 | | ''[[:d:Q43945628|Mark Quayle]]'' | 1770 | 1804 | [[Mannin]] |- | style='text-align:right'| 139 | | ''[[:d:Q44049933|John Quayle]]'' | 1693 | 1755 | [[Mannin]] |- | style='text-align:right'| 140 | | ''[[:d:Q44746168|Mark Quayle]]'' | 1841 | 1928 | [[Mannin]] |- | style='text-align:right'| 141 | | ''[[:d:Q48110870|Joseph Swynnerton]]'' | 1848 | 1910 | [[Doolish]] |- | style='text-align:right'| 142 | | ''[[:d:Q52148110|Jim Caine]]'' | 1926 | 2018 | [[Doolish]] |- | style='text-align:right'| 143 | | ''[[:d:Q53196681|Wilfred Kissack]]'' | 1873 | 1942 | [[Mannin]] |- | style='text-align:right'| 144 | | ''[[:d:Q54553548|Millie Robinson]]'' | 1924 | 1994 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 145 | [[Coadan:Nellie Brennan.jpg|center|128px]] | ''[[:d:Q55418295|Nelly Brennan]]'' | 1792 | 1859 | [[Doolish]] |- | style='text-align:right'| 146 | | ''[[:d:Q56254209|Thomas Stowell]]'' | 1764 | 1821 | [[Mannin]] |- | style='text-align:right'| 147 | | ''[[:d:Q56452187|Derek Ennett]]'' | 1931 | 1956 | [[Balley Chashtal]] |- | style='text-align:right'| 148 | | ''[[:d:Q56528264|Thomas Tobin]]'' | 1775 | 1863 | [[Doolish]] |- | style='text-align:right'| 149 | [[Coadan:John D. LaMothe.jpg|center|128px]] | ''[[:d:Q56665493|John Dominique LaMothe]]'' | 1868 | 1928 | [[Rhumsaa]] |- | style='text-align:right'| 150 | | ''[[:d:Q56887925|Nina Morrison]]'' | 1915 | 2011 | [[Doolish]] |- | style='text-align:right'| 151 | | [[Dorothy Pantin]] | 1896 | 1985 | [[Doolish]] |- | style='text-align:right'| 152 | [[Coadan:John Quayle (1725 - 1797).png|center|128px]] | ''[[:d:Q60754040|John Quayle]]'' | 1725 | 1797 | [[Mannin]] |- | style='text-align:right'| 153 | | ''[[:d:Q64685433|Francis Claudius Armstrong]]'' | 1802 | 1872 | [[Mannin]] |- | style='text-align:right'| 154 | | ''[[:d:Q64685645|Hugh Coleman Davidson]]'' | 1852 | 1934 | [[Balley Chashtal]] |- | style='text-align:right'| 155 | | ''[[:d:Q65767130|Pilcher George Ralfe]]'' | 1861 | 1936 | [[Skeerey Chreest ny h-Ayrey]] |- | style='text-align:right'| 156 | | ''[[:d:Q65768017|Frank Stanley Graves]]'' | 1863 | 1935 | [[Skeerey Charmane]] |- | style='text-align:right'| 157 | | ''[[:d:Q66606883|John Joseph Heywood]]'' | 1789 | 1855 | [[Mannin]] |- | style='text-align:right'| 158 | [[Coadan:Mona Hirst 1925.jpg|center|128px]] | ''[[:d:Q70743693|Mona Hirst]]'' | 1903 | 1988 | [[Mannin]] |- | style='text-align:right'| 159 | [[Coadan:Emily Maria Gawne.jpg|center|128px]] | ''[[:d:Q75265312|Emily Maria Gawne]]'' | 1814 | 1889 | [[Doolish]] |- | style='text-align:right'| 160 | | [[Ewan Christian (briw)|Ewan Christian]] | 1579 | 1655 | [[Skeerey Chreest ny h-Ayrey]] |- | style='text-align:right'| 161 | [[Coadan:Portrait of Esther Taubman, née Christian (by George Romney).jpg|center|128px]] | ''[[:d:Q75456778|Esther Christian]]'' | 1711 | 1802 | [[Rhumsaa]] |- | style='text-align:right'| 162 | | ''[[:d:Q75458718|George Horsley Wood]]'' | | 1874 | [[Doolish]] |- | style='text-align:right'| 163 | | ''[[:d:Q75460583|Robert Christian]]'' | 1625 | 1668 | [[Skeerey Maghal]] |- | style='text-align:right'| 164 | | ''[[:d:Q75463324|Margaret Moore]]'' | 1733<br/>1730 | 1782<br/>1807 | [[Doolish]] |- | style='text-align:right'| 165 | | ''[[:d:Q75463414|Margaret Moore]]'' | 1736 | 1828 | [[Skeerey Vraddan|Skeerey Braddan]] |- | style='text-align:right'| 166 | | ''[[:d:Q75463447|Margaret Moore]]'' | 1769 | 1804 | [[Skeerey Vraddan|Skeerey Braddan]] |- | style='text-align:right'| 167 | | ''[[:d:Q75946963|Anna Cleather]]'' | 1811 | 1887 | [[Mannin]] |- | style='text-align:right'| 168 | | ''[[:d:Q76142859|Fanny Edith Walters]]'' | 1887 | 1949 | [[Balley Chashtal]] |- | style='text-align:right'| 169 | | ''[[:d:Q76245966|Laura, Lady Buchan]]'' | 1797 | 1888 | [[Doolish]] |- | style='text-align:right'| 170 | | ''[[:d:Q78901420|Edward Ashton Cannell]]'' | 1927 | 1994 | [[Purt Çhiarn]] |- | style='text-align:right'| 171 | | [[Tommy Leece]] | 1859 | 1956 | [[Skeerey Chairbre]] |- | style='text-align:right'| 172 | | ''[[:d:Q94373906|John Kaighn]]'' | 1660 | 1724 | [[Mannin]] |- | style='text-align:right'| 173 | [[Coadan:Leonard McCombe, 1954, NY, Photograh taken by Jun Miki.jpg|center|128px]] | ''[[:d:Q97066829|Leonard McCombe]]'' | 1923 | 2005 | [[Mannin]] |- | style='text-align:right'| 174 | | [[Edmund Goodwin]] | 1845 | 1925 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 175 | | ''[[:d:Q97497011|Lewis Crellin]]'' | 1901 | 1990 | [[Forsdal]] |- | style='text-align:right'| 176 | | ''[[:d:Q97597263|Leslie Quirk]]'' | 1914 | 2004 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 177 | | ''[[:d:Q98763296|Norman Sayle]]'' | 1926 | 2007 | [[Doolish]] |- | style='text-align:right'| 178 | | ''[[:d:Q101068189|John Quayle-Dickson]]'' | 1860 | 1945 | [[Balley Chashtal]] |- | style='text-align:right'| 179 | | ''[[:d:Q102175647|David W. Lewis]]'' | 1944 | 2021 | [[Doolish]] |- | style='text-align:right'| 180 | | ''[[:d:Q104286259|Ernest Feltus Adams]]'' | 1865 | 1957 | [[Mannin]] |- | style='text-align:right'| 181 | [[Coadan:Thomas Leigh-Goldie.jpg|center|128px]] | ''[[:d:Q109559333|Thomas Leigh Goldie]]'' | 1807 | 1854 | [[Doolish]] |- | style='text-align:right'| 182 | | ''[[:d:Q110806864|John Newlands Thomson]]'' | 1870 | 1948 | [[Purt le Moirrey]] |- | style='text-align:right'| 183 | | ''[[:d:Q112394413|John David Williams]]'' | 1931 | 2005 | [[Doolish]] |- | style='text-align:right'| 184 | | ''[[:d:Q112954595|Letitia Hannah Damer Sandys]]'' | 1840<br/>1833 | 1911 | [[Mannin]] |- | style='text-align:right'| 185 | | ''[[:d:Q114578445|John Wordsworth]]'' | 1845 | 1920 | [[Rhumsaa]] |- | style='text-align:right'| 186 | | ''[[:d:Q120900628|R. S. McCombe]]'' | 1902 | 1985 | [[Doolish]] |- | style='text-align:right'| 187 | [[Coadan:Robert Swan Stephen.png|center|128px]] | ''[[:d:Q121875076|Robert Swan Stephen]]'' | 1843 | 1903 | [[Skeerey Maghal]] |- | style='text-align:right'| 188 | | [[John Quane]] | 1757 | 1838 | [[Mannin]] |- | style='text-align:right'| 189 | | [[Robert E. Christian]] | 1817 | 1891 | [[Skeerey Maghal]] |- | style='text-align:right'| 190 | | ''[[:d:Q122381207|Voirrey Irving]]'' | 1918 | 2005 | [[Mannin]] |- | style='text-align:right'| 191 | [[Coadan:Charles Lionel Carson (1847–1901).png|center|128px]] | ''[[:d:Q123558946|Charles Lionel Carson]]'' | 1847 | 1901 | [[Mannin]] |- | style='text-align:right'| 192 | [[Coadan:Margaret Jennifer Kewley Draskau in the video 'Lady Derby – The Great Whore of Babylon'.png|center|128px]] | ''[[:d:Q130730092|Jennifer Kewley Draskau]]'' | | 2024 | [[Mannin]] |- | style='text-align:right'| 193 | | ''[[:d:Q134487555|Chris Garrett]]'' | 1984 | 2025 | [[Purt ny h-Inshey]] |- | style='text-align:right'| 194 | [[Coadan:Max Walker - 2023 UCI Road World Championships (Men's under-23 road race).jpg|center|128px]] | ''[[:d:Q107036155|Max Walker]]'' | 2001 | | [[Doolish]] |- | style='text-align:right'| 195 | | ''[[:d:Q108257419|Nola York]]'' | | | [[Mannin]] |- | style='text-align:right'| 196 | [[Coadan:Becky Storrie - Présentation TCFIA 2025.jpg|center|128px]] | ''[[:d:Q108878510|Becky Storrie]]'' | 1998 | | [[Balley Sallagh]] |- | style='text-align:right'| 197 | | ''[[:d:Q111254683|Jason Evans]]'' | 1991 | | [[Doolish]] |- | style='text-align:right'| 198 | [[Coadan:Yasmin Ingham at the Badminton Horse Trials 2025 - 20250510 135552(0).jpg|center|128px]] | [[Yasmin Ingham]] | 1997 | | [[Mannin]] |- | style='text-align:right'| 199 | | ''[[:d:Q114785217|William Henry Cooper]]'' | 1870 | | [[Balley Chashtal]] |- | style='text-align:right'| 200 | | ''[[:d:Q115910223|Michael Bott]]'' | 1954 | | [[Doolish]] |- | style='text-align:right'| 201 | | ''[[:d:Q117309494|Anna Branford]]'' | 1975 | | [[Mannin]] |- | style='text-align:right'| 202 | | ''[[:d:Q124685800|Tyler Hannay]]'' | 2003 | | [[Mannin]] |- | style='text-align:right'| 203 | | ''[[:d:Q130198574|Brian Christian]]'' | | | [[Mannin]] |- | style='text-align:right'| 204 | | ''[[:d:Q134973228|Catherine Perry]]'' | | | [[Mannin]] |- | style='text-align:right'| 205 | | ''[[:d:Q134973249|Rebecca Webster]]'' | | | [[Mannin]] |- | style='text-align:right'| 206 | | ''[[:d:Q134973255|Daniellle Murphy]]'' | | | [[Mannin]] |- | style='text-align:right'| 207 | | ''[[:d:Q134973282|Alanya Thorpe]]'' | | | [[Mannin]] |- | style='text-align:right'| 208 | | ''[[:d:Q134973285|Andrea Littlejohns]]'' | | | [[Mannin]] |- | style='text-align:right'| 209 | | ''[[:d:Q134973288|Caitlin Henery]]'' | | | [[Mannin]] |- | style='text-align:right'| 210 | | ''[[:d:Q134973298|Clare Crowe]]'' | | | [[Mannin]] |- | style='text-align:right'| 211 | | ''[[:d:Q134980247|Bliss Murtagh]]'' | | | [[Mannin]] |- | style='text-align:right'| 212 | | ''[[:d:Q134980251|Emma Miller]]'' | | | [[Mannin]] |- | style='text-align:right'| 213 | | ''[[:d:Q134980254|Rachel Overman]]'' | | | [[Mannin]] |- | style='text-align:right'| 214 | | ''[[:d:Q134980258|Sam Hassall]]'' | | | [[Mannin]] |- | style='text-align:right'| 215 | | ''[[:d:Q134980259|Finnola Martin]]'' | | | [[Mannin]] |- | style='text-align:right'| 216 | [[Coadan:James franklin iom 2021 1.jpg|center|128px]] | ''[[:d:Q135898155|James Franklin]]'' | 1980 | | ''[[:d:Q26715141|Glen Mona]]'' |- | style='text-align:right'| 217 | | ''[[:d:Q135898269|Simon Maddrell]]'' | 1965 | | [[Doolish]] |- | style='text-align:right'| 218 | | ''[[:d:Q138535546|Alexander Foster]]'' | 1999 | | [[Doolish]] |- | style='text-align:right'| 219 | | ''[[:d:Q140366855|William Arthur Gill]]'' | 1865 | | [[Mannin]] |- | style='text-align:right'| 220 | [[Coadan:Jersey Town Criterium 2012 Greg Mansell.jpg|center|128px]] | ''[[:d:Q126242|Greg Mansell]]'' | 1987 | | [[Doolish]] |- | style='text-align:right'| 221 | [[Coadan:Mark Cavendish TDF2012 (cropped).jpg|center|128px]] | [[Mark Cavendish]] | 1985 | | [[Doolish]] |- | style='text-align:right'| 222 | [[Coadan:Barry Gibb in 2017-Glasto17-197 (34744934874).jpg|center|128px]] | ''[[:d:Q296872|Barry Gibb]]'' | 1946 | | [[Doolish]] |- | style='text-align:right'| 223 | | ''[[:d:Q373700|Richard Corkill]]'' | 1951 | | [[Doolish]] |- | style='text-align:right'| 224 | [[Coadan:Leo Mansell 2010.jpg|center|128px]] | ''[[:d:Q427791|Leo Mansell]]'' | 1985 | | [[Mannin]] |- | style='text-align:right'| 225 | [[Coadan:Samantha Barks - Fendi.jpg|center|128px]] | [[Samantha Barks]] | 1990 | | [[Laksaa]] |- | style='text-align:right'| 226 | [[Coadan:Andrew Roche - 2014 Commonwealth Games (Men's road time trial).jpg|center|128px]] | ''[[:d:Q506928|Andrew Roche]]'' | 1971 | | [[Mannin]] |- | style='text-align:right'| 227 | [[Coadan:Peter Kennaugh - Tour de Romandie 2010, Stage 3.jpg|center|128px]] | ''[[:d:Q561361|Peter Kennaugh]]'' | 1989 | | [[Doolish]] |- | style='text-align:right'| 228 | [[Coadan:Ss7 higgins.jpg|center|128px]] | ''[[:d:Q570357|Mark Higgins]]'' | 1971 | | [[Mannin]] |- | style='text-align:right'| 229 | [[Coadan:Saint-Ghislain - Grand Prix Pino Cerami, 22 juillet 2015, départ (B016).JPG|center|128px]] | ''[[:d:Q594947|Mark Christian]]'' | 1990 | | [[Doolish]] |- | style='text-align:right'| 230 | | ''[[:d:Q935074|Donald Gelling]]'' | 1938 | | [[Skeerey Stondane]] |- | style='text-align:right'| 231 | [[Coadan:Alan Bell 2007.jpg|center|128px]] | [[Allan Bell]] | 1947 | | [[Mannin]] |- | style='text-align:right'| 232 | | ''[[:d:Q1378254|James Anthony Brown]]'' | 1950 | | [[Balley Chashtal]] |- | style='text-align:right'| 233 | [[Coadan:Jonathan Bellis.jpg|center|128px]] | ''[[:d:Q1381074|Jonathan Bellis]]'' | 1988 | | [[Doolish]] |- | style='text-align:right'| 234 | [[Coadan:Amy Jackson headshot (cropped).jpg|center|128px]] | [[Amy Jackson]] | 1992 | | [[Doolish]] |- | style='text-align:right'| 235 | [[Coadan:David Knight WEC 2010.jpg|center|128px]] | ''[[:d:Q2309170|David Knight]]'' | 1978 | | [[Balley ny Loghey]] |- | style='text-align:right'| 236 | [[Coadan:Prof eva rieger.jpg|center|128px]] | ''[[:d:Q2693484|Eva Rieger]]'' | 1940 | | [[Mannin]] |- | style='text-align:right'| 237 | | ''[[:d:Q2898341|Bernard Moffatt]]'' | 1946 | | [[Mannin]] |- | style='text-align:right'| 238 | | [[Clare Christian]] | 1945 | | [[Mannin]] |- | style='text-align:right'| 239 | [[Coadan:Harry Manx at Bluesfest 2008.jpg|center|128px]] | ''[[:d:Q3127867|Harry Manx]]'' | 1955 | | [[Mannin]] |- | style='text-align:right'| 240 | [[Coadan:Jamie Blackley.jpg|center|128px]] | [[Jamie Blackley]] | 1991 | | [[Doolish]] |- | style='text-align:right'| 241 | | ''[[:d:Q3314091|Miles Walker]]'' | 1940 | | [[Mannin]] |- | style='text-align:right'| 242 | | ''[[:d:Q3337801|Neil Bennett]]'' | 1951 | | [[Rhumsaa]] |- | style='text-align:right'| 243 | [[Coadan:Conor Cummins portrait.JPG|center|128px]] | ''[[:d:Q3687112|Conor Cummins]]'' | 1986 | | [[Doolish]] |- | style='text-align:right'| 244 | | ''[[:d:Q3973323|Steve Colley]]'' | 1972 | | [[Kione Droghad]] |- | style='text-align:right'| 245 | | ''[[:d:Q4706420|Alan Corkish]]'' | | | [[Mannin]] |- | style='text-align:right'| 246 | | ''[[:d:Q4706451|Alan Crowe]]'' | 1940 | | [[Mannin]] |- | style='text-align:right'| 247 | [[Coadan:AndyT Mugshot.jpg|center|128px]] | ''[[:d:Q4761421|Andy Tudor]]'' | 1977 | | [[Doolish]] |- | style='text-align:right'| 248 | [[Coadan:Prof Angela Little.jpg|center|128px]] | ''[[:d:Q4762488|Angela Little]]'' | 1949 | | [[Doolish]] |- | style='text-align:right'| 249 | | [[Anne Craine]] | 1954 | | [[Doolish]] |- | style='text-align:right'| 250 | [[Coadan:Christine Collister.jpg|center|128px]] | [[Christine Collister]] | 1961 | | [[Mannin]] |- | style='text-align:right'| 251 | [[Coadan:Sidecar Thurs Practice IMG 00257.jpg|center|128px]] | ''[[:d:Q5229405|Dave Molyneux]]'' | 1963 | | [[Doolish]] |- | style='text-align:right'| 252 | | ''[[:d:Q5229413|Dave Moore]]'' | 1966 | | [[Doolish]] |- | style='text-align:right'| 253 | | ''[[:d:Q5230767|David Anderson]]'' | 1954 | | [[Mannin]] |- | style='text-align:right'| 254 | | ''[[:d:Q5232661|David Cretney]]'' | 1954 | | [[Mannin]] |- | style='text-align:right'| 255 | | ''[[:d:Q5236864|David Lyon]]'' | 1943 | | [[Doolish]] |- | style='text-align:right'| 256 | [[Coadan:Davy-knowles.jpg|center|128px]] | ''[[:d:Q5242207|Davy Knowles]]'' | 1987 | | [[Purt le Moirrey]] |- | style='text-align:right'| 257 | | ''[[:d:Q5336528|Eddie Teare]]'' | 1948 | | [[Mannin]] |- | style='text-align:right'| 258 | | ''[[:d:Q5337428|Edgar Quine]]'' | 1934 | | [[Andreas, Mannin|Andreas]] |- | style='text-align:right'| 259 | | ''[[:d:Q5522814|Gareth Davies]]'' | 1965 | | [[Doolish]] |- | style='text-align:right'| 260 | | ''[[:d:Q5687920|Hazel Hannan]]'' | 2000 | | [[Purt Soderick]] |- | style='text-align:right'| 261 | [[Coadan:Roskams jane.jpg|center|128px]] | ''[[:d:Q6152688|Jane Roskams]]'' | | | [[Doolish]] |- | style='text-align:right'| 262 | | ''[[:d:Q6239980|John Houghton]]'' | 2000 | | [[Doolish]] |- | style='text-align:right'| 263 | | [[Juan Turner]] | 1974 | | [[Mannin]] |- | style='text-align:right'| 264 | [[Coadan:2021-Watterson-Juan-portrait.jpg|center|128px]] | ''[[:d:Q6301157|Juan Watterson]]'' | 1980 | | [[Mannin]] |- | style='text-align:right'| 265 | | ''[[:d:Q6397791|Kevin Woodford]]'' | 1950 | | [[Doolish]] |- | style='text-align:right'| 266 | [[Coadan:Martin Bridson2.jpg|center|128px]] | ''[[:d:Q6775057|Martin Bridson]]'' | 1964 | | [[Doolish]] |- | style='text-align:right'| 267 | | ''[[:d:Q7175096|Peter Karran]]'' | 1960 | | [[Mannin]] |- | style='text-align:right'| 268 | [[Coadan:Phil Gawne (cropped).jpg|center|128px]] | [[Phil Gawne]] | 1965 | | [[Doolish]] |- | style='text-align:right'| 269 | | ''[[:d:Q7612099|Steve Burke]]'' | 1974 | | [[Mannin]] |- | style='text-align:right'| 270 | | [[Tim Kennaugh]] | 1991 | | [[Doolish]] |- | style='text-align:right'| 271 | [[Coadan:Stoneham Maltais Anthonioz.jpg|center|128px]] | [[Zoe Gillings]] | 1985 | | [[Mannin]] |- | style='text-align:right'| 272 | | [[Cristen Marritt]] | 1989 | | [[Doolish]] |- | style='text-align:right'| 273 | | [[Kimberley Clague]] | 1988 | | [[Doolish]] |- | style='text-align:right'| 274 | [[Coadan:Robert Corteen Carswell.jpg|center|128px]] | [[Bob Carswell]] | 1950 | | [[Mannin]] |- | style='text-align:right'| 275 | | ''[[:d:Q16206261|Nick Crowe]]'' | 1971 | | [[Mannin]] |- | style='text-align:right'| 276 | | ''[[:d:Q16213489|Araminta de Clermont]]'' | 1971 | | [[Mannin]] |- | style='text-align:right'| 277 | [[Coadan:Goshen-Routh 16.jpg|center|128px]] | ''[[:d:Q16855481|Arthur Caley]]'' | 1824 | | [[Mannin]] |- | style='text-align:right'| 278 | [[Coadan:Anna Christian - 2019 Women's Tour of Scotland (stage 3).jpg|center|128px]] | [[Anna Christian]] | 1995 | | [[Doolish]] |- | style='text-align:right'| 279 | [[Coadan:FIL 2014 - Femmes Gaéliques - Ruth Keggin quartet - 1377.jpg|center|128px]] | ''[[:d:Q19874790|Ruth Keggin]]'' | 1989 | | [[Purt Çhiarn]] |- | style='text-align:right'| 280 | [[Coadan:Kieran Tierney Scotland v Bolivia 6 June 2026-6.jpg|center|128px]] | ''[[:d:Q19888012|Kieran Tierney]]'' | 1997 | | [[Doolish]] |- | style='text-align:right'| 281 | | ''[[:d:Q19956065|Kate Costain]]'' | | | [[Mannin]] |- | style='text-align:right'| 282 | | ''[[:d:Q21289363|Kevin Atherton]]'' | 1950 | | [[Doolish]] |- | style='text-align:right'| 283 | | ''[[:d:Q21642675|Tim Kneale]]'' | 1982 | | [[Doolish]] |- | style='text-align:right'| 284 | [[Coadan:Lillers - Grand Prix de Lillers-Souvenir Bruno Comini, 6 mars 2016 (B052).JPG|center|128px]] | [[Jake Kelly (daawheeylleyder)|Jake Kelly]] | 1995 | | [[Doolish]] |- | style='text-align:right'| 285 | [[Coadan:Liam Doyle.JPG|center|128px]] | ''[[:d:Q24005468|Liam Doyle]]'' | 1992 | | [[Mannin]] |- | style='text-align:right'| 286 | [[Coadan:2021-Skelly-Laurence-portrait.jpg|center|128px]] | [[Laurence Skelly]] | 1961 | | [[Doolish]] |- | style='text-align:right'| 287 | | [[Isla Callister]] | | | [[Mannin]] |- | style='text-align:right'| 288 | | [[Paayl Rogers]] | | | [[Mannin]] |- | style='text-align:right'| 289 | | [[Daniel Quayle]] | | | [[Mannin]] |- | style='text-align:right'| 290 | [[Coadan:Howard Quayle.jpg|center|128px]] | [[Howard Quayle]] | 1967 | | [[Mannin]] |- | style='text-align:right'| 291 | [[Coadan:Laura Wasley - 2014 Commonwealth Games (Women's road time trial).jpg|center|128px]] | ''[[:d:Q26845558|Laura Wasley]]'' | 1984 | | [[Doolish]] |- | style='text-align:right'| 292 | [[Coadan:Matt Bostock - 2019 Tour Series, Aberdeen (Men's race - team win).jpg|center|128px]] | [[Matthew Bostock]] | 1997 | | [[Mannin]] |- | style='text-align:right'| 293 | [[Coadan:Brianne West.jpg|center|128px]] | ''[[:d:Q28033898|Brianne West]]'' | 1985 | | [[Purt Çhiarn]] |- | style='text-align:right'| 294 | [[Coadan:2024 Tour de France Femmes - 2e etappe Lizzie Holden 1.jpg|center|128px]] | [[Lizzie Holden]] | 1997 | | [[Doolish]] |- | style='text-align:right'| 295 | | ''[[:d:Q28378513|Hugh Davidson]]'' | 1935 | | [[Mannin]] |- | style='text-align:right'| 296 | | ''[[:d:Q28792438|Nathan Draper]]'' | 1997 | | [[Doolish]] |- | style='text-align:right'| 297 | [[Coadan:Sam Brand, 2019 Milan-Sanremo.jpg|center|128px]] | ''[[:d:Q36286044|Sam Brand]]'' | 1991 | | [[Purt ny h-Inshey]] |- | style='text-align:right'| 298 | | [[Adam Long (bluckaneyr)|Adam Long]] | 2000 | | [[Doolish]] |- | style='text-align:right'| 299 | | ''[[:d:Q44821053|Alfred Walter Adams]]'' | | | [[Mannin]] |- | style='text-align:right'| 300 | [[Coadan:Dr Eleanor Scott.jpg|center|128px]] | ''[[:d:Q46997927|Eleanor Scott]]'' | 1960 | | [[Mannin]] |- | style='text-align:right'| 301 | | [[Jessica Li]] | 1998 | | [[Doolish]] |- | style='text-align:right'| 302 | [[Coadan:Sophia Goulden anon died 1910.jpg|center|128px]] | ''[[:d:Q50387964|Sophia Goulden]]'' | 1833 | | [[Skeerey Lonan]] |- | style='text-align:right'| 303 | | ''[[:d:Q50676544|Kerry Sharpe]]'' | | | [[Mannin]] |- | style='text-align:right'| 304 | | [[Daryl Callister]] | 1989 | | [[Mannin]] |- | style='text-align:right'| 305 | | ''[[:d:Q55409232|Leon Mazzone]]'' | 1996 | | [[Rhumsaa]] |- | style='text-align:right'| 306 | | ''[[:d:Q55900439|Gérard MacQuillan]]'' | 1949 | | [[Doolish]] |- | style='text-align:right'| 307 | | ''[[:d:Q59242725|Clare Faulds]]'' | | | [[Mannin]] |- | style='text-align:right'| 308 | | ''[[:d:Q63344804|Colin Callow]]'' | | | [[Mannin]] |- | style='text-align:right'| 309 | | ''[[:d:Q64006025|Gary R. Lewin]]'' | 1965 | | [[Mannin]] |- | style='text-align:right'| 310 | | ''[[:d:Q75401195|Margaret Rosamund Moore]]'' | 1871 | | [[Skeerey Vraddan|Skeerey Braddan]] |- | style='text-align:right'| 311 | | ''[[:d:Q75463040|Margaret Moore]]'' | 1735 | | [[Skeerey Maghal]] |- | style='text-align:right'| 312 | | ''[[:d:Q75463064|George Quaile]]'' | 1801 | | [[Mannin]] |- | style='text-align:right'| 313 | | ''[[:d:Q75463140|Margaret Moore]]'' | | | [[Skeerey Malew]] |- | style='text-align:right'| 314 | | ''[[:d:Q75467601|Margaret Moore]]'' | | | [[Mannin]] |- | style='text-align:right'| 315 | | ''[[:d:Q87063021|Tom Mazzone]]'' | 1993 | | [[Doolish]] |- | style='text-align:right'| 316 | [[Coadan:Paul Quine.jpg|center|128px]] | ''[[:d:Q98755074|Paul Quine]]'' | 1969 | | [[Doolish]] |- | style='text-align:right'| 317 | | ''[[:d:Q100740733|Jane Callister]]'' | 1963 | | [[Doolish]] |- | style='text-align:right'| 318 | [[Coadan:Joe Locke en 2022.jpg|center|128px]] | [[Joe Locke (aghteyr)|Joe Locke]] | 2003 | | [[Doolish]] |- | style='text-align:right'| 319 | | ''[[:d:Q106808901|Julie Edge]]'' | | | [[Mannin]] |} == Misc == {| class='wikitable sortable' ! # ! XXX Add 'Image' in Manx here please! XXX ! XXX change to 'Name' in Manx! XXX ! XXX dob XXX ! XXX date of death XXX ! xxx Place of birth xxx |- | style='text-align:right'| 88 | | ''[[:d:Q15840011|Peta]]'' | 1963 | 1980 | [[Mannin]] |} {{Wikidata list end}} oc9fvjc8hh77txn8khshzhn8dmpuejj Ronney:2020 14 20650 388025 299609 2026-08-06T00:24:47Z MacTire02 219 clowan noa 388025 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Module:Wd/i18n 828 20742 387378 347254 2026-08-05T12:52:04Z MacTire02 219 ++ 387378 Scribunto text/plain -- The values and functions in this submodule should be localized per wiki. local p = {} function p.init(aliasesP) p = { ["errors"] = { ["unknown-data-type"] = "Unknown or unsupported datatype '$1'.", ["missing-required-parameter"] = "No required parameters defined, needing at least one", ["extra-required-parameter"] = "Parameter '$1' must be defined as optional", ["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message ["main-called-twice"] = 'The function "main" cannot be called twice', ["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message ["malformed-reference"] = "Marranys: Cha nel yn imraa taishbynit dy kiart. Jeeagh er y [[Module:wd/doc#References|docamadys]] son sonreeaghtyn." }, ["info"] = { ["edit-on-wikidata"] = "Reagh eh shoh er Wikidata" }, ["numeric"] = { ["decimal-mark"] = ".", ["delimiter"] = "," }, ["datetime"] = { ["prefixes"] = { ["decade-period"] = "" }, ["suffixes"] = { ["decade-period"] = "yn", ["millennium"] = " milley bleeaney", ["century"] = " eash", ["million-years"] = " millioon dy vleeantyn", ["billion-years"] = " billoon dy vleeantyn", ["year"] = " blein", ["years"] = " bleeantyn" }, ["julian-calendar"] = "feaillere Yool", -- linked page title ["julian"] = "Jool", ["BCE"] = "RC", ["CE"] = "BNJ", ["common-era"] = "Eash Chadjin" -- linked page title }, ["coord"] = { ["latitude-north"] = "N", ["latitude-south"] = "S", ["longitude-east"] = "E", ["longitude-west"] = "W", ["degrees"] = "°", ["minutes"] = "'", ["seconds"] = '"', ["separator"] = ", " }, ["values"] = { ["unknown"] = "gyn fys", ["none"] = "leagh erbee" }, ["cite"] = { ["output-types"] = {"web", "q"}, -- In this order, the output types will be tried ["param-mapping"] = { ["web"] = { -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "website", [aliasesP.referenceURL] = "url", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date", [aliasesP.title] = "title", [aliasesP.subjectNamedAs] = "title", [aliasesP.archiveURL] = "archive-url", [aliasesP.archiveDate] = "archive-date", [aliasesP.language] = "language", [aliasesP.author] = "author", [aliasesP.authorNameString] = "author", [aliasesP.publisher] = "publisher", [aliasesP.quote] = "quote", [aliasesP.pages] = "pages", -- extra option [aliasesP.publishedIn] = "website", [aliasesP.sectionVerseOrParagraph] = "at" }, ["q"] = { -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "1", [aliasesP.pages] = "pages", [aliasesP.column] = "at", [aliasesP.chapter] = "chapter", [aliasesP.sectionVerseOrParagraph] = "section", ["external-id"] = "id", -- used for any type of database property ID [aliasesP.title] = "title", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date" } }, ["config"] = { -- supported fields: -- - template: name of the template used for output -- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2) -- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true) -- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params) -- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters; -- properties not mentioned here have the lowest priority; -- prioritization of properties handled through additionalProcessedProperties is unsupported; -- no key of this table can be from numbered-params -- Leaving out the "template" field causes the output type to be ignored. ["web"] = { ["template"] = "Cite web", ["numbered-params"] = {"author"}, ["mandatory-params"] = {"url"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate}, ["title"] = {aliasesP.title, aliasesP.subjectNamedAs} } }, ["q"] = { ["template"] = "Cite Q", ["raw-value-params"] = {"1"}, -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited ["mandatory-params"] = {"1"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate} } } } } } p.getOrdinalSuffix = function(num) if tostring(num):sub(-2,-2) == '1' then return "th" -- 10th, 11th, 12th, 13th, ... 19th end num = tostring(num):sub(-1) if num == '1' then return "st" elseif num == '2' then return "nd" elseif num == '3' then return "rd" else return "th" end end p.addDelimiters = function(n) local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$") if left and num and right then return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right else return n end end return p end return p p09j22iumb5ra14gwtwomw0gp8cl8v9 387379 387378 2026-08-05T13:07:23Z MacTire02 219 ++ 387379 Scribunto text/plain -- The values and functions in this submodule should be localized per wiki. local p = {} function p.init(aliasesP) p = { ["version"] = "8", -- increment this each time the below parameters are changed to avoid reference conflict errors ["errors"] = { ["unknown-data-type"] = "Unknown or unsupported datatype '%s'.", ["missing-required-parameter"] = "No required parameters defined, needing at least one", ["extra-required-parameter"] = "Parameter '%s' must be defined as optional", ["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message ["main-called-twice"] = 'The function "main" cannot be called twice', ["no-such-function"] = 'The function "%s" does not exist', -- equal to the standard module error message ["no-such-reference-template"] = 'Error: template "%s", which is set in %s as the output template for the citation-output type "%s", does not exist', -- Parts of the error message signalling a malformed reference. ["malformed-reference-header"] = "<span style=\"color:#dd3333\">\nError: Unable to display the reference from Wikidata properly. Technical details:\n", ["malformed-reference-footer"] = "See [[Module:wd/doc#References|the documentation]] for further details.\n</span>\n[[Category:Module:Wd reference errors]]", ["template-failure-reason"] = "* Reason for the failure of {{tl|%s}}: %s\n", ["missing-mandatory-param"] = 'The output template call would miss the mandatory parameter <code>%s</code>.', ["unknown-property-in-ref"] = 'The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.' }, ["info"] = { ["edit-on-wikidata"] = "Reagh eh shoh er Wikidata" }, ["numeric"] = { ["decimal-mark"] = ".", ["delimiter"] = "," }, ["datetime"] = { ["prefixes"] = { ["decade-period"] = "" }, ["suffixes"] = { ["decade-period"] = "yn", ["millennium"] = " milley bleeaney", ["century"] = " eash", ["million-years"] = " millioonyn dy vleeantyn", ["billion-years"] = " biloonyn dy vleeantyn", ["year"] = " blein", ["years"] = " bleintyn" }, ["julian-calendar"] = "feaillere Yool", -- linked page title ["julian"] = "Joolagh", ["BCE"] = "REC", ["CE"] = "EC", ["common-era"] = "Eash Chadjin" -- linked page title }, ["coord"] = { ["latitude-north"] = "N", ["latitude-south"] = "S", ["longitude-east"] = "E", ["longitude-west"] = "W", ["degrees"] = "°", ["minutes"] = "'", ["seconds"] = '"', ["separator"] = ", " }, ["values"] = { ["unknown"] = "gyn fys", ["none"] = "leagh erbee" }, ["cite"] = { ["output-types"] = {"web", "q"}, -- In this order, the output types will be tried ["param-mapping"] = { ["web"] = { -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "website", [aliasesP.referenceURL] = "url", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date", [aliasesP.title] = "title", [aliasesP.subjectNamedAs] = "title", [aliasesP.archiveURL] = "archive-url", [aliasesP.archiveDate] = "archive-date", [aliasesP.language] = "language", [aliasesP.author] = "author", [aliasesP.authorNameString] = "author", [aliasesP.publisher] = "publisher", [aliasesP.quote] = "quote", [aliasesP.pages] = "pages", -- extra option [aliasesP.publishedIn] = "website", [aliasesP.sectionVerseOrParagraph] = "at" }, ["q"] = { -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "1", [aliasesP.pages] = "pages", [aliasesP.column] = "at", [aliasesP.chapter] = "chapter", [aliasesP.sectionVerseOrParagraph] = "section", ["external-id"] = "id", -- used for any type of database property ID [aliasesP.title] = "title", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date" } }, ["config"] = { -- supported fields: -- - template: name of the template used for output -- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2) -- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true) -- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params) -- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters; -- properties not mentioned here have the lowest priority; -- prioritization of properties handled through additionalProcessedProperties is unsupported; -- no key of this table can be from numbered-params -- Leaving out the "template" field causes the output type to be ignored. ["web"] = { ["template"] = "Cite web", ["numbered-params"] = {"author"}, ["mandatory-params"] = {"url"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate}, ["title"] = {aliasesP.title, aliasesP.subjectNamedAs} } }, ["q"] = { ["template"] = "Cite Q", ["raw-value-params"] = {"1"}, -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited ["mandatory-params"] = {"1"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate} } } } } } p.getOrdinalSuffix = function(num) if tostring(num):sub(-2,-2) == '1' then return "oo" -- 10oo, 11oo, 12oo, 13oo, ... 19oo end num = tostring(num):sub(-1) if num == '1' then return "d" elseif num == '2' then return "h" elseif num == '3' then return "oo" else return "oo" end end p.addDelimiters = function(n) local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$") if left and num and right then return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right else return n end end return p end return p o85tkn1m1se0ivv02em1c0375qi7khf Module:Wd 828 20744 387376 320892 2026-08-05T12:20:01Z MacTire02 219 ++ 387376 Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local module_arg = ... local i18n local i18nPath local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = module_arg end if not i18n then i18nPath = title .. "/i18n" i18n = require(i18nPath).init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date", globalSiteId = "globalSiteId" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433", lastUpdate = "P5017" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, ...) local text = i18n["errors"][code] if arg then text = mw.ustring.format(text, unpack(arg)) end return text end local function throwError(errorMessage, ...) error(errorText(errorMessage, unpack(arg))) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local function isValueInTable(searchedItem, inputTable) for _, item in pairs(inputTable) do if item == searchedItem then return true end end return false end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabel(id) end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local citeParamMapping = i18n['cite']['param-mapping'] local citeConfig = i18n['cite']['config'] local citeTypes = i18n['cite']['output-types'] -- will hold rendered properties of the reference which are not directly from statement.snaks, -- Namely, is URL generated from an external ID. local additionalProcessedProperties = {} -- for each citation type, there will be an associative array that associates lists of rendered properties -- to citation-template parameters local candidateParams = {} -- like above, but only associates one rendered property to each parameter; if the above variable -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1") local citeParams = {} local citeErrors = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local version = 12 -- increment this each time the below logic is changed to avoid conflict errors if not statement.snaks then return {} end -- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia) if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then return {} end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference -- find the "Wikidata property" properties in the item from "stated in" local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets. -- the link is in wiki markup, so strip the square brackets and the display text -- gsub also returns another, discarted value, therefore the result is assigned to tempLink first tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") additionalProcessedProperties[aliasesP.referenceURL] = {tempLink} statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- initialize candidateParams and citeParams for _, citeType in ipairs(citeTypes) do candidateParams[citeType] = {} citeParams[citeType] = {} end -- fill candidateParams for _, citeType in ipairs(citeTypes) do -- This will contain value--priority pairs for each param name. local candidateValuesAndPriorities = {} -- fill candidateValuesAndPriorities for refProperty in pairs(statement.snaks) do if citeErrors[citeType] then break end repeat -- just a simple wrapper to emulate "continue" -- set mappingKey and prefix local mappingKey local prefix = "" if statement.snaks[refProperty][1].datatype == 'external-id' then mappingKey = "external-id" prefix = self.conf:getLabel(refProperty) if prefix ~= "" then prefix = prefix .. " " end else mappingKey = refProperty end local paramName = citeParamMapping[citeType][mappingKey] -- skip properties with empty parameter name if paramName == "" then break -- skip this property for this value of citeType end -- handle unknown properties in the reference if not paramName then referenceEmpty = false local error_message = errorText("unknown-property-in-ref", refProperty) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message break end -- set processedProperty local processedProperty local raw = false -- if the value is wanted raw if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then raw = true end if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then -- Multiple values may be given. processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true else -- If multiple values are given, all but the first suitable one are discarted. processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #processedProperty == 0 then break end referenceEmpty = false -- add an empty entry to candidateValuesAndPriorities, if there isn't one already if not candidateValuesAndPriorities[paramName] then candidateValuesAndPriorities[paramName] = {} end -- find the priority of refProperty local thisPropertyPriority = -1 local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName] if thisParamPrioritization then for i_priority, i_property in ipairs(thisParamPrioritization) do if i_property == refProperty then thisPropertyPriority = i_priority end end end for _, propertyValue in pairs(processedProperty) do table.insert( candidateValuesAndPriorities[paramName], {prefix .. propertyValue, thisPropertyPriority} ) end until true end -- fill candidateParams[citeType] if not citeErrors[citeType] then local compareValuePriorities = function(pair1, pair2) if pair1[2] == -1 and pair2[2] ~= -1 then return false end if pair1[2] ~= -1 and pair2[2] == -1 then return true end return pair1[2] < pair2[2] end -- fill candidateParams[citeType][paramName] for each used param for paramName, _ in pairs(candidateValuesAndPriorities) do table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities) candidateParams[citeType][paramName] = {} for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do table.insert(candidateParams[citeType][paramName], valuePriorityPair[1]) end end end end -- handle additional properties for refProperty in pairs(additionalProcessedProperties) do for _, citeType in ipairs(citeTypes) do repeat -- skip if there already have been errors if citeErrors[citeType] then break end local paramName = citeParamMapping[citeType][refProperty] -- handle unknown properties in the reference if not paramName then -- Skip this additional property, but do not cause an error. break end if paramName == "" then break end referenceEmpty = false if not candidateParams[citeType][paramName] then candidateParams[citeType][paramName] = {} end for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do table.insert(candidateParams[citeType][paramName], propertyValue) end until true end end -- fill citeParams for _, citeType in ipairs(citeTypes) do for paramName, paramValues in pairs(candidateParams[citeType]) do if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then citeParams[citeType][paramName] = paramValues[1] else -- There is more than one value for this parameter - the values will -- go into separate numbered parameters (e.g. "author1", "author2") for paramNum, paramValue in pairs(paramValues) do citeParams[citeType][paramName .. paramNum] = paramValue end end end end -- handle missing mandatory parameters for the templates for _, citeType in ipairs(citeTypes) do for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do if not citeParams[citeType][requiredCiteParam] then -- The required param is not present. if citeErrors[citeType] then -- Do not override the previous error, if it exists. break end local error_message = errorText("missing-mandatory-param", requiredCiteParam) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message end end end local citeTypeToUse = nil -- choose the output template for _, citeType in ipairs(citeTypes) do if not citeErrors[citeType] then citeTypeToUse = citeType break end end -- set refContent local refContent = "" if citeTypeToUse then local templateToUse = citeConfig[citeTypeToUse]["template"] local paramsToUse = citeParams[citeTypeToUse] if not templateToUse or templateToUse == "" then throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse) end -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(paramsToUse) do refContent = refContent .. "|" .. i .. "=" .. v end refContent = "{{" .. templateToUse .. refContent .. "}}" else xpcall( function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end, function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end ) end -- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error. elseif not referenceEmpty then refContent = errorText("malformed-reference-header") for _, citeType in ipairs(citeTypes) do refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType]) end refContent = refContent .. errorText("malformed-reference-footer") end -- wrap refContent local ref = {} if refContent ~= "" then ref = {refContent} if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version) end return {ref} else return {} end end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId]) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p j5a6l03tjwodgrvfnv3lb4x5up93wlv 387380 387376 2026-08-05T13:11:43Z MacTire02 219 prowal 387380 Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local module_arg = ... local i18n local i18nPath local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = module_arg end if not i18n then i18nPath = title .. "/i18n" i18n = require(i18nPath).init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date", globalSiteId = "globalSiteId" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433", lastUpdate = "P5017" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, ...) local text = i18n["errors"][code] if not text then return "Missing i18n error key: " .. tostring(code) end if arg then text = mw.ustring.format(text, unpack(arg)) end return text end local function throwError(errorMessage, ...) error(errorText(errorMessage, unpack(arg))) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local function isValueInTable(searchedItem, inputTable) for _, item in pairs(inputTable) do if item == searchedItem then return true end end return false end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabel(id) end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local citeParamMapping = i18n['cite']['param-mapping'] local citeConfig = i18n['cite']['config'] local citeTypes = i18n['cite']['output-types'] -- will hold rendered properties of the reference which are not directly from statement.snaks, -- Namely, is URL generated from an external ID. local additionalProcessedProperties = {} -- for each citation type, there will be an associative array that associates lists of rendered properties -- to citation-template parameters local candidateParams = {} -- like above, but only associates one rendered property to each parameter; if the above variable -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1") local citeParams = {} local citeErrors = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local version = 12 -- increment this each time the below logic is changed to avoid conflict errors if not statement.snaks then return {} end -- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia) if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then return {} end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference -- find the "Wikidata property" properties in the item from "stated in" local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets. -- the link is in wiki markup, so strip the square brackets and the display text -- gsub also returns another, discarted value, therefore the result is assigned to tempLink first tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") additionalProcessedProperties[aliasesP.referenceURL] = {tempLink} statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- initialize candidateParams and citeParams for _, citeType in ipairs(citeTypes) do candidateParams[citeType] = {} citeParams[citeType] = {} end -- fill candidateParams for _, citeType in ipairs(citeTypes) do -- This will contain value--priority pairs for each param name. local candidateValuesAndPriorities = {} -- fill candidateValuesAndPriorities for refProperty in pairs(statement.snaks) do if citeErrors[citeType] then break end repeat -- just a simple wrapper to emulate "continue" -- set mappingKey and prefix local mappingKey local prefix = "" if statement.snaks[refProperty][1].datatype == 'external-id' then mappingKey = "external-id" prefix = self.conf:getLabel(refProperty) if prefix ~= "" then prefix = prefix .. " " end else mappingKey = refProperty end local paramName = citeParamMapping[citeType][mappingKey] -- skip properties with empty parameter name if paramName == "" then break -- skip this property for this value of citeType end -- handle unknown properties in the reference if not paramName then referenceEmpty = false local error_message = errorText("unknown-property-in-ref", refProperty) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message break end -- set processedProperty local processedProperty local raw = false -- if the value is wanted raw if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then raw = true end if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then -- Multiple values may be given. processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true else -- If multiple values are given, all but the first suitable one are discarted. processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #processedProperty == 0 then break end referenceEmpty = false -- add an empty entry to candidateValuesAndPriorities, if there isn't one already if not candidateValuesAndPriorities[paramName] then candidateValuesAndPriorities[paramName] = {} end -- find the priority of refProperty local thisPropertyPriority = -1 local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName] if thisParamPrioritization then for i_priority, i_property in ipairs(thisParamPrioritization) do if i_property == refProperty then thisPropertyPriority = i_priority end end end for _, propertyValue in pairs(processedProperty) do table.insert( candidateValuesAndPriorities[paramName], {prefix .. propertyValue, thisPropertyPriority} ) end until true end -- fill candidateParams[citeType] if not citeErrors[citeType] then local compareValuePriorities = function(pair1, pair2) if pair1[2] == -1 and pair2[2] ~= -1 then return false end if pair1[2] ~= -1 and pair2[2] == -1 then return true end return pair1[2] < pair2[2] end -- fill candidateParams[citeType][paramName] for each used param for paramName, _ in pairs(candidateValuesAndPriorities) do table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities) candidateParams[citeType][paramName] = {} for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do table.insert(candidateParams[citeType][paramName], valuePriorityPair[1]) end end end end -- handle additional properties for refProperty in pairs(additionalProcessedProperties) do for _, citeType in ipairs(citeTypes) do repeat -- skip if there already have been errors if citeErrors[citeType] then break end local paramName = citeParamMapping[citeType][refProperty] -- handle unknown properties in the reference if not paramName then -- Skip this additional property, but do not cause an error. break end if paramName == "" then break end referenceEmpty = false if not candidateParams[citeType][paramName] then candidateParams[citeType][paramName] = {} end for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do table.insert(candidateParams[citeType][paramName], propertyValue) end until true end end -- fill citeParams for _, citeType in ipairs(citeTypes) do for paramName, paramValues in pairs(candidateParams[citeType]) do if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then citeParams[citeType][paramName] = paramValues[1] else -- There is more than one value for this parameter - the values will -- go into separate numbered parameters (e.g. "author1", "author2") for paramNum, paramValue in pairs(paramValues) do citeParams[citeType][paramName .. paramNum] = paramValue end end end end -- handle missing mandatory parameters for the templates for _, citeType in ipairs(citeTypes) do for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do if not citeParams[citeType][requiredCiteParam] then -- The required param is not present. if citeErrors[citeType] then -- Do not override the previous error, if it exists. break end local error_message = errorText("missing-mandatory-param", requiredCiteParam) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message end end end local citeTypeToUse = nil -- choose the output template for _, citeType in ipairs(citeTypes) do if not citeErrors[citeType] then citeTypeToUse = citeType break end end -- set refContent local refContent = "" if citeTypeToUse then local templateToUse = citeConfig[citeTypeToUse]["template"] local paramsToUse = citeParams[citeTypeToUse] if not templateToUse or templateToUse == "" then throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse) end -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(paramsToUse) do refContent = refContent .. "|" .. i .. "=" .. v end refContent = "{{" .. templateToUse .. refContent .. "}}" else xpcall( function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end, function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end ) end -- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error. elseif not referenceEmpty then refContent = errorText("malformed-reference-header") for _, citeType in ipairs(citeTypes) do refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType]) end refContent = refContent .. errorText("malformed-reference-footer") end -- wrap refContent local ref = {} if refContent ~= "" then ref = {refContent} if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version) end return {ref} else return {} end end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId]) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p 86v5vd8k9hdsfg0oblodvjmwgldk4ib 387381 387380 2026-08-05T13:19:02Z MacTire02 219 ++ 387381 Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local module_arg = ... local i18n local i18nPath local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = module_arg end if not i18n then i18nPath = title .. "/i18n" i18n = require(i18nPath).init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date", globalSiteId = "globalSiteId" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433", lastUpdate = "P5017" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, ...) local text = i18n["errors"][code] if not text then return "Missing i18n error key: " .. tostring(code) end if arg then text = mw.ustring.format(text, unpack(arg)) end return text end local function throwError(errorMessage, ...) error(errorText(errorMessage, unpack(arg))) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local function isValueInTable(searchedItem, inputTable) for _, item in pairs(inputTable) do if item == searchedItem then return true end end return false end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabel(id) end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local citeParamMapping = i18n['cite']['param-mapping'] local citeConfig = i18n['cite']['config'] local citeTypes = i18n['cite']['output-types'] -- will hold rendered properties of the reference which are not directly from statement.snaks, -- Namely, is URL generated from an external ID. local additionalProcessedProperties = {} -- for each citation type, there will be an associative array that associates lists of rendered properties -- to citation-template parameters local candidateParams = {} -- like above, but only associates one rendered property to each parameter; if the above variable -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1") local citeParams = {} local citeErrors = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local version = 12 -- increment this each time the below logic is changed to avoid conflict errors if not statement.snaks then return {} end -- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia) if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then return {} end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference -- find the "Wikidata property" properties in the item from "stated in" local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets. -- the link is in wiki markup, so strip the square brackets and the display text -- gsub also returns another, discarted value, therefore the result is assigned to tempLink first tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") additionalProcessedProperties[aliasesP.referenceURL] = {tempLink} statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- initialize candidateParams and citeParams for _, citeType in ipairs(citeTypes) do candidateParams[citeType] = {} citeParams[citeType] = {} end -- fill candidateParams for _, citeType in ipairs(citeTypes) do -- This will contain value--priority pairs for each param name. local candidateValuesAndPriorities = {} -- fill candidateValuesAndPriorities for refProperty in pairs(statement.snaks) do if citeErrors[citeType] then break end repeat -- just a simple wrapper to emulate "continue" -- set mappingKey and prefix local mappingKey local prefix = "" if statement.snaks[refProperty][1].datatype == 'external-id' then mappingKey = "external-id" prefix = self.conf:getLabel(refProperty) if prefix ~= "" then prefix = prefix .. " " end else mappingKey = refProperty end local paramName = citeParamMapping[citeType][mappingKey] -- skip properties with empty parameter name if paramName == "" then break -- skip this property for this value of citeType end -- handle unknown properties in the reference if not paramName then referenceEmpty = false local error_message = errorText("unknown-property-in-ref", refProperty) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message break end -- set processedProperty local processedProperty local raw = false -- if the value is wanted raw if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then raw = true end if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then -- Multiple values may be given. processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true else -- If multiple values are given, all but the first suitable one are discarted. processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #processedProperty == 0 then break end referenceEmpty = false -- add an empty entry to candidateValuesAndPriorities, if there isn't one already if not candidateValuesAndPriorities[paramName] then candidateValuesAndPriorities[paramName] = {} end -- find the priority of refProperty local thisPropertyPriority = -1 local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName] if thisParamPrioritization then for i_priority, i_property in ipairs(thisParamPrioritization) do if i_property == refProperty then thisPropertyPriority = i_priority end end end for _, propertyValue in pairs(processedProperty) do table.insert( candidateValuesAndPriorities[paramName], {prefix .. propertyValue, thisPropertyPriority} ) end until true end -- fill candidateParams[citeType] if not citeErrors[citeType] then local compareValuePriorities = function(pair1, pair2) if pair1[2] == -1 and pair2[2] ~= -1 then return false end if pair1[2] ~= -1 and pair2[2] == -1 then return true end return pair1[2] < pair2[2] end -- fill candidateParams[citeType][paramName] for each used param for paramName, _ in pairs(candidateValuesAndPriorities) do table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities) candidateParams[citeType][paramName] = {} for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do table.insert(candidateParams[citeType][paramName], valuePriorityPair[1]) end end end end -- handle additional properties for refProperty in pairs(additionalProcessedProperties) do for _, citeType in ipairs(citeTypes) do repeat -- skip if there already have been errors if citeErrors[citeType] then break end local paramName = citeParamMapping[citeType][refProperty] -- handle unknown properties in the reference if not paramName then -- Skip this additional property, but do not cause an error. break end if paramName == "" then break end referenceEmpty = false if not candidateParams[citeType][paramName] then candidateParams[citeType][paramName] = {} end for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do table.insert(candidateParams[citeType][paramName], propertyValue) end until true end end -- fill citeParams for _, citeType in ipairs(citeTypes) do for paramName, paramValues in pairs(candidateParams[citeType]) do if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then citeParams[citeType][paramName] = paramValues[1] else -- There is more than one value for this parameter - the values will -- go into separate numbered parameters (e.g. "author1", "author2") for paramNum, paramValue in pairs(paramValues) do citeParams[citeType][paramName .. paramNum] = paramValue end end end end -- fallback: use "stated in" (P248) as title if "title" (P1476) is missing for _, citeType in ipairs(citeTypes) do local titleParam = citeParamMapping[citeType][aliasesP.title] if titleParam and not citeParams[citeType][titleParam] and statement.snaks[aliasesP.statedIn] then local fallbackTitle = self:getReferenceDetail( statement.snaks, aliasesP.statedIn, false, false ) if fallbackTitle and fallbackTitle ~= "" then citeParams[citeType][titleParam] = fallbackTitle end end end -- handle missing mandatory parameters for the templates for _, citeType in ipairs(citeTypes) do for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do if not citeParams[citeType][requiredCiteParam] then -- The required param is not present. if citeErrors[citeType] then -- Do not override the previous error, if it exists. break end local error_message = errorText("missing-mandatory-param", requiredCiteParam) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message end end end local citeTypeToUse = nil -- choose the output template for _, citeType in ipairs(citeTypes) do if not citeErrors[citeType] then citeTypeToUse = citeType break end end -- set refContent local refContent = "" if citeTypeToUse then local templateToUse = citeConfig[citeTypeToUse]["template"] local paramsToUse = citeParams[citeTypeToUse] if not templateToUse or templateToUse == "" then throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse) end -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(paramsToUse) do refContent = refContent .. "|" .. i .. "=" .. v end refContent = "{{" .. templateToUse .. refContent .. "}}" else xpcall( function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end, function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end ) end -- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error. elseif not referenceEmpty then refContent = errorText("malformed-reference-header") for _, citeType in ipairs(citeTypes) do refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType]) end refContent = refContent .. errorText("malformed-reference-footer") end -- wrap refContent local ref = {} if refContent ~= "" then ref = {refContent} if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version) end return {ref} else return {} end end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId]) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p r28ziiyuyh8zt9ja8qn1pi1vr42mpct Ronney:2021 14 20867 388024 300957 2026-08-06T00:24:38Z MacTire02 219 clowan noa 388024 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2022 14 20868 388023 300958 2026-08-06T00:24:29Z MacTire02 219 clowan noa 388023 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2015 14 20870 388030 300961 2026-08-06T00:26:02Z MacTire02 219 clowan noa 388030 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2016 14 20871 388029 300962 2026-08-06T00:25:53Z MacTire02 219 clowan noa 388029 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2017 14 20872 388028 300963 2026-08-06T00:25:43Z MacTire02 219 clowan noa 388028 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2018 14 20873 388027 300964 2026-08-06T00:25:34Z MacTire02 219 clowan noa 388027 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2019 14 20874 388026 300965 2026-08-06T00:25:24Z MacTire02 219 clowan noa 388026 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1866 14 20998 387674 301529 2026-08-05T23:09:47Z MacTire02 219 clowan noa 387674 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1876 14 21011 387664 301556 2026-08-05T23:06:31Z MacTire02 219 clowan noa 387664 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1698 14 21015 387835 301573 2026-08-05T23:43:21Z MacTire02 219 clowan noa 387835 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1842 14 21026 387698 320768 2026-08-05T23:13:59Z MacTire02 219 clowan noa 387698 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1764 14 21063 387776 319742 2026-08-05T23:34:01Z MacTire02 219 clowan noa 387776 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1823 14 21071 387717 301688 2026-08-05T23:22:45Z MacTire02 219 clowan noa 387717 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1867 14 21079 387673 301746 2026-08-05T23:09:39Z MacTire02 219 clowan noa 387673 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1864 14 21080 387676 301747 2026-08-05T23:10:05Z MacTire02 219 clowan noa 387676 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1844 14 21084 387696 301755 2026-08-05T23:13:41Z MacTire02 219 clowan noa 387696 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1847 14 21085 387693 301754 2026-08-05T23:13:14Z MacTire02 219 clowan noa 387693 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1280 14 21098 387423 386986 2026-08-05T17:31:05Z MacTire02 219 clowan noa 387423 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1238 14 21099 387413 386976 2026-08-05T16:30:22Z MacTire02 219 clowan noa 387413 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1707 14 21110 387829 301802 2026-08-05T23:42:27Z MacTire02 219 clowan noa 387829 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1778 14 21114 387762 301806 2026-08-05T23:31:32Z MacTire02 219 clowan noa 387762 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1691 14 21139 387842 301887 2026-08-05T23:44:29Z MacTire02 219 clowan noa 387842 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1642 14 21140 387880 301888 2026-08-05T23:57:20Z MacTire02 219 clowan noa 387880 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1633 14 21141 387885 301889 2026-08-05T23:58:08Z MacTire02 219 clowan noa 387885 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1556 14 21142 387943 301890 2026-08-06T00:09:26Z MacTire02 219 clowan noa 387943 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1464 14 21143 388012 301891 2026-08-06T00:22:33Z MacTire02 219 clowan noa 388012 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1153 14 21144 387511 301892 2026-08-05T17:55:20Z MacTire02 219 clowan noa 387511 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1777 14 21161 387763 301909 2026-08-05T23:31:40Z MacTire02 219 clowan noa 387763 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1727 14 21162 387811 301910 2026-08-05T23:39:31Z MacTire02 219 clowan noa 387811 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:700 14 21164 387472 321224 2026-08-05T17:43:15Z MacTire02 219 clowan noa 387472 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1888 14 21184 387652 301938 2026-08-05T23:03:56Z MacTire02 219 clowan noa 387652 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:632 14 21187 387468 321223 2026-08-05T17:42:13Z MacTire02 219 clowan noa 387468 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:770 14 21188 387480 321226 2026-08-05T17:44:53Z MacTire02 219 clowan noa 387480 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:712 14 21212 387473 321225 2026-08-05T17:43:33Z MacTire02 219 clowan noa 387473 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1878 14 21213 387662 350108 2026-08-05T23:06:06Z MacTire02 219 clowan noa 387662 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1854 14 21214 387686 301968 2026-08-05T23:11:50Z MacTire02 219 clowan noa 387686 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1816 14 21215 387724 301969 2026-08-05T23:23:52Z MacTire02 219 clowan noa 387724 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1780 14 21216 387760 301970 2026-08-05T23:31:14Z MacTire02 219 clowan noa 387760 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1774 14 21217 387766 301971 2026-08-05T23:32:11Z MacTire02 219 clowan noa 387766 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1749 14 21218 387791 301972 2026-08-05T23:36:27Z MacTire02 219 clowan noa 387791 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1692 14 21219 387841 301973 2026-08-05T23:44:20Z MacTire02 219 clowan noa 387841 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1680 14 21220 387848 301974 2026-08-05T23:45:23Z MacTire02 219 clowan noa 387848 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1643 14 21221 387879 301975 2026-08-05T23:57:12Z MacTire02 219 clowan noa 387879 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1627 14 21222 387890 301976 2026-08-05T23:58:56Z MacTire02 219 clowan noa 387890 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1575 14 21223 387929 301977 2026-08-06T00:06:13Z MacTire02 219 clowan noa 387929 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1483 14 21224 388001 386951 2026-08-06T00:20:33Z MacTire02 219 clowan noa 388001 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1194 14 21225 387518 301979 2026-08-05T17:56:33Z MacTire02 219 clowan noa 387518 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1084 14 21226 387503 301980 2026-08-05T17:53:48Z MacTire02 219 clowan noa 387503 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1512 14 24616 387978 309761 2026-08-06T00:16:13Z MacTire02 219 clowan noa 387978 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1599 14 25855 387914 314620 2026-08-06T00:02:52Z MacTire02 219 clowan noa 387914 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1660 14 25857 387863 314622 2026-08-05T23:48:07Z MacTire02 219 clowan noa 387863 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1734 14 26131 387805 330543 2026-08-05T23:38:31Z MacTire02 219 clowan noa 387805 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1640 14 26180 387882 315897 2026-08-05T23:57:40Z MacTire02 219 clowan noa 387882 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1506 14 26205 387983 315957 2026-08-06T00:17:08Z MacTire02 219 clowan noa 387983 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1371 14 26210 387450 386993 2026-08-05T17:37:24Z MacTire02 219 clowan noa 387450 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1851 14 26268 387689 316061 2026-08-05T23:12:17Z MacTire02 219 clowan noa 387689 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1620 14 26346 387895 316193 2026-08-05T23:59:48Z MacTire02 219 clowan noa 387895 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1705 14 26348 387830 316195 2026-08-05T23:42:36Z MacTire02 219 clowan noa 387830 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1612 14 26376 387902 316266 2026-08-06T00:00:54Z MacTire02 219 clowan noa 387902 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1671 14 26380 387856 316270 2026-08-05T23:46:47Z MacTire02 219 clowan noa 387856 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1555 14 26394 387944 316303 2026-08-06T00:09:36Z MacTire02 219 clowan noa 387944 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1619 14 26397 387896 321566 2026-08-05T23:59:57Z MacTire02 219 clowan noa 387896 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1694 14 26642 387839 316672 2026-08-05T23:44:01Z MacTire02 219 clowan noa 387839 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1625 14 26649 387892 316680 2026-08-05T23:59:20Z MacTire02 219 clowan noa 387892 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1654 14 26651 387869 330605 2026-08-05T23:51:21Z MacTire02 219 clowan noa 387869 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1746 14 27128 387794 317590 2026-08-05T23:36:53Z MacTire02 219 clowan noa 387794 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1828 14 27130 387712 317592 2026-08-05T23:22:01Z MacTire02 219 clowan noa 387712 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1595 14 27162 387917 325889 2026-08-06T00:03:27Z MacTire02 219 clowan noa 387917 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1722 14 27168 387816 317642 2026-08-05T23:40:29Z MacTire02 219 clowan noa 387816 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1794 14 27170 387746 317644 2026-08-05T23:28:17Z MacTire02 219 clowan noa 387746 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1645 14 27193 387877 317676 2026-08-05T23:56:53Z MacTire02 219 clowan noa 387877 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1703 14 27195 387832 317678 2026-08-05T23:42:54Z MacTire02 219 clowan noa 387832 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1786 14 27322 387754 317911 2026-08-05T23:30:05Z MacTire02 219 clowan noa 387754 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1650 14 27345 387873 317963 2026-08-05T23:56:10Z MacTire02 219 clowan noa 387873 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1716 14 27347 387821 317965 2026-08-05T23:41:12Z MacTire02 219 clowan noa 387821 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2023 14 27358 388022 325853 2026-08-06T00:24:20Z MacTire02 219 clowan noa 388022 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1788 14 27539 387752 318507 2026-08-05T23:29:45Z MacTire02 219 clowan noa 387752 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1586 14 27663 387922 318718 2026-08-06T00:04:58Z MacTire02 219 clowan noa 387922 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1630 14 27665 387887 318720 2026-08-05T23:58:28Z MacTire02 219 clowan noa 387887 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1655 14 27667 387868 318722 2026-08-05T23:49:09Z MacTire02 219 clowan noa 387868 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1704 14 27669 387831 318726 2026-08-05T23:42:45Z MacTire02 219 clowan noa 387831 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1693 14 27747 387840 318905 2026-08-05T23:44:11Z MacTire02 219 clowan noa 387840 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1766 14 27749 387774 318907 2026-08-05T23:33:42Z MacTire02 219 clowan noa 387774 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1582 14 27767 387925 318941 2026-08-06T00:05:29Z MacTire02 219 clowan noa 387925 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1647 14 27769 387875 318943 2026-08-05T23:56:30Z MacTire02 219 clowan noa 387875 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1835 14 27829 387705 319069 2026-08-05T23:20:58Z MacTire02 219 clowan noa 387705 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1657 14 27890 387866 319225 2026-08-05T23:48:50Z MacTire02 219 clowan noa 387866 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1548 14 28058 387949 319686 2026-08-06T00:10:39Z MacTire02 219 clowan noa 387949 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1514 14 28075 387977 319710 2026-08-06T00:16:02Z MacTire02 219 clowan noa 387977 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1574 14 28078 387930 319713 2026-08-06T00:06:22Z MacTire02 219 clowan noa 387930 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1673 14 28090 387854 319725 2026-08-05T23:46:28Z MacTire02 219 clowan noa 387854 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1754 14 28092 387786 319729 2026-08-05T23:35:37Z MacTire02 219 clowan noa 387786 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1762 14 28099 387778 319743 2026-08-05T23:34:18Z MacTire02 219 clowan noa 387778 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1768 14 28410 387772 320491 2026-08-05T23:33:24Z MacTire02 219 clowan noa 387772 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1760 14 28432 387780 320529 2026-08-05T23:34:36Z MacTire02 219 clowan noa 387780 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1567 14 28448 387934 320559 2026-08-06T00:07:09Z MacTire02 219 clowan noa 387934 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1607 14 28451 387907 320562 2026-08-06T00:01:42Z MacTire02 219 clowan noa 387907 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1498 14 28454 387989 386955 2026-08-06T00:18:08Z MacTire02 219 clowan noa 387989 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1501 14 28502 387986 320663 2026-08-06T00:17:38Z MacTire02 219 clowan noa 387986 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1566 14 28504 387935 320666 2026-08-06T00:07:20Z MacTire02 219 clowan noa 387935 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1534 14 28506 387962 320668 2026-08-06T00:12:44Z MacTire02 219 clowan noa 387962 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1718 14 28514 387819 320681 2026-08-05T23:40:55Z MacTire02 219 clowan noa 387819 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1430 14 28554 387459 320760 2026-08-05T17:39:26Z MacTire02 219 clowan noa 387459 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1798 14 28560 387742 320769 2026-08-05T23:27:40Z MacTire02 219 cl 387742 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1431 14 28589 387460 320846 2026-08-05T17:39:37Z MacTire02 219 clowan noa 387460 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1412 14 28591 387455 320848 2026-08-05T17:38:36Z MacTire02 219 clowan noa 387455 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1597 14 28618 387915 320897 2026-08-06T00:03:03Z MacTire02 219 clowan noa 387915 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1527 14 28621 387968 320902 2026-08-06T00:13:44Z MacTire02 219 clowan noa 387968 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1469 14 28624 388010 320905 2026-08-06T00:22:05Z MacTire02 219 clowan noa 388010 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1792 14 28628 387748 320910 2026-08-05T23:29:08Z MacTire02 219 clowan noa 387748 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1433 14 28633 387461 320918 2026-08-05T17:39:48Z MacTire02 219 clowan noa 387461 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1497 14 28636 387990 386956 2026-08-06T00:18:18Z MacTire02 219 clowan noa 387990 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1616 14 28638 387898 320924 2026-08-06T00:00:18Z MacTire02 219 clowan noa 387898 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1609 14 28640 387905 320948 2026-08-06T00:01:23Z MacTire02 219 clowan noa 387905 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1610 14 28697 387904 321116 2026-08-06T00:01:11Z MacTire02 219 clowan noa 387904 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1664 14 28699 387860 321118 2026-08-05T23:47:40Z MacTire02 219 clowan noa 387860 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:79 14 28710 387558 321145 2026-08-05T19:05:57Z MacTire02 219 clowan noa 387558 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1541 14 28713 387955 321148 2026-08-06T00:11:34Z MacTire02 219 clowan noa 387955 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1730 14 28739 387808 321220 2026-08-05T23:38:58Z MacTire02 219 clowan noa 387808 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:362 14 28741 387560 321227 2026-08-05T19:06:37Z MacTire02 219 clowan noa 387560 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1683 14 28775 387847 321275 2026-08-05T23:45:14Z MacTire02 219 clowan noa 387847 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1208 14 28777 387405 386974 2026-08-05T16:14:33Z MacTire02 219 ronney elley 387405 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1200}} [[Ronney:13oo eash rere blein|08]] [[Ronney:1200yn| 8]] dx2hrebfhsrew5k3ahj1t39law11f51 387419 387405 2026-08-05T16:45:32Z MacTire02 219 clowan noa 387419 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1168 14 28779 387512 321281 2026-08-05T17:55:35Z MacTire02 219 clowan noa 387512 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1687 14 28793 387844 321311 2026-08-05T23:44:47Z MacTire02 219 clowan noa 387844 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1614 14 28794 387900 321312 2026-08-06T00:00:36Z MacTire02 219 clowan noa 387900 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1580 14 28797 387927 321318 2026-08-06T00:05:52Z MacTire02 219 clowan noa 387927 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1714 14 28802 387823 321325 2026-08-05T23:41:30Z MacTire02 219 clowan noa 387823 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1787 14 28808 387753 321336 2026-08-05T23:29:55Z MacTire02 219 clowan noa 387753 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1418 14 28811 387457 321341 2026-08-05T17:38:55Z MacTire02 219 clowan noa 387457 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1606 14 28815 387908 321347 2026-08-06T00:01:53Z MacTire02 219 clowan noa 387908 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1457 14 28817 388015 321350 2026-08-06T00:23:03Z MacTire02 219 clowan noa 388015 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1659 14 28820 387864 321355 2026-08-05T23:48:16Z MacTire02 219 clowan noa 387864 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1492 14 28869 387992 386959 2026-08-06T00:18:46Z MacTire02 219 clowan noa 387992 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1696 14 28871 387837 321441 2026-08-05T23:43:38Z MacTire02 219 clowan noa 387837 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1601 14 28879 387912 321452 2026-08-06T00:02:29Z MacTire02 219 clowan noa 387912 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1529 14 28881 387966 321454 2026-08-06T00:13:23Z MacTire02 219 clowan noa 387966 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1740 14 28917 387800 321562 2026-08-05T23:37:47Z MacTire02 219 clowan noa 387800 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1611 14 28921 387903 321567 2026-08-06T00:01:03Z MacTire02 219 clowan noa 387903 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1752 14 28957 387788 321656 2026-08-05T23:35:57Z MacTire02 219 clowan noa 387788 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1776 14 28988 387764 321735 2026-08-05T23:31:51Z MacTire02 219 clowan noa 387764 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1839 14 29028 387701 321836 2026-08-05T23:14:27Z MacTire02 219 clowan noa 387701 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1834 14 29029 387706 321837 2026-08-05T23:21:06Z MacTire02 219 clowan noa 387706 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1830 14 29030 387710 321838 2026-08-05T23:21:43Z MacTire02 219 clowan noa 387710 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1821 14 29051 387719 321872 2026-08-05T23:23:06Z MacTire02 219 clowan noa 387719 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1871 14 29058 387669 321893 2026-08-05T23:07:22Z MacTire02 219 clowan noa 387669 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1519 14 29094 387974 321961 2026-08-06T00:15:17Z MacTire02 219 clowan noa 387974 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1617 14 29102 387897 321978 2026-08-06T00:00:08Z MacTire02 219 clowan noa 387897 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1554 14 29105 387945 321983 2026-08-06T00:09:48Z MacTire02 219 clowan noa 387945 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1626 14 29108 387891 321986 2026-08-05T23:59:08Z MacTire02 219 clowan noa 387891 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1713 14 29208 387824 322168 2026-08-05T23:41:41Z MacTire02 219 clowan noa 387824 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1227 14 29241 387406 386975 2026-08-05T16:15:00Z MacTire02 219 ronney elley 387406 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1220}} [[Ronney:13oo eash rere blein|27]] [[Ronney:1220yn| 7]] polcky97be42izz6c0t9pmkt1r1c9uc 387414 387406 2026-08-05T16:30:42Z MacTire02 219 clowan noa 387414 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1274 14 29256 387425 386984 2026-08-05T17:31:24Z MacTire02 219 clowan noa 387425 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1348 14 29262 387448 386991 2026-08-05T17:37:01Z MacTire02 219 clowan noa 387448 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1459 14 29287 388014 322696 2026-08-06T00:22:53Z MacTire02 219 clowan noa 388014 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1507 14 29289 387982 322698 2026-08-06T00:16:53Z MacTire02 219 clowan noa 387982 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1684 14 29292 387846 322701 2026-08-05T23:45:05Z MacTire02 219 clowan noa 387846 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1560 14 29328 387940 322929 2026-08-06T00:08:36Z MacTire02 219 clowan noa 387940 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1669 14 29334 387857 322937 2026-08-05T23:46:58Z MacTire02 219 clowan noa 387857 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1672 14 29351 387855 322966 2026-08-05T23:46:38Z MacTire02 219 clowan noa 387855 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1742 14 29353 387798 322968 2026-08-05T23:37:29Z MacTire02 219 clowan noa 387798 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1628 14 29373 387889 323025 2026-08-05T23:58:47Z MacTire02 219 clowan noa 387889 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1629 14 29393 387888 323067 2026-08-05T23:58:37Z MacTire02 219 clowan noa 387888 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1581 14 29463 387926 323400 2026-08-06T00:05:41Z MacTire02 219 clowan noa 387926 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1641 14 29465 387881 323403 2026-08-05T23:57:30Z MacTire02 219 clowan noa 387881 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1522 14 29470 387971 323409 2026-08-06T00:14:50Z MacTire02 219 clowan noa 387971 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1565 14 29472 387936 323411 2026-08-06T00:07:53Z MacTire02 219 clowan noa 387936 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1455 14 29498 388016 323453 2026-08-06T00:23:13Z MacTire02 219 clowan noa 388016 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1579 14 29851 387928 324493 2026-08-06T00:06:03Z MacTire02 219 clowan noa 387928 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1755 14 29921 387785 324678 2026-08-05T23:35:29Z MacTire02 219 clowan noa 387785 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:845 14 29929 387483 324689 2026-08-05T17:45:44Z MacTire02 219 clowan noa 387483 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1761 14 29937 387779 324726 2026-08-05T23:34:27Z MacTire02 219 clowan noa 387779 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1763 14 29938 387777 324727 2026-08-05T23:34:10Z MacTire02 219 clowan noa 387777 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1769 14 29939 387771 324728 2026-08-05T23:33:16Z MacTire02 219 clowan noa 387771 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1725 14 30011 387813 324872 2026-08-05T23:39:50Z MacTire02 219 clowan noa 387813 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1779 14 30033 387761 324919 2026-08-05T23:31:23Z MacTire02 219 clowan noa 387761 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1793 14 30037 387747 324927 2026-08-05T23:28:27Z MacTire02 219 clowan noa 387747 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1796 14 30039 387744 324931 2026-08-05T23:27:59Z MacTire02 219 clowan noa 387744 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1781 14 30043 387759 324937 2026-08-05T23:31:05Z MacTire02 219 clowan noa 387759 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1783 14 30045 387757 324940 2026-08-05T23:30:46Z MacTire02 219 clowan noa 387757 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1785 14 30046 387755 324941 2026-08-05T23:30:26Z MacTire02 219 clowan noa 387755 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1739 14 30059 387801 325039 2026-08-05T23:37:56Z MacTire02 219 clowan noa 387801 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1520 14 30066 387973 325052 2026-08-06T00:15:08Z MacTire02 219 clowan noa 387973 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1500 14 30077 387987 325110 2026-08-06T00:17:48Z MacTire02 219 clowan noa 387987 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1771 14 30094 387769 325146 2026-08-05T23:32:58Z MacTire02 219 clowan noa 387769 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1543 14 30098 387953 325152 2026-08-06T00:11:15Z MacTire02 219 clowan noa 387953 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:106 RC 14 30105 387567 325170 2026-08-05T19:08:44Z MacTire02 219 clowan noa 387567 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:43 RC 14 30108 387562 325177 2026-08-05T19:07:37Z MacTire02 219 clowan noa 387562 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:100 RC 14 30126 387566 325220 2026-08-05T19:08:35Z MacTire02 219 clowan noa 387566 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1546 14 30156 387951 325261 2026-08-06T00:10:57Z MacTire02 219 clowan noa 387951 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1745 14 30191 387795 325349 2026-08-05T23:37:02Z MacTire02 219 clowan noa 387795 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1747 14 30192 387793 325350 2026-08-05T23:36:45Z MacTire02 219 clowan noa 387793 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1748 14 30193 387792 325351 2026-08-05T23:36:36Z MacTire02 219 clowan noa 387792 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1656 14 30209 387867 325388 2026-08-05T23:49:00Z MacTire02 219 clowan noa 387867 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1720 14 30276 387818 325581 2026-08-05T23:40:46Z MacTire02 219 clowan noa 387818 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1729 14 30279 387809 325584 2026-08-05T23:39:07Z MacTire02 219 clowan noa 387809 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1667 14 30323 387858 325649 2026-08-05T23:47:21Z MacTire02 219 clowan noa 387858 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1481 14 30420 388002 386969 2026-08-06T00:20:43Z MacTire02 219 clowan noa 388002 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:2024 14 30451 388021 325854 2026-08-06T00:24:11Z MacTire02 219 clowan noa 388021 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1596 14 30459 387916 325890 2026-08-06T00:03:17Z MacTire02 219 clowan noa 387916 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1547 14 30512 387950 326000 2026-08-06T00:10:48Z MacTire02 219 clowan noa 387950 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:49 RC 14 30580 387564 326108 2026-08-05T19:08:10Z MacTire02 219 clowan noa 387564 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1569 14 30612 387932 326168 2026-08-06T00:06:46Z MacTire02 219 clowan noa 387932 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1738 14 30625 387802 326213 2026-08-05T23:38:06Z MacTire02 219 clowan noa 387802 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1244 14 30634 387422 386978 2026-08-05T17:30:49Z MacTire02 219 clowan noa 387422 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1240 14 30659 387421 386977 2026-08-05T17:30:35Z MacTire02 219 clowan noa 387421 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1653 14 30665 387870 326301 2026-08-05T23:51:38Z MacTire02 219 clowan noa 387870 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1561 14 30714 387939 326401 2026-08-06T00:08:23Z MacTire02 219 clowan noa 387939 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1461 14 30780 388013 326533 2026-08-06T00:22:43Z MacTire02 219 clowan noa 388013 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1551 14 30795 387947 326553 2026-08-06T00:10:12Z MacTire02 219 clowan noa 387947 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1536 14 30797 387960 326555 2026-08-06T00:12:25Z MacTire02 219 clowan noa 387960 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1537 14 30809 387959 326576 2026-08-06T00:12:12Z MacTire02 219 clowan noa 387959 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1398 14 30882 387452 386995 2026-08-05T17:37:56Z MacTire02 219 clowan noa 387452 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:733 14 30887 387474 326811 2026-08-05T17:43:49Z MacTire02 219 clowan noa 387474 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:797 14 30890 387481 326814 2026-08-05T17:45:07Z MacTire02 219 clowan noa 387481 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1594 14 30893 387918 326818 2026-08-06T00:03:44Z MacTire02 219 clowan noa 387918 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1731 14 30897 387807 326824 2026-08-05T23:38:49Z MacTire02 219 clowan noa 387807 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1677 14 30899 387851 326826 2026-08-05T23:45:53Z MacTire02 219 clowan noa 387851 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1736 14 30901 387803 326828 2026-08-05T23:38:14Z MacTire02 219 clowan noa 387803 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1468 14 30903 388011 326830 2026-08-06T00:22:18Z MacTire02 219 clowan noa 388011 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1530 14 30912 387965 326840 2026-08-06T00:13:12Z MacTire02 219 clowan noa 387965 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1724 14 30916 387814 326847 2026-08-05T23:39:59Z MacTire02 219 clowan noa 387814 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1445 14 30948 387464 326897 2026-08-05T17:40:31Z MacTire02 219 clowan noa 387464 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1137 14 31040 387510 327903 2026-08-05T17:55:05Z MacTire02 219 clowan noa 387510 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1193 14 31042 387517 327905 2026-08-05T17:56:23Z MacTire02 219 clowan noa 387517 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1453 14 31045 388017 327912 2026-08-06T00:23:24Z MacTire02 219 clowan noa 388017 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1169 14 31143 387513 328254 2026-08-05T17:55:44Z MacTire02 219 clowan noa 387513 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1187 14 31145 387515 328262 2026-08-05T17:56:06Z MacTire02 219 clowan noa 387515 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1203 14 31147 387402 386971 2026-08-05T16:13:58Z MacTire02 219 ronney elley 387402 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1200}} [[Ronney:13oo eash rere blein|03]] [[Ronney:1200yn| 3]] 5usy4gstlnd9cnkocpgzfmrfg65aqa7 387416 387402 2026-08-05T16:31:24Z MacTire02 219 clowan noa 387416 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1133 14 31149 387508 328266 2026-08-05T17:54:46Z MacTire02 219 clowan noa 387508 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1189 14 31151 387516 328268 2026-08-05T17:56:15Z MacTire02 219 clowan noa 387516 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:851 14 31153 387485 328271 2026-08-05T17:46:04Z MacTire02 219 clowan noa 387485 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1710 14 31436 387827 328768 2026-08-05T23:42:07Z MacTire02 219 clowan noa 387827 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash rere blein 14 31526 388063 380660 2026-08-06T00:58:37Z MacTire02 219 ronney elley 388063 wikitext text/x-wiki {{category series navigation}} {{DEFAULTSORT:Reeriaght Unnaneysit}} [[Ronney:20oo eash 'sy Reeriaght Unnaneysit| Blein]] [[Ronney:Yn Reeriaght Unnaneysit rere blein| 20]] [[Ronney:20oo eash rere çheer as blein]] [[Ronney:Yn Oarpey 'sy 20oo eash rere blein]] arv7n08rr3gcr9lsgcnmlbef2yikscz Ronney:747 14 31536 387476 329136 2026-08-05T17:44:07Z MacTire02 219 clowan noa 387476 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:814 14 31539 387482 328999 2026-08-05T17:45:24Z MacTire02 219 clowan noa 387482 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1588 14 31583 387921 329068 2026-08-06T00:04:47Z MacTire02 219 clowan noa 387921 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1613 14 31606 387901 329113 2026-08-06T00:00:45Z MacTire02 219 clowan noa 387901 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1661 14 31608 387862 329116 2026-08-05T23:47:58Z MacTire02 219 clowan noa 387862 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1510 14 31612 387980 329120 2026-08-06T00:16:32Z MacTire02 219 clowan noa 387980 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1524 14 31615 387970 329129 2026-08-06T00:14:30Z MacTire02 219 clowan noa 387970 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:738 14 31618 387475 329135 2026-08-05T17:43:56Z MacTire02 219 clowan noa 387475 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1260 14 31623 387429 386980 2026-08-05T17:32:21Z MacTire02 219 clowan noa 387429 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1568 14 31665 387933 329208 2026-08-06T00:06:57Z MacTire02 219 clowan noa 387933 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1622 14 31682 387893 329228 2026-08-05T23:59:30Z MacTire02 219 clowan noa 387893 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1604 14 31683 387910 329229 2026-08-06T00:02:11Z MacTire02 219 clowan noa 387910 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1563 14 31686 387938 329233 2026-08-06T00:08:13Z MacTire02 219 clowan noa 387938 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1715 14 31849 387822 329593 2026-08-05T23:41:21Z MacTire02 219 clowan noa 387822 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1679 14 31851 387849 329595 2026-08-05T23:45:32Z MacTire02 219 clowan noa 387849 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1539 14 31854 387957 329600 2026-08-06T00:11:54Z MacTire02 219 clowan noa 387957 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1509 14 31857 387981 329603 2026-08-06T00:16:42Z MacTire02 219 clowan noa 387981 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1402 14 31881 387454 329654 2026-08-05T17:38:17Z MacTire02 219 clowan noa 387454 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1472 14 31883 388007 329657 2026-08-06T00:21:35Z MacTire02 219 clowan noa 388007 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1688 14 31885 387843 329659 2026-08-05T23:44:39Z MacTire02 219 clowan noa 387843 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:959 14 31981 387489 329904 2026-08-05T17:47:14Z MacTire02 219 clowan noa 387489 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:941 14 31985 387488 329909 2026-08-05T17:46:58Z MacTire02 219 clowan noa 387488 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1646 14 32058 387876 330100 2026-08-05T23:56:40Z MacTire02 219 clowan noa 387876 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1712 14 32070 387825 330115 2026-08-05T23:41:49Z MacTire02 219 clowan noa 387825 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1635 14 32072 387884 330117 2026-08-05T23:57:59Z MacTire02 219 clowan noa 387884 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1615 14 32122 387899 330245 2026-08-06T00:00:27Z MacTire02 219 clowan noa 387899 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1493 14 32249 387991 386958 2026-08-06T00:18:30Z MacTire02 219 clowan noa 387991 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1470 14 32252 388009 330535 2026-08-06T00:21:56Z MacTire02 219 clowan noa 388009 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1700 14 32256 387834 330544 2026-08-05T23:43:12Z MacTire02 219 clowan noa 387834 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1443 14 32258 387463 330547 2026-08-05T17:40:20Z MacTire02 219 clowan noa 387463 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1592 14 32261 387920 330550 2026-08-06T00:04:36Z MacTire02 219 clowan noa 387920 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1651 14 32264 387872 330553 2026-08-05T23:56:00Z MacTire02 219 clowan noa 387872 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1034 14 32267 387498 330556 2026-08-05T17:52:59Z MacTire02 219 clowan noa 387498 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1572 14 32269 387931 330558 2026-08-06T00:06:33Z MacTire02 219 clowan noa 387931 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1644 14 32272 387878 330561 2026-08-05T23:57:02Z MacTire02 219 clowan noa 387878 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1553 14 32274 387946 330563 2026-08-06T00:10:00Z MacTire02 219 clowan noa 387946 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1070 14 32277 387501 330567 2026-08-05T17:53:29Z MacTire02 219 clowan noa 387501 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1136 14 32279 387509 330570 2026-08-05T17:54:57Z MacTire02 219 clowan noa 387509 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1649 14 32282 387874 330574 2026-08-05T23:56:20Z MacTire02 219 clowan noa 387874 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1421 14 32284 387458 330576 2026-08-05T17:39:04Z MacTire02 219 clowan noa 387458 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1558 14 32287 387941 330581 2026-08-06T00:08:49Z MacTire02 219 clowan noa 387941 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1532 14 32289 387964 330583 2026-08-06T00:13:03Z MacTire02 219 clowan noa 387964 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:995 14 32292 387491 330586 2026-08-05T17:47:40Z MacTire02 219 clowan noa 387491 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1035 14 32296 387499 330590 2026-08-05T17:53:08Z MacTire02 219 clowan noa 387499 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1728 14 32298 387810 330593 2026-08-05T23:39:20Z MacTire02 219 clowan noa 387810 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1535 14 32303 387961 330599 2026-08-06T00:12:35Z MacTire02 219 clowan noa 387961 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1414 14 32305 387456 330601 2026-08-05T17:38:47Z MacTire02 219 clowan noa 387456 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1544 14 32307 387952 330603 2026-08-06T00:11:06Z MacTire02 219 clowan noa 387952 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1658 14 32309 387865 330606 2026-08-05T23:48:27Z MacTire02 219 clowan noa 387865 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1585 14 32313 387923 330611 2026-08-06T00:05:08Z MacTire02 219 clowan noa 387923 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1474 14 32316 388005 330614 2026-08-06T00:21:13Z MacTire02 219 clowan noa 388005 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1605 14 32318 387909 330617 2026-08-06T00:02:02Z MacTire02 219 clowan noa 387909 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1515 14 32320 387976 330619 2026-08-06T00:15:54Z MacTire02 219 clowan noa 387976 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1499 14 32322 387988 386954 2026-08-06T00:17:58Z MacTire02 219 clowan noa 387988 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:865 14 32324 387486 330623 2026-08-05T17:46:19Z MacTire02 219 clowan noa 387486 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:65 RC 14 32327 387565 330626 2026-08-05T19:08:25Z MacTire02 219 clowan noa 387565 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:8 RC 14 32329 387561 330629 2026-08-05T19:07:27Z MacTire02 219 clowan noa 387561 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1721 14 32613 387817 332694 2026-08-05T23:40:38Z MacTire02 219 clowan noa 387817 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:571 14 32680 387466 333345 2026-08-05T17:41:30Z MacTire02 219 clowan noa 387466 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:570 14 32682 387465 333347 2026-08-05T17:41:19Z MacTire02 219 clowan noa 387465 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:866 14 32745 387487 333475 2026-08-05T17:46:28Z MacTire02 219 clowan noa 387487 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Mannin 'sy 20oo eash rere blein 14 32973 387389 380721 2026-08-05T13:56:21Z MacTire02 219 ronnaghyn elley 387389 wikitext text/x-wiki {{category series navigation}} Bleeantyn y [[20oo eash]] ayns [[Mannin]]. [[Ronney:Mannin 'sy 20oo eash| Blein]] [[Ronney:Mannin rere blein| 20]] [[Ronney:Yn Oarpey 'sy 20oo eash rere blein]] [[Ronney:Yn Impiraght Ghoaldagh 'sy 20oo eash rere blein]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash rere blein]] ggrhmforqha2jy00dncni4c6x6u16nc Ronney:Mannin 'sy 19oo eash rere blein 14 33001 388061 380719 2026-08-06T00:56:54Z MacTire02 219 ronney noa 388061 wikitext text/x-wiki Bleeantyn y [[19oo eash]] ayns [[Mannin]]. {{category series navigation}} [[Ronney:Mannin 'sy 19oo eash| ]] [[Ronney:Mannin rere blein| 19]] [[Ronney:Yn Oarpey 'sy 19oo eash rere blein|Mannin]] [[Ronney:19oo eash rere çheer as blein]] [[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash rere blein|Mannin]] lfwvhl6686mykfgdpvnxrvevrmuvw8v Ronney:Mannin 'sy 20oo eash 14 33003 388110 380607 2026-08-06T01:29:44Z MacTire02 219 ronney elley 388110 wikitext text/x-wiki {{category series navigation}} [[Ronney:20oo eash rere çheer]] [[Ronney:Mannin rere eash|20]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash]] [[Ronney:Yn Oarpey 'sy 20oo eash]] i5kamqmpfjv9hnbq8a0addcq2gen7g3 Ronney:Mannin rere eash 14 33004 388115 350656 2026-08-06T01:36:14Z MacTire02 219 ronney elley 388115 wikitext text/x-wiki [[Ronney:Shennaghys Vannin rere earish| 3]] [[Ronney:Yn Oarpey rere eash]] [[Ronney:Croghaneyn-crooin rere eash]] tn4txelmj5povqdy2itigib20o6cg9a Ronney:Mannin ayns ny 1910yn 14 33009 388116 380595 2026-08-06T01:38:38Z MacTire02 219 ronney elley 388116 wikitext text/x-wiki {{category series navigation}} [[Ronney:1910yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1910yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1910yn]] q12wzma18wij793y5w6vvj6hjtp3tu0 Ronney:Mannin ayns ny 1920yn 14 33010 388117 381406 2026-08-06T01:38:52Z MacTire02 219 ronney elley 388117 wikitext text/x-wiki {{category series navigation}} [[Ronney:1920yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1920yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1920yn]] goxkymjlpg55mv2arkmch6q1vrqgf45 Ronney:Mannin ayns ny 1940yn 14 33011 388118 380722 2026-08-06T01:39:05Z MacTire02 219 ronney elley 388118 wikitext text/x-wiki {{category series navigation}} [[Ronney:1940yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1940yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1940yn]] j7zqam4n7qti0bb95jcvk5n1urmqqze Ronney:Mannin ayns ny 1950yn 14 33012 388119 380739 2026-08-06T01:39:24Z MacTire02 219 ronney elley 388119 wikitext text/x-wiki {{category series navigation}} [[Ronney:1950yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1950yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1950yn]] ehrvyg72n7man6lsgtvnbipir36xtv8 Ronney:Mannin ayns ny 1960yn 14 33013 388120 380728 2026-08-06T01:39:50Z MacTire02 219 ronney elley 388120 wikitext text/x-wiki {{category series navigation}} [[Ronney:1960yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1960yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1960yn]] n8b6l25v2azigfqpd0qdgujtjv4bdt3 Ronney:Mannin ayns ny 1970yn 14 33014 388121 380654 2026-08-06T01:40:08Z MacTire02 219 ronney elley 388121 wikitext text/x-wiki {{category series navigation}} [[Ronney:1970yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1970yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1970yn]] 087lofzgzv31zsykpptd1wtvab04c5s Ronney:Mannin ayns ny 1980yn 14 33015 388111 380643 2026-08-06T01:30:22Z MacTire02 219 ronney elley 388111 wikitext text/x-wiki {{category series navigation}} [[Ronney:1980yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1980yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1980yn]] f8mvp5zev2sk2dl8k1lnvtmuuuu27m6 Ronney:Mannin ayns ny 1990yn 14 33016 388122 387298 2026-08-06T01:42:15Z MacTire02 219 ronney elley 388122 wikitext text/x-wiki {{category series navigation}} [[Ronney:1990yn rere çheer]] [[Ronney:Mannin 'sy 20oo eash| ]] [[Ronney:Yn Oarpey ayns ny 1990yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 1990yn]] coranm40vuokbg55r1btqp2elzkfd2m Ronney:Mannin ayns ny 2000yn 14 33017 388123 387297 2026-08-06T01:42:37Z MacTire02 219 ronney elley 388123 wikitext text/x-wiki {{category series navigation}} [[Ronney:2000yn rere çheer]] [[Ronney:Mannin 'sy 21d eash| ]] [[Ronney:Yn Oarpey ayns ny 2000yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 2000yn]] d7z8ne0z52xijyhcfymdp2dui95si58 Ronney:Mannin ayns ny 2010yn 14 33018 388124 387280 2026-08-06T01:42:51Z MacTire02 219 ronney elley 388124 wikitext text/x-wiki {{category series navigation}} [[Ronney:2010yn rere çheer]] [[Ronney:Mannin 'sy 21d eash| ]] [[Ronney:Yn Oarpey ayns ny 2010yn]] [[Ronney:Mannin rere jeihaght| ]] [[Ronney:Croghaneyn-crooin ayns ny 2010yn]] mbr4b7gmw7qvugzsi4objnm57blyuug Ronney:Mannin ayns ny 2020yn 14 33019 388125 387271 2026-08-06T01:43:12Z MacTire02 219 ronney elley 388125 wikitext text/x-wiki {{category series navigation}} [[Ronney:2020yn rere çheer]] [[Ronney:Mannin 'sy 21d eash| ]] [[Ronney:Yn Oarpey ayns ny 2020yn]] [[Ronney:Mannin rere jeihaght| 2020]] [[Ronney:Croghaneyn-crooin ayns ny 2020yn]] srg0bytf5hw44byudcotn6nz9mqeuvv Ronney:Mannin 'sy 21d eash rere blein 14 33025 388066 380720 2026-08-06T01:00:53Z MacTire02 219 ronney elley 388066 wikitext text/x-wiki {{category series navigation}} Bleeantyn y [[21d eash]] ayns [[Mannin]]. [[Ronney:Mannin 'sy 21d eash| Blein]] [[Ronney:Mannin rere blein| 21]] [[Ronney:Yn Oarpey 'sy 21d eash rere blein]] [[Ronney:21d eash rere çheer as blein]] [[Ronney:Ny Croghaneyn-crooin 'sy 21d eash rere blein]] dcwyymx33at7sq7eff56wwvm80h90hc 388067 388066 2026-08-06T01:01:16Z MacTire02 219 ronney elley 388067 wikitext text/x-wiki {{category series navigation}} Bleeantyn y [[21d eash]] ayns [[Mannin]]. [[Ronney:Mannin 'sy 21d eash| Blein]] [[Ronney:Mannin rere blein| 21]] [[Ronney:Yn Oarpey 'sy 21d eash rere blein]] [[Ronney:21d eash rere çheer as blein]] [[Ronney:Croghaneyn-crooin 'sy 21d eash rere blein]] dqeqj4xiowcn4qzf3h9u2r93vxfcatu Ronney:Yn Ookraan 'sy 21d eash rere blein 14 33026 388068 387294 2026-08-06T01:02:45Z MacTire02 219 ronney elley 388068 wikitext text/x-wiki {{category series navigation}} [[Ronney:Yn Ookraan 'sy 21d eash| Blein]] [[Ronney:Yn Ookraan rere blein|21]] [[Ronney:Yn Oarpey 'sy 21d eash rere blein|Ookraan]] [[Ronney:21d eash rere çheer as blein|Ookraan]] dhuddqyx638vl1eq80tuclihvsa3iu3 Ronney:1709 14 33033 387828 334340 2026-08-05T23:42:15Z MacTire02 219 clowan noa 387828 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1726 14 33087 387812 334434 2026-08-05T23:39:40Z MacTire02 219 clowan noa 387812 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1477 14 33101 388003 334449 2026-08-06T00:20:53Z MacTire02 219 clowan noa 388003 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1518 14 33103 387975 334453 2026-08-06T00:15:30Z MacTire02 219 clowan noa 387975 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1503 14 33105 387985 334455 2026-08-06T00:17:28Z MacTire02 219 clowan noa 387985 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:44 RC 14 33112 387563 334478 2026-08-05T19:07:47Z MacTire02 219 clowan noa 387563 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:356 RC 14 33114 387568 334480 2026-08-05T19:09:00Z MacTire02 219 clowan noa 387568 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1549 14 33116 387948 334482 2026-08-06T00:10:23Z MacTire02 219 clowan noa 387948 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1717 14 33241 387820 334763 2026-08-05T23:41:03Z MacTire02 219 clowan noa 387820 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Clowan:Kishtey fys ellyneyr kiaullee 10 33988 387383 369181 2026-08-05T13:46:16Z MacTire02 219 ++ 387383 wikitext text/x-wiki {{Infobox | child = {{lc:{{{embed|}}}}} | bodyclass = vcard plainlist | bodystyle = width:{{#if:{{{box_width|}}} |{{{box_width}}} |22em}}; font-size:95%; text-align:left; | headerstyle = color: #202122;background-color: {{Kishtey fys ellyneyr kiaullee/daah}} | autoheaders = y | labelstyle = padding:0.2em 1.0em 0.2em 0.2em; background:transparent; line-height:1.3em; text-align:left; font-size:90%; | datastyle = padding:0.2em; line-height:1.3em; vertical-align:middle; font-size:90%; | title = {{#ifeq:{{lc:{{{embed|}}}}}|yes|'''Coorse kiaullee'''}} | decat = yes <!-- remove from template:infobox tracking categories --> | aboveclass = fn | abovestyle = color: #202122;background-color: {{Kishtey fys ellyneyr kiaullee/daah}}; font-size: 125%; text-align:center; font-size:125%; | above = {{#ifeq:{{lc:{{{embed|}}}}}|yes||{{#if:{{{name|{{PAGENAMEBASE}}}}}|{{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 78%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="{{Kishtey fys ellyneyr kiaullee/hCard class|{{{background|}}}}}">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{ennym_dooghyssagh|}}}|{{#if:{{{çhengey_ennym_dooghyssagh|}}}|<div class="nickname" lang="{{{çhengey_ennym_dooghyssagh|}}}">}}{{{ennym_dooghyssagh|}}}{{#if:{{{çhengey_ennym_dooghyssagh|}}}|</div>}}}}{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 78%; font-weight: normal;">{{{honorific_suffix|}}}</div>}} |{{BASEPAGENAME}}}}}} |image = {{#invoke:InfoboxImage |InfoboxImage |image={{#invoke:Wikidata |claim |property=P18 |value={{{jalloo|}}} |list=false}} |size=300x300px<!-- -->|alt={{{alt|}}} }} |imageclass = {{image class|{{{jalloo}}}}} |imagestyle = padding:4pt; line-height:1.25em; text-align:center; font-size:8pt; | caption = <div style="padding-top:2pt;">{{{kione-heidyl|{{{fo-heidyl|}}}}}}</div> | header1 = {{#if:{{{image|}}}|Fysseree haghydys}} | class3 = nickname | label3 = {{Nowrap|Ennym ruggyree}} | data3 = {{{ennym_ruggyr|}}} | class4 = nickname | label4 = {{Nowrap|Enmyn elley}} | data4 = {{{enmyn_elley|}}} | label5 = Ruggit | data5 = {{br separated entries|{{{date_ruggyr|}}}|{{{boayl_ruggyr|}}}}} | label6 = Bunneydys | data6 = {{{bunneydys|}}} | label7 = Hooar baase | data7 = {{br separated entries|{{{date_baaish|}}}|{{{boayl_baaish|}}}}} | label8 = Shaanraghyn | data8 = {{#invoke:Wikidata | claim | property=P136|formatting = internallink|separator={{·}}|conjunction={{·}}}} | class9 = role | label9 = {{#if:{{{keirdyn|}}}|Keirdyn|Keird(yn)}} | data9 = {{if empty|{{{keirdyn|}}}|{{{keird|}}}}} | class10 = note | label10 = {{#if:{{{greieyn|}}}|Greieyn|Greie(yn)}} | data10 = {{{greieyn|{{{greie|}}}}}} | label11 = Rolley jyskyn | data11 = {{{rolley_jyskyn|}}} | label12 = {{Nowrap|Bleeantyn_obbree}} | data12 = {{{bleeantyn_obbree|}}} | label13 = Lipaidyn | data13 = {{#invoke:Wikidata | claim | property=P264|formatting = internallink|separator={{·}}|value={{{lipaid|}}}|conjunction={{·}}}} | label14 = Oltey lesh | data14 = {{{olteynys_roie|}}} | label15 = Eear-oltey lesh | data15 = {{{aa-olteynys|{{{eear-olteynys|}}}}}} | label16 = Shagh-phossanyn | data16 = {{{shagh-phossanyn|}}} | label17 = Shagh-phossan lesh | data17 = {{{shagh-phossan_lesh|}}} | label18 = <span class="nowrap">Sheshey/sheshaghyn</span> | data18 = {{#ifeq:{{#Property:P26}}|gyn mooad|Gyn poosey|{{#invoke:Wikidata | claim | property=P26|qualifier=P580|qualifier2=P582|formatting = table|df=dmy|rowformat = $0 $1 $2|rowsubformat1=<small>&nbsp;($1 –|rowsubformat2=&nbsp;$2)</small>|tablesort=1|colformat0=internallink}}}} | label19 = <span class="nowrap">Leggad(yn)</span> | data19 = {{#invoke:Wikidata | claim | property=P451|formatting = internallink|separator=<br />|conjunction=<br />}} | header20 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label21 = Olteynyn | data21 = {{{olteynyn_roie|}}} | header22 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label23 = {{Nowrap|Eear-olteynyn}} | data23 = {{{aa-olteynyn|{{{eear-olteynyn|}}}}}} | header30 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}} | label31 = Ynnyd-eggey | data31 = {{#invoke:Wikidata | claim | property=P856|formatting = weblink|value={{{ynnyd-eggey|}}}}} | label40 = <nowiki /> | data41 = {{{module|}}} | data42 = {{{module2|}}} | data43 = {{{module3|}}} }}<!-- Documentation: --><noinclude>{{Documentation}}</noinclude> d5cexace17vcys89v14mzcqe3uq6wbw Ronney:1272 14 34977 387426 386983 2026-08-05T17:31:33Z MacTire02 219 clowan noa 387426 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1207 14 34979 387404 386973 2026-08-05T16:14:20Z MacTire02 219 ronney elley 387404 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1200}} [[Ronney:13oo eash rere blein|07]] [[Ronney:1200yn| 7]] s8a341aa1ulk7ct4fbogzj0eeyt7hff 387418 387404 2026-08-05T16:44:54Z MacTire02 219 clowan noa 387418 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Clowan:Kishtey fys slieau 10 35310 387382 374165 2026-08-05T13:26:48Z MacTire02 219 prowal 387382 wikitext text/x-wiki {{Infobox | bodyclass = vcard | child = {{{child|}}} | subbox = {{{subbox|}}} | above = {{#if:{{{ennym|}}}|{{{ennym}}}|<includeonly>{{PAGENAMEBASE}}</includeonly>}} | aboveclass = fn org | autoheaders = y | abovestyle = background-color: #E7DCC3; | headerstyle = background-color: #E7DCC3; | imagestyle = padding:0.3em 0.2em 0.2em 0.2em; text-align:center; | captionstyle = padding: 0.2em 0em; | bodystyle = width:24.5em; line-height:1.5em; | labelstyle = padding:0.2em 1.0em 0.2em 0.2em; background:transparent; line-height:1.3em; text-align:left; font-size:85%; | datastyle = padding:0.2em; line-height:1.3em; vertical-align:middle; font-size:85%; | subheaderclass= nickname | subheaderstyle= background-color: #E7DCC3; text-align: center; | subheader = {{{ennym_elley|}}} | image = {{#invoke:InfoboxImage |InfoboxImage |image={{#invoke:Wikidata |claim |property=P18 |value={{{jalloo|}}} |list=false}} |size=300x300px |alt={{{alt|}}} }} | caption = <div style="padding-top:2pt; font-size:85%;">{{{fo-heidyl<includeonly>|</includeonly>}}}</div> | {{#if:{{#invoke:WikidataIB|getValue|1=P18|2={{{foto|}}}|name=photo|qid={{{qid|}}}|rank=best|suppressfields={{{suppressfields|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|onlysourced={{{onlysourced|false}}}|maxvals=1|noicon=true}}|data26|data1}} = {{#if:{{{caslys-çheerey|}}} | <div style="padding:0.2em 0.2em {{#if:{{{fo-heidyl_caslys-çheerey|}}}{{{soiaghey|}}}|0.5em|0.2em}} 0.2em;">{{location map|{{{caslys-çheerey}}} | border = infobox | float = center | alt = {{{alt_caslys-çheerey|}}} | default_width = 272 | max_width = 288 | width = {{if empty|{{{lheead_caslys-çheerey|}}}|{{{mooadys_caslys-çheerey|}}} }} | caption = {{#switch:{{{fo-heidyl_caslys-çheerey|}}}|none=|#default={{if empty|{{{fo-heidyl_caslys-çheerey|}}}|{{{soiaghey|}}} }} }} | mark = Red triangle with thick white border.svg | marksize = 16 | relief = {{#ifeq:{{{releef_caslys-çheerey|{{{releef|}}}}}}|0||1}} | label = {{if empty|{{{lipaid|}}}|{{{ennym|}}}}} | position ={{{soiaghey_lipaid|}}} | coordinates = {{if empty|{{{coordnaidyn_reayn|}}}|{{{coordnaidyn|}}}|{{{coordyn|}}}}} }} </div> | {{#if:{{{jalloo_caslys-çheerey|{{{jalloo_caslys-çheerey|}}}}}} |<div style="padding:0.2em 0.2em {{#if:{{{fo-heidyl_caslys-çheerey|}}}{{{soiaghey|}}}|0.5em|0.2em}} 0.2em;">{{#invoke:InfoboxImage|InfoboxImage|image={{{jalloo_caslys-çheerey|{{{jalloo_caslys-çheerey|}}}}}}|size={{if empty|{{{mooadys_caslys-çheerey|}}}|{{{mooadyscaslysçheerey|}}}|{{{lheead_caslys-çheerey|}}}}}|upright={{{caslys-çheerey_jeeragh|}}}|sizedefault=272px|maxsize=288px|alt={{{alt_caslys-çheerey|}}}}}{{#switch:{{{fo-heidyl_caslys-çheerey|}}}|none|=|#default=<div>{{{fo-heidyl_caslys-çheerey}}}</div>}} </div>}} }} | header2 = Boayl&nbsp;s'yrjey | label3 = Beinn | data3 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P2044|2={{{syrjey|}}}|name=highest|qid={{{qid|}}}|qual=P2561|qualsonly=Y|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|noicon=false}}|{{If last display both|,&#32;|{{#invoke:WikidataIB|getValue|1=P2044|2={{{boayl_syrjey|}}}|name=highest_location|qid={{{qid|}}}|qual=P276|qualsonly=Y|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|noicon=false}}}}}} | label4 = [[Mullagh|Yrjid]] | data4 = {{If empty|{{{yrjid|}}}|{{#if:{{{yrjid_m|}}}{{{yrjid_ft|}}}|{{Convinfobox|{{{yrjid_m|}}}|m|{{{yrjid_ft|}}}|ft}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2044|2=|name=elevation|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2044}}}}}}}}{{#if:{{{imraa_yrjid|{{{note_yrjid|}}}}}}|{{{imraa_yrjid|{{{note_yrjid|}}}}}}}}{{If last display both|<br/>|{{#invoke:WikidataIB|getValue|1=P2044|2={{{corys_yrjid|}}}|name=elevation_system|qid={{{qid|}}}|qual=P459|qualsonly=Y|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|maxvals=1|noicon=false}}}} | label5 = [[Yrjid chonastagh]] | data5 = {{If empty|{{{yrjid_chonastagh|}}}|{{#if:{{{yrjid_chonastagh_m|}}}{{{yrjid_chonastagh_ft|}}}|{{Convinfobox|{{{yrjid_chonastagh_m|}}}|m|{{{yrjid_chonastagh_ft|}}}|ft}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2660|2=|name=prominence|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2660}}}}}}}}{{#if:{{{imraa_yrjid_chonastagh|}}}|{{{imraa_yrjid_chonastagh|}}}}} | label6 = [[Yrjid_chonastagh#Moir-yrjid chonastagh|Moir-veinn]] | data6 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P3137|2={{{moir-veinn|}}}|name=parent_peak|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|shortname=true|maxvals=1|noicon=false|replacetext={{#ifeq:{{{fetchwikidata|}}}|ALL||[[Ronney:Leagh Wikidata as feme er scrutaghey ry-hoi Kishtey fys slieau]]}}}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P3137}}}}}} | label7 = [[Unraghey boayl-oaylleeaght|Unraghey]] | data7 = {{If empty|{{{unraghey|}}}|{{#if:{{{unraghey_km|}}}{{{unraghey_mi|}}}|{{Convinfobox|{{{unraghey_km|}}}|km|{{{unraghey_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2659|2=|name=isolation|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|maxvals=1|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2659}}}}}}}}{{If last display both|<br/>to&nbsp;|{{#invoke:WikidataIB|getValue|1=P2659|2={{{moir-unraghey|}}}|name=isolation_parent|qid={{{qid|}}}|qual=P2210|qualsonly=Y|fetchwikidata={{{fetchwikidata|ALL}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|maxvals=1|noicon=false}}}}{{#if:{{{imraa_unraghey|}}}|{{{imraa_unraghey|}}}}} | class8 = category | label8 = [[Rollaghyn sleityn|Rolley]] | data8 = {{If first display both|{{#invoke:WikidataIB|getValue|1=P361|2={{{rolley|}}}|name=listing|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|qshortname=true|sorted=true|noicon=false|list=ubl|replacetext={{#ifeq:{{{fetchwikidata|}}}|ALL||[[Ronney:Leagh Wikidata as feme er scrutaghey ry-hoi Kishtey fys slieau]]}}}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P3137}}}}}} | label9 = [[Corys co-ordnaidyn çheer-oaylleeagh|Co-ordnaidyn]] | data9 = {{#if:{{{coordnaidyn|}}}{{{coordyn|}}}|{{#invoke:Coordinates|coordinsert|{{if empty|{{{coordnaidyn|}}}|{{{coordyn|}}}}}|type:mountain|{{#if:{{{coordnaidyn_reayn|}}}||{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}{{{lheead_km|}}}{{{lheead_mi|}}}{{{eaghtyr_mi2|}}}{{{eaghtyr_km2|}}}|dim:{{Infobox dim|length_km={{{lhiurid_km|}}}|length_mi={{{lhiurid_mi|}}}|width_km={{{lheead_km|}}}|width_mi={{{lheead_mi|}}}|area_mi2={{{eaghtyr_mi2|}}}|area_km2={{{eaghtyr_km2|}}}}}}}}}}}<!-- -->{{if empty|{{{note_coordnaidyn|}}}|{{{imraa_coordnaidyn|}}}|{{{imraa_coordyn|}}} }} }} | header10 = Towshanyn | label11 = Lhiurid | data11 = {{If first display both|{{If empty|{{{lhiurid|}}}|{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}|{{Convinfobox|{{{lhiurid_km|}}}|km|{{{lhiurid_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2043|2=|name=length|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2043}}}}}}}}|{{If last display both|&#32;|{{If empty|{{{troa_lhiurid|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2043|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q36477|nomatch=}}|Q36477|(NS)|}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2043|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q34027|nomatch=}}|Q34027|(EW)|}}}}}}{{If last display both||{{{imraa_lhiurid|{{{note_lhiurid|}}}}}}}}}} | label12 = Lheead | data12 = {{If first display both|{{If empty|{{{lheead|}}}|{{#if:{{{lheead_km|}}}{{{lheead_mi|}}}|{{Convinfobox|{{{lheead_km|}}}|km|{{{lheead_mi|}}}|mi}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2049|2=|name=width|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2049}}}}}}}}|{{If last display both|&#32;|{{If empty|{{{troa_lheead|}}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2049|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q36477|nomatch=}}|Q36477|(NS)|}}|{{#ifeq:{{#invoke:String|match|s={{#invoke:WikidataIB|getQualifierIDs|1=P2049|2=|qid={{{qid|}}}|fwd=ALL|osd=n|qlist=P7469}}|pattern=Q34027|nomatch=}}|Q34027|(EW)|}}}}}}{{If last display both||{{{imraa_lheead|{{{note_lheead|}}}}}}}}}} | label13 = Eaghtyr | data13 = {{If first display both|{{If empty|{{{eaghtyr|}}}|{{#if:{{{eaghtyr_km2|}}}{{{eaghtyr_mi2|}}}|{{Convinfobox|{{{eaghtyr_km2|}}}|km2|{{{eaghtyr_mi2|}}}|mi2}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2046|2=|name=area|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2046}}}}}}}}|{{If last display both||{{{imraa_eaghtyr|{{{note_eaghtyr|}}}}}}}}}} | label14 = Towse-lhieenee | data14 = {{If first display both|{{If empty|{{{towse-lhieenee|}}}|{{#if:{{{towse-lhieenee_km3|}}}{{{towse-lhieenee_mi3|}}}|{{Convinfobox|{{{towse-lhieenee_km3|}}}|km3|{{{towse-lhieenee_mi3|}}}|mi3}}|}}|{{If first display both|{{#invoke:WikidataIB|getValue|1=P2234|2=|name=volume|qid={{{qid|}}}|fetchwikidata={{{fetchwikidata|NONE}}}|suppressfields={{{suppressfields|}}}|onlysourced=true|unitabbr=true|convert=true|noicon=false}}|{{#ifeq:{{{refs|no}}}|yes|{{Wikidata|references|normal+|{{{qid|}}}|P2234}}}}}}}}|{{If last display both||{{{imraa_towse-lhieenee|{{{note_towse-lhieenee|}}}}}}}}}} | header15 = Enmys | label16 = [[Bun-ocklaght]] | data16 = {{{bun-ocklaght|}}} | class17 = nickname | label17 = [[Far-ennym]] | data17 = {{{far-ennym|}}} | class18 = nickname | label18 = Ennym dooghyssagh | data18 = {{{ennym_dooghyssagh|}}} | label19 = Çhyndaays Gaelg | data19 = {{{çhyndaays|}}} | label20 = Çhengey yn ennym | data20 = {{#if:{{{ennym_dooghyssagh|}}}||<!-- -->{{#if:{{{çhengey|}}}|{{{çhengey}}}|<!-- -->{{#if:{{{çhengey_ennym_dooghyssagh|}}}|{{Ennym ISO 639|{{{çhengey_ennym_dooghyssagh|}}}|link=yes}}}}}}}} | label21 = Fockley magh | data21 = {{{fockley_magh|}}} | label22 = Eaghtyrys meenaghey | data22 = {{{eaghtyrys|}}} | header25 = Çheer-oaylleeaght <!-- data26 reserved for map when photo is present --> | class27 = label | label27 = Soiaghey | data27 = {{#if:{{{fo-heidyl_caslys-çheerey|}}}|{{{soiaghey|}}}|{{#if:{{{foto|}}}|{{#if:{{{caslys-çheerey|}}}||{{{soiaghey|}}} }}|{{{soiaghey|}}} }} }} | class28 = label | label28 = {{If empty|{{{sorçh_çheer|}}}|{{#if:{{{çheer1|}}}|Çheeraghyn}}|Çheer}} | data28 = {{enum|1={{{çheer|}}}|2={{{çheer1|}}}|3={{{çheer2|}}}|4={{{çheer3|}}}|5={{{çheer4|}}}|6={{{çheer5|}}}|7={{{çheer6|}}}|8={{{çheer7|}}}|9={{{çheer8|}}}|10={{{çheer9|}}}|11={{{çheer10|}}}|12={{{çheer11|}}}|13={{{çheer12|}}}|14={{{çheer13|}}}|15={{{çheer14|}}}|16={{{çheer15|}}}|17={{{çheer16|}}}|18={{{çheer17|}}}|19={{{çheer18|}}}}} | class29 = label | label29 = {{If empty|{{{sorçh_aarheynn1|}}}|{{{sorçh_steat|}}}|{{#if:{{{steat1|}}}|Steatyn}}|Steat}} | data29 = {{if empty|{{{aarheynn1|}}}|{{enum|1={{{steat|}}}|2={{{steat1|}}}|3={{{steat2|}}}|4={{{steat3|}}}|5={{{steat4|}}}|6={{{steat5|}}}|7={{{steat6|}}}|8={{{steat7|}}}|9={{{steat8|}}}|10={{{steat9|}}}|11={{{steat10|}}}|12={{{steat11|}}}|13={{{steat12|}}}|14={{{steat13|}}}|15={{{steat14|}}}|16={{{steat15|}}}|17={{{steat16|}}}|18={{{steat17|}}}|19={{{steat18|}}}}}}} | class30 = label | label30 = {{If empty|{{{sorçh_aarheynn2|}}}|{{{sorçh_ard|}}}|{{#if:{{{ard1|}}}|Ardjyn}}|Ard}} | data30 = {{if empty|{{{aarheynn2|}}}|{{enum|1={{{ard|}}}|2={{{ard1|}}}|3={{{ard2|}}}|4={{{ard3|}}}|5={{{ard4|}}}|6={{{ard5|}}}|7={{{ard6|}}}|8={{{ard7|}}}|9={{{ard8|}}}|10={{{ard9|}}}|11={{{ard10|}}}|12={{{ard11|}}}|13={{{ard12|}}}|14={{{ard13|}}}|15={{{ard14|}}}|16={{{ard15|}}}|17={{{ard16|}}}|18={{{ard17|}}}|19={{{ard18|}}}|20={{{ard19|}}}|21={{{ard20|}}}|22={{{ard21|}}}|23={{{ard22|}}}|24={{{ard23|}}}}}}} | class31 = label | label31 = {{If empty|{{{sorçh_aarheynn3|}}}|{{{sorçh_slyst|}}}|{{#if:{{{slyst1|}}}|Slystyn}}|Slyst}} | data31 = {{if empty|{{{aarheynn3|}}}|{{enum|1={{{slyst|}}}|2={{{slyst1|}}}|3={{{slyst2|}}}|4={{{slyst3|}}}|5={{{slyst4|}}}|6={{{slyst5|}}}|7={{{slyst6|}}}|8={{{slyst7|}}}|9={{{slyst8|}}}|10={{{slyst9|}}}|11={{{slyst10|}}}|12={{{slyst11|}}}|13={{{slyst12|}}}|14={{{slyst13|}}}|15={{{slyst14|}}}|16={{{slyst15|}}}|17={{{slyst16|}}}|18={{{slyst17|}}}|19={{{slyst18|}}}}}}} | label32 = {{If empty|{{{sorçh_aarheynn4|}}}|{{{sorçh_ayrn|}}}|{{#if:{{{ayrn1|}}}|Aarheynnyn}}|Aarheynn}} | data32 = {{if empty|{{{aarheynn4|}}}|{{enum|1={{{ayrn|}}}|2={{{ayrn1|}}}|3={{{ayrn2|}}}|4={{{ayrn3|}}}|5={{{ayrn4|}}}|6={{{ayrn5|}}}|7={{{ayrn6|}}}|8={{{ayrn7|}}}|9={{{ayrn8|}}}|10={{{ayrn9|}}}|11={{{ayrn10|}}}|12={{{ayrn11|}}}|13={{{ayrn12|}}}|14={{{ayrn13|}}}|15={{{ayrn14|}}}|16={{{ayrn15|}}}|17={{{ayrn16|}}}|18={{{ayrn17|}}}|19={{{ayrn18|}}}|20={{{ayrn19|}}}}}}} | label33 = {{If empty|{{{sorçh_balley|}}}|{{#if:{{{balley1|}}}|Baljyn}}|Balley}} | data33 = {{enum|1={{{balley|}}}|2={{{balley1|}}}|3={{{balley2|}}}|4={{{balley3|}}}|5={{{balley4|}}}|6={{{balley5|}}}|7={{{balley6|}}}|8={{{balley7|}}}|9={{{balley8|}}}|10={{{balley9|}}}|11={{{balley10|}}}|12={{{balley11|}}}|13={{{balley12|}}}|14={{{balley13|}}}|15={{{balley14|}}}|16={{{balley15|}}}|17={{{balley16|}}}|18={{{balley17|}}}|19={{{balley18|}}} }} | label34 = [[Corys co-ordnaidyn çheer-oaylleeagh|Co-ordnaidyn y reayn]] | data34 = {{#if:{{{coordnaidyn_reayn|}}}{{{coordyn_reayn|}}}|{{#invoke:Coordinates|coordinsert|{{if empty|{{{coordnaidyn_reayn|}}}|{{{coordyn_reayn|}}}}}|type:mountain|{{#if:{{{lhiurid_km|}}}{{{lhiurid_mi|}}}{{{lheead_km|}}}{{{lheead_mi|}}}{{{eaghtyr_mi2|}}}{{{eaghtyr_km2|}}}|dim:{{Infobox dim|length_km={{{lhiurid_km|}}}|length_mi={{{lhiurid_mi|}}}|width_km={{{lheead_km|}}}|width_mi={{{lheead_mi|}}}|area_mi2={{{eaghtyr_mi2|}}}|area_km2={{{eaghtyr_km2|}}}}}}}}}}}{{#if:{{{imraa_coordnaidyn_reayn|{{{note_coordnaidyn_reayn|}}}}}}|{{{imraa_coordnaidyn_reayn|{{{note+coordnaidyn_reayn|}}}}}}}} | class35 = category | label35 = [[Slieau-reayn|{{nowrap|Moir-reayn}}]] | data35 = {{{moir|{{{reayn|}}}}}} | label36 = Çhemmal rish | data36 = {{if empty|{{{çhemmal_rish|}}}|{{enum|1={{{çhemmal|}}}|2={{{çhemmal1|}}}|3={{{çhemmal2|}}}|4={{{çhemmal3|}}}|5={{{çhemmal4|}}}|6={{{çhemmal5|}}}|7={{{çhemmal6|}}}|8={{{çhemmal7|}}}|9={{{çhemmal8|}}}}}}} | label37 = [[Ordnance Survey National Grid|Ingagh OS]] | data37 = {{#if:{{{ingagh_ogheragh_RU|}}}|{{gbm4ibx|{{{ingagh_ogheragh_RU|}}}|name={{{name|{{PAGENAMEBASE}}}}} }}{{{imraa_ingagh_ogheragh_RU|{{{note_ingagh_ogheragh_RU|}}}}}}}} | label38 = [[Corys ingagh ogheragh Nerin|Ingagh OSI/OSNI]] | data38 = {{#if:{{{ingagh_ogheragh_Nerin|}}}|{{iem4ibx|{{{ingagh_ogheragh_Nerin|}}}|name={{{name|{{PAGENAMEBASE}}}}} }}{{{imraa_ingagh_ogheragh_Nerin|{{{note_ingagh_ogheragh_Nerin|}}}}}}}} | label39 = [[Caslys-çheerey boayl-oaylleeagh]] | data39 = {{#if:{{{topo_maker|}}}|{{{topo_maker}}}&nbsp;}}{{if empty|{{{topo|}}}|{{{topo_map|}}} }} | label40 = [[Bea-oam]] | data40 = {{{bea-oam|}}} | header42 = Creg-oaylleeaght | label43 = [[Crooaght sleityn|Crooit liorish]] | data43 = {{{crooit_liorish|}}} | label44 = [[Orogiennaghtyn]] | data44 = {{{orogiennaghtyn|}}} | label45 = [[Scaailley-traa creg-oaylleeagh|Eash ny creggyn]] | data45 = {{if empty|{{{eash|}}}|{{enum|{{{earish|}}}|{{{earish1|}}}|{{{earish2|}}}|{{{earish3|}}}|{{{earish4|}}}|{{{earish5|}}}}}}} | label46 = [[Rolley sorçhyn slieau|Sorçh slieau]] | data46 = {{{sorçh_slieau|{{{sorçh|}}}}}} | label47 = [[Rolley sorçhyn creggey|Sorçh creggey]] | data47 = {{enum|{{{creg-oaylleeaght|}}}|{{{creg-oaylleeaght1|}}}|{{{creg-oaylleeaght2|}}}|{{{creg-oaylleeaght3|}}}|{{{creg-oaylleeaght4|}}}|{{{creg-oaylleeaght5|}}}|{{{creg|}}}}} | label48 = {{#if:{{{vard_volcaanagh|}}}|Ard&nbsp;volcaanagh | {{#if:{{{arc_volcaanagh|}}}|[[Arc volcaanagh]] | {{#if:{{{cryss_volcaanagh|}}}|[[Cryss volcaanagh]] | {{#if:{{{magher_volcaanagh|}}}|[[Magher volcaanagh]] | {{#if:{{{arc/cryss_volcaanagh|}}}|[[Arc volcaanagh|Arc]]/[[cryss volcaanagh]]}}}}}}}}}} | data48 = {{If empty|{{{ard_volcaanagh|}}}|{{{ard_volcaanagh|}}}|{{{cryss_volcaanagh|}}}|{{{magher_volcaanagh|}}}|{{{arc/cryss_volcaanagh|}}}}} | label49 = [[Sorçhyn dy vruightaghyn volcaanagh|Bruightey jerrinagh]] | data49 = {{{bruightey_jerrinagh|}}} | header50 = Drappal | label51 = [[Kied drappal]] | data51 = {{{kied_drappal|}}} | label52 = [[Bollagh cadjin|{{nowrap|Bollagh s'assey}}]] | data52 = {{{bollagh_sassey|}}} | label53 = [[Bollagh cadjin]] | data53 = {{{bollagh_cadjin|}}} | label54 = Roshtynys | data54 = {{{roshtynys|}}} | data56 = {{{embedded|}}} | data57 = {{{embedded1|}}} | data58 = {{{module|}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox mountain with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox mountain]] with unknown parameter "_VALUE_"|ignoreblank=y| roshtynys | eash | eaghtyr | eaghtyr_km2 | eaghtyr_mi2 | note_eaghtyr | imraa_eaghtyr | eaghtyrys | bea-oam | çhemmal | çhemmal1 | çhemmal2 | çhemmal3 | çhemmal4 | çhemmal5 | çhemmal6 | çhemmal7 | çhemmal8 | çhemmal_rish | child | balley | sorçh_balley | balley1 | balley10 | balley11 | balley12 | balley13 | balley14 | balley15 | balley16 | balley17 | balley18 | balley2 | balley3 | balley4 | balley5 | balley6 | balley7 | balley8 | balley9 | embedded1 | coordnaidyn | note_coordnaidyn | imraa_coordnaidyn | coordyn | imraa_coordyn | çheer | sorçh_çheer | çheer1 | çheer10 | çheer11 | çheer12 | çheer13 | çheer14 | çheer15 | çheer16 | çheer17 | çheer18 | çheer2 | çheer3 | çheer4 | çheer5 | çheer6 | çheer7 | çheer8 | çheer9 | slyst | sorçh_slyst | slyst1 | slyst10 | slyst11 | slyst12 | slyst13 | slyst14 | slyst15 | slyst16 | slyst17 | slyst18 | slyst2 | slyst3 | slyst4 | slyst5 | slyst6 | slyst7 | slyst8 | slyst9 | bollagh_sassey | yrjid | yrjid_ft | yrjid_m | note_yrjid | imraa_yrjid | corys_yrjid | embedded | bun-ocklaght | fetchwikidata | kied_drappal | crooit_liorish | creg-oaylleeaght | creg-oaylleeaght1 | creg-oaylleeaght2 | creg-oaylleeaght3 | creg-oaylleeaght4 | creg-oaylleeaght5 | ingagh_ogheragh_Nerin | note_ingagh_ogheragh_Nerin | imraa_ingagh_ogheragh_Nerin | ingagh_ogheragh_RU | note_ingagh_ogheragh_RU | imraa_ingagh_ogheragh_RU | syrjey | boayl_syrjey | jalloo_caslys-çheerey | unraghey | unraghey_km | unraghey_mi | moir-unraghey | imraa_unraghey | lipaid | soiaghey_lipaid | çhengey | bruightey_jerrinagh | lhiurid | lhiurid_km | lhiurid_mi | note_lhiurid | troa_lhiurid | imraa_lhiurid | jalloo | fo-heidyl | rolley | soiaghey | caslys-çheerey | alt_caslys-çheerey | fo-heidyl_caslys-çheerey | jalloo_caslys-çheerey | releef_caslys-çheerey | mooadys_caslys-çheerey | caslys-çheerey_jeeragh | lheead_caslys-çheerey | mooadyscaslysçheerey | module | sorçh_slieau | ennym | ennym_dooghyssagh | çhengey_ennym_dooghyssagh | far-ennym | nocat_wdimage | bollagh_cadjin | orogiennaghtyn | ennym_elley | moir | moir-veinn | ayrn | sorçh_ayrn | ayrn1 | ayrn10 | ayrn11 | ayrn12 | ayrn13 | ayrn14 | ayrn15 | ayrn16 | ayrn17 | ayrn18 | ayrn19 | ayrn2 | ayrn3 | ayrn4 | ayrn5 | ayrn6 | ayrn7 | ayrn8 | ayrn9 | earish | earish1 | earish2 | earish3 | earish4 | earish5 | foto | alt_foto | fo-heidyl_foto | mooadys_foto | foto_jeeragh | lheead_foto | yrjid_chonastagh | yrjid_chonastagh_ft | yrjid_chonastagh_m | imraa_yrjid_chonastagh | fockley_magh | qid | reayn | coordnaidyn_reayn | note_coordnaidyn_reayn | imraa_coordnaidyn_reayn | coordyn_reayn | ard | sorçh_ard | ard1 | ard10 | ard11 | ard12 | ard13 | ard14 | ard15 | ard16 | ard17 | ard18 | ard19 | ard2 | ard20 | ard21 | ard22 | ard23 | ard3 | ard4 | ard5 | ard6 | ard7 | ard8 | ard9 | releef | creg | sourcedonly | steat | sorçh_steat | steat1 | steat10 | steat11 | steat12 | steat13 | steat14 | steat15 | steat16 | steat17 | steat18 | steat2 | steat3 | steat4 | steat5 | steat6 | steat7 | steat8 | steat9 | aarheynn1 | sorçh_aarheynn1 | aarheynn2 | sorçh_aarheynn2 | aarheynn3 | sorçh_aarheynn3 | aarheynn4 | sorçh_aarheynn4 | suppressfields | topo | topo_maker | topo_map | çhyndaays | sorçh | arc_volcaanagh | arc/cryss_volcaanagh | cryss_volcaanagh | magher_volcaanagh | ard_volcaanagh | towse_lhieenee | towse_lhieenee_km3 | towse_lhieenee_mi3 | note_towse_lhieenee | imraa_towse_lhieenee | lheead | lheead_km | lheead_mi | note_lheead | troa_lheead| imraa_lheead }}{{main other|{{#if:{{{ard|}}}|{{#ifeq:{{#invoke:string|replace|{{{ard}}}|^[A-Z0-9/\-]*$|MATCH|plain=false}}|MATCH|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadaryn gyn enney|ρ]] }}}} }}{{Wikidata image |1={{{foto|}}} |2={{{nocat_wdimage|{{#ifeq:ALL|{{uc:{{{fetchwikidata|}}}}}|1|}}}}} }}{{main other| {{#if:{{{çhengey|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadar çhengey|{{#invoke:string|replace|{{{çhengey}}}|[^A-Za-z0-9]||plain=false}} ]]}} }}{{#if:{{#invoke:string|match|{{{sorçh_çheer|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{çheer|}}}| and |ignore_errors=true}}||{{#if:{{{çheer|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|A]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|A]]}}}}| }}{{#if:{{#invoke:string|match|{{{sorçh_balley|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{balley|}}}| and |ignore_errors=true}}||{{#if:{{{balley|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|B]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|B]]}}}}| }}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn1|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn1|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn1|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|C]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|C]]}}}}| }}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn2|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn2|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn2|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|D]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|D]]}}}}| }}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn3|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn3|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn3|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|E]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|E]]}}}}| }}{{#if:{{#invoke:string|match|{{{sorçh_aarheynn4|}}}|s$|ignore_errors=true}}|{{#if:{{#invoke:string|match|{{{aarheynn4|}}}| and |ignore_errors=true}}||{{#if:{{{aarheynn4|}}}|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey neuchiart s'cummyssagh|F]]|[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh lipaidyn yl-rey as gyn fysseree|F]]}}}}| }}{{#invoke:Check for unknown parameters|check|unknown=[[Ronney:Duillagyn gymmydey kishtey fys slieau lesh parameadaryn currit noi|_VALUE_{{PAGENAME}}]]|preview=Duillag gymmydey [[Clowan:Kishtey fys slieau]] lesh y pharameadar "_VALUE_" ta currit noi|ignoreblank=y| roshtynys | eash | eaghtyr | eaghtyr_km2 | eaghtyr_mi2 | imraa_eaghtyr | eaghtyrys | bea-oam | çhemmal | çhemmal_rish | child | embedded1 | coordnaidyn | imraa_coordnaidyn | coordyn | imraa_coordyn | çheer | sorçh_çheer | slyst | sorçh_slyst | bollagh_sassey | yrjid | yrjid_ft | yrjid_m | imraa_yrjid | corys_yrjid | embedded | bun-ocklaght | fetchwikidata | kied_drappal | crooit_liorish | creg-oaylleeaght | ingagh_ogheragh_Nerin | imraa_ingagh_ogheragh_Nerin | ingagh_ogheragh_RU | imraa_ingagh_ogheragh_UK | syrjey | boayl_syrjey | unraghey | unraghey_km | unraghey_mi | moir-unraghey | imraa_unraghey | lipaid | soiaghey_lipaid | çhengey | bruightey_jerrinagh | lhiurid | lhiurid_km | lhiurid_mi | troa_lhiurid | imraa_lhiurid | jalloo| fo-heidyl | rolley | soiaghey | caslys-çheerey | alt_caslys-çheerey | fo-heidyl_caslys-çheerey | jalloo_caslys-çheerey | releef_caslys-çheerey | mooadys_caslys-çheerey | caslys-çheerey_jeeragh | lheead_caslys-çheerey | mooadyscaslysçheerey | module | sorçh_slieau | ennym | ennym_dooghyssagh | çhengey_ennym_dooghyssagh | far-ennym | nocat_wdimage | bollagh_cadjin | orogiennaghtyn | ennym_elley | moir | moir-veinn | ayrn | sorçh_ayrn | earish | foto | alt_foto | fo-heidyl_foto | mooadys_foto | foto_jeeragh | yrjid_chonastagh | yrjid_chonastagh_ft | yrjid_chonastagh_m | imraa_yrjid_chonastagh | fockley_magh | qid | reayn | coordnaidyn_reayn | imraa_coordnaidyn_reayn | coordyn_reayn | ard | sorçh_ard | releef | creg | balley | sorçh_balley | sourcedonly | steat | sorçh_steat | aarheynn1 | sorçh_aarheynn1 | aarheynn2 | sorçh_aarheynn2 | aarheynn3 | sorçh_aarheynn3 | aarheynn4 | sorçh_aarheynn4 | suppressfields | topo | topo_maker | topo_map | çhyndaays | sorçh | arc_volcaanagh | arc/cryss_volcaanagh | cryss_volcaanagh | magher_volcaanagh | ard_volcaanagh | towse_lhieenee | towse_lhieenee_km3 | towse_lhieenee_mi3 | imraa_towse_lhieenee | lheead | lheead_km | lheead_mi | troa_lheead | imraa_lheead }}<noinclude> {{Documentation}} </noinclude> af9uoyuku76bds4q2gttj160wp5rggr Ronney:1511 14 35512 387979 342414 2026-08-06T00:16:23Z MacTire02 219 clowan noa 387979 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:675 14 35681 387471 342915 2026-08-05T17:42:55Z MacTire02 219 clowan noa 387471 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1996 14 35702 387385 371765 2026-08-05T13:51:28Z MacTire02 219 ++ 387385 wikitext text/x-wiki {{Category series navigation}} [[Ronney:Bunneeaghtyn 'sy vlein 1996 rere çheer|Mannin]] [[Ronney:Bunneeaghtyn ayns Mannin ayns ny 1990yn| 6]] [[Ronney:Bunneeaghtyn ayns Mannin rere blein|1996]] [[Ronney:Mannin 'sy vlein 1996]] [[Ronney:Bunneeaghtyn ayns croghaneyn y Reeriaght Unnaneysit 'sy vlein 1996|Mannin]] [[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1996|Mannin]] i9rynu3f1l3o023473dk9s89xjdcxie Ronney:Mannin 'sy vlein 1996 14 35708 387387 371777 2026-08-05T13:53:45Z MacTire02 219 ronney elley 387387 wikitext text/x-wiki {{Category series navigation}} [[Ronney:1996 rere çheer|Mannin]] [[Ronney:Mannin 'sy 20oo eash rere blein|96]] [[Ronney:Mannin ayns ny 1990yn| 6]] [[Ronney:Yn Oarpey 'sy vlein 1996|Mannin]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit 'sy vlein 1996|Mannin]] n8xap4jkcuwss0so2or7j9i6joydegk Ronney:21d eash rere çheer as blein 14 37646 388065 380573 2026-08-06T01:00:17Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 21d eash rere çheer]] to [[Ronney:21d eash rere çheer as blein]] without leaving a redirect 380573 wikitext text/x-wiki {{moir-ronney}} {{category series navigation}} {{Commons category|21st century by country by year|Bleeantyn y 21d eash rere çheer}} {{CategoryTOC}} [[Ronney:Bleeantyn rere çheer|21]] [[Ronney:21d eash rere çheer| Bleeantyn]] [[Ronney:21d eash rere blein| Cheer]] n33nompzmdoqn9xyhusgua99osmz5kv Ronney:Jeihaghtyn rere çheer 14 37648 388143 349938 2026-08-06T02:08:30Z MacTire02 219 catsort 388143 wikitext text/x-wiki {{moir-ronney}} {{Commons category|Decades by country|Jeihaghtyn rere çheer}} {{see also|Ronney:Bleeantyn rere çheer|Ronney:Eashyn rere çheer}} {{CategoryTOC}} [[Ronney:Shennaghys rere çheer as earish| 2]] [[Ronney:Jeihaghtyn| Cheer]] [[Ronney:Jeihaghtyn rere mooar-rheynn|.Cheer]] k00ig3mpzsoaw5shz6piwh58dl5tna7 Ronney:2000yn rere çheer 14 37676 388082 380568 2026-08-06T01:17:36Z MacTire02 219 ronney elley 388082 wikitext text/x-wiki {{category series navigation}} {{Commons category|2000s by country|2000yn rere çheer}} [[Ronney:2000yn| Cheer]] [[Ronney:21d eash rere çheer as jeihaght]] [[Ronney:Shennaghys co-emshiragh rere çheer]] c1xdlemb6j9pxn518mwc83mgxhqskpx 388085 388082 2026-08-06T01:19:42Z MacTire02 219 ++ 388085 wikitext text/x-wiki {{category series navigation}} {{Commons category|2000s by country|2000yn rere çheer}} [[Ronney:2000yn| Cheer]] [[Ronney:21d eash rere çheer as jeihaght| 00]] [[Ronney:Shennaghys co-emshiragh rere çheer]] lgt9gwzo5rjysxj4y0rohoappm0qkz3 Ronney:19oo eash rere çheer as blein 14 37708 388057 382555 2026-08-06T00:52:40Z MacTire02 219 ronney elley 388057 wikitext text/x-wiki {{category series navigation}} {{CategoryTOC}} [[Ronney:Bleeantyn rere çheer|19]] [[Ronney:19oo eash rere çheer|/Bleeantyn]] [[Ronney:19oo eash rere blein| Cheer]] ovhf4fnw4tul6205ejck0b3avbpapua 388059 388057 2026-08-06T00:55:44Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash rere çheer]] to [[Ronney:19oo eash rere çheer as blein]] without leaving a redirect 388057 wikitext text/x-wiki {{category series navigation}} {{CategoryTOC}} [[Ronney:Bleeantyn rere çheer|19]] [[Ronney:19oo eash rere çheer|/Bleeantyn]] [[Ronney:19oo eash rere blein| Cheer]] ovhf4fnw4tul6205ejck0b3avbpapua Ronney:19oo eash rere blein 14 37709 388056 381418 2026-08-06T00:52:18Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash]] to [[Ronney:19oo eash rere blein]] without leaving a redirect: aght 381418 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|19]] [[Ronney:19oo eash]] 56uor0wytky2igp4hj3y9hyzo3z08ed Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash rere blein 14 37716 388069 380703 2026-08-06T01:03:09Z MacTire02 219 ronney elley 388069 wikitext text/x-wiki {{category series navigation}} {{DEFAULTSORT:Reeriaght Unnaneysit}} [[Ronney:21d eash 'sy Reeriaght Unnaneysit| Blein]] [[Ronney:Yn Reeriaght Unnaneysit rere blein| 21]] [[Ronney:21d eash rere çheer as blein]] [[Ronney:Yn Oarpey 'sy 21d eash rere blein]] snsv9fno17x9k201gz43sx0h6di83jt 388070 388069 2026-08-06T01:03:52Z MacTire02 219 ronney elley 388070 wikitext text/x-wiki {{category series navigation}} {{DEFAULTSORT:Reeriaght Unnaneysit}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| Blein]] [[Ronney:Yn Reeriaght Unnaneysit rere blein| 21]] [[Ronney:21d eash rere çheer as blein]] [[Ronney:Yn Oarpey 'sy 21d eash rere blein]] lhwigasb930wru2p7ei83faqekw354i Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein 14 37717 388062 380664 2026-08-06T00:57:55Z MacTire02 219 ronney elley 388062 wikitext text/x-wiki {{category series navigation}} {{DEFAULTSORT:Reeriaght Unnaneysit}} [[Ronney:19oo eash 'sy Reeriaght Unnaneysit| Blein]] [[Ronney:Yn Reeriaght Unnaneysit rere blein| 19]] [[Ronney:19oo eash rere çheer as blein]] [[Ronney:Yn Oarpey 'sy 19oo eash rere blein]] cebb3a1203wadhdzsc6eah8yvrcn6l3 Ronney:20oo eash rere çheer as blein 14 37729 387536 380484 2026-08-05T18:58:48Z MacTire02 219 ronney elley 387536 wikitext text/x-wiki {{category series navigation}} {{CategoryTOC}} [[Ronney:Bleeantyn rere çheer|20]] [[Ronney:20oo eash rere çheer| Blein]] [[Ronney:20oo eash rere blein|-]] c4nazqejhhisr0ml9uzpgdi7cdpqiyy 388064 387536 2026-08-06T00:59:09Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 20oo eash rere çheer]] to [[Ronney:20oo eash rere çheer as blein]] without leaving a redirect 387536 wikitext text/x-wiki {{category series navigation}} {{CategoryTOC}} [[Ronney:Bleeantyn rere çheer|20]] [[Ronney:20oo eash rere çheer| Blein]] [[Ronney:20oo eash rere blein|-]] c4nazqejhhisr0ml9uzpgdi7cdpqiyy Ronney:20oo eash rere blein 14 37730 387519 381419 2026-08-05T18:54:30Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 20oo eash]] to [[Ronney:20oo eash rere blein]] without leaving a redirect: aght 381419 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|20]] [[Ronney:20oo eash]] ert9sewe4afcu2ay044aln5igp7qznc Ronney:1940yn rere çheer 14 37732 388092 380493 2026-08-06T01:21:58Z MacTire02 219 ronney elley 388092 wikitext text/x-wiki {{category series navigation}} {{Commons category|1940s by country|1940yn rere çheer}} [[Ronney:1940yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 40]] ks2autdc1gk9527c3bnrxyt3g10pa3w Ronney:20oo eash rere çheer as jeihaght 14 37733 388077 380439 2026-08-06T01:15:24Z MacTire02 219 ronnaghyn elley 388077 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:21d eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 21]] 3p5dcrtcqxwoxjly52pbladjcvr6voi 388078 388077 2026-08-06T01:15:48Z MacTire02 219 catsort 388078 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:20oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 20]] m4uco9x8pyh9ml2qvdnbc8ogllcu2x1 388090 388078 2026-08-06T01:21:21Z MacTire02 219 MacTire02 moved page [[Ronney:Jeihaghtyn y 20oo eash rere çheer]] to [[Ronney:20oo eash rere çheer as jeihaght]] without leaving a redirect 388078 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:20oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 20]] m4uco9x8pyh9ml2qvdnbc8ogllcu2x1 Ronney:1990yn rere çheer 14 37858 388095 380609 2026-08-06T01:22:47Z MacTire02 219 ronney elley 388095 wikitext text/x-wiki {{category series navigation}} {{Commons category|1990s by country|{{PAGENAME}}}} [[Ronney:1990yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 90]] buapeqv17yegfth4inplc21gh4rqoga Ronney:1980yn rere çheer 14 37859 388096 380646 2026-08-06T01:23:00Z MacTire02 219 ronney elley 388096 wikitext text/x-wiki {{category series navigation}} {{Commons category|1980s by country|1980yn rere çheer}} [[Ronney:1980yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 80]] lb1ks7ugtdou19s45rt5g92t0dwjlxl Ronney:1970yn rere çheer 14 37860 388097 380653 2026-08-06T01:23:17Z MacTire02 219 ronney elley 388097 wikitext text/x-wiki {{category series navigation}} {{Commons category|1970s by country|1970yn rere çheer}} [[Ronney:1970yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 70]] 8b3vvzxg32wezldqcldpc6q7rqh1kkf Ronney:1960yn rere çheer 14 37861 388098 380729 2026-08-06T01:23:30Z MacTire02 219 ronney elley 388098 wikitext text/x-wiki {{category series navigation}} {{Commons category|1960s by country|1960yn rere çheer}} [[Ronney:1960yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 60]] jr85ta2woi13y3dhq71zvxnn5cl2kmy Ronney:1950yn rere çheer 14 37862 388091 380742 2026-08-06T01:21:47Z MacTire02 219 ronney elley 388091 wikitext text/x-wiki {{category series navigation}} {{Commons category|1950s by country|1950yn rere çheer}} [[Ronney:1950yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 50]] cdks792ompvucha3dz74850qve4xwoi Ronney:849 14 38042 387484 350639 2026-08-05T17:45:54Z MacTire02 219 clowan noa 387484 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1542 14 38158 387954 350849 2026-08-06T00:11:25Z MacTire02 219 clowan noa 387954 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1525 14 38318 387969 351246 2026-08-06T00:13:58Z MacTire02 219 clowan noa 387969 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1870yn rere çheer 14 38380 388103 381500 2026-08-06T01:25:51Z MacTire02 219 ronney elley 388103 wikitext text/x-wiki {{category series navigation}} {{Commons category|1870s by country|1870yn rere çheer}} [[Ronney:1870yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 70]] 43sk5ut10x0uq24be5db6ta6k9166fh Ronney:19oo eash rere çheer as jeihaght 14 38381 388079 380678 2026-08-06T01:16:05Z MacTire02 219 ronnaghyn elley 388079 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:19oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 19]] 9buohxof6hxegcr3aibx5bj81jg449o 388099 388079 2026-08-06T01:24:16Z MacTire02 219 MacTire02 moved page [[Ronney:Jeihaghtyn y 19oo eash rere çheer]] to [[Ronney:19oo eash rere çheer as jeihaght]] without leaving a redirect 388079 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:19oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 19]] 9buohxof6hxegcr3aibx5bj81jg449o Ronney:1930yn rere çheer 14 38400 388093 380735 2026-08-06T01:22:17Z MacTire02 219 ronney elley 388093 wikitext text/x-wiki {{category series navigation}} {{Commons category|1930s by country|1930yn rere çheer}} [[Ronney:1930yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 30]] e7jx8k8dkqouuqu78840ulr8fg17smb Ronney:1920yn rere çheer 14 38401 388094 351373 2026-08-06T01:22:34Z MacTire02 219 ronney elley 388094 wikitext text/x-wiki {{Commons category|1920s by country|1920yn rere çheer}} [[Ronney:1920yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 20]] acni1yxc12cni3ogsrq2yz2h17n58b6 Ronney:1910yn rere çheer 14 38402 388088 380471 2026-08-06T01:20:45Z MacTire02 219 ronney elley 388088 wikitext text/x-wiki {{Navseasoncats}} {{Commons category|1910s by country|1910yn rere çheer}} [[Ronney:1910yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 10]] eut8bg3bca5vj12zqwllh1fs4720qsr Ronney:1900yn rere çheer 14 38403 388089 380438 2026-08-06T01:21:01Z MacTire02 219 ronney elley 388089 wikitext text/x-wiki {{Commons category|1900s by country|1900yn rere çheer}} {{category series navigation}} [[Ronney:1900yn|.Cheer]] [[Ronney:20oo eash rere çheer as jeihaght| 00]] erz7souquvy3eh98seu2m7xtfk2mgkh Ronney:1890yn rere çheer 14 38404 388105 380677 2026-08-06T01:26:14Z MacTire02 219 ronney elley 388105 wikitext text/x-wiki {{category series navigation}} {{Commons category|1890s by country|1890yn rere çheer}} [[Ronney:1890yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 90]] 3dkz0j1lbs9gem1nyh8nfovp8yn216q Ronney:1880yn rere çheer 14 38405 388104 380679 2026-08-06T01:26:02Z MacTire02 219 ronney elley 388104 wikitext text/x-wiki {{category series navigation}} {{Commons category|1880s by country|1880yn rere çheer}} [[Ronney:1880yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 80]] 6n4j7pz6z3ugg9blcpgbsvz8sxe8bjy Ronney:1810yn rere çheer 14 38774 388101 380886 2026-08-06T01:25:26Z MacTire02 219 ronney elley 388101 wikitext text/x-wiki {{category series navigation}} {{Commons category|1810s by country|1810yn rere çheer}} [[Ronney:1810yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 10]] i4os9zdggyvmtswf7qzlnwtpg95iek2 Ronney:1800yn rere çheer 14 38780 388100 380885 2026-08-06T01:25:13Z MacTire02 219 ronney elley 388100 wikitext text/x-wiki {{category series navigation}} {{Commons category|1800s by country|1800yn rere çheer}} [[Ronney:1800yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 00]] 0sz0qodjt8z7sb0z144l4ivv6kng8yp Ronney:2025 14 40518 388020 358237 2026-08-06T00:24:01Z MacTire02 219 clowan noa 388020 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:751 14 40568 387477 358391 2026-08-05T17:44:16Z MacTire02 219 clowan noa 387477 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1278 14 40611 387424 386985 2026-08-05T17:31:14Z MacTire02 219 clowan noa 387424 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1204 14 41066 387403 386972 2026-08-05T16:14:08Z MacTire02 219 ronney elley 387403 wikitext text/x-wiki {{catmore}} {{Commonscat}} {{StiuragRonneyBleeantyn | jeihaght = 1200}} [[Ronney:13oo eash rere blein|04]] [[Ronney:1200yn| 4]] a2q4518q2yun46j1fdbjyldfrbheaw9 387417 387403 2026-08-05T16:31:42Z MacTire02 219 clowan noa 387417 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Clowan:Ronney blein rere çheer 10 41118 388058 367480 2026-08-06T00:54:32Z MacTire02 219 ronney elley 388058 wikitext text/x-wiki <noinclude>{{Distinguish|Clowan:Year in country category}}</noinclude><includeonly><!-- # Link to Wikimedia Commons category of the same name -->{{commonscat|{{Title year}} by country|{{Title year}} rere çheer}}<!-- # The first step is to check whether this is a category page -->{{Category other<!-- -->|<!-- ############### It is a category ############################### # So check that it matches the required format: "YYYY rere çheer" -->{{#ifeq: {{#invoke:String|match|s={{PAGENAME}}|pattern=^%d+ rere çheer$|start=1|match=1|plain=false|nomatch=%%nomatch%%}}|%%nomatch%%<!-- -->|<!-- # Doesn't match -->{{Error|Lhisagh [[Clowan:Ronney blein rere çheer]] ve ymmydit er duillagyn ronney raad ta enmys y ronney 'sy chummey "Çheer 'sy vlein YYYY", raad she blein 4 earrooyn eh YYYY}}<!-- -->[[Ronney:Marranyssyn er ny ve soilshit lesh clowanyn kione ronney elley]]<!-- -->|<!-- ############### We have a valid category ############################### #OUTDENT# ########################################################## #### BEGIN SECTION WHICH ACTUALLY BUILDS THE CATEGORY #### -->{{Category explanation|yn vlein '''[[{{Title year}}]]''' rere çheer}} {{Category series navigation|skip-gaps=yes}} {{Category see also if exists|{{Title year}} rere mooar-rheynn}} [[Ronney:{{Title year}}| Cheer]] [[Ronney:{{DECADE|{{Title year}}}} rere çheer|{{Title year}}]] [[Ronney:{{Century name from title year}} rere çheer as blein| {{Title year}}]] <!-- #### END SECTION WHICH ACTUALLY BUILDS THE CATEGORY #### ########################################################## #RESTORE INDENT# -->}}<!-- -->|<!-- ############### Not a category ############################### -->{{Error|Lhisagh [[Clowan:Ronney blein rere çheer]] ve ymmydit ynrican er duillagyn ronney raad ta'n enmys 'sy chummey "Çheer 'sy vlein YYYY", raad she blein kiare earroo eh YYYY}}<!-- -->[[Ronney:Marranyssyn er ny ve soilshit lesh clowanyn kione ronney elley]]<!-- -->}}</includeonly>{{Automatic category TOC}}<noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, please, not here! --></noinclude> 491d1vhtkn8r7pjxlx6c9rg3hhshpfy Ronney:2026 14 45454 388019 370450 2026-08-06T00:23:51Z MacTire02 219 clowan noa 388019 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Yn Oarpey 'sy 21d eash rere blein 14 50625 388049 387295 2026-08-06T00:39:20Z MacTire02 219 ronney elley 388049 wikitext text/x-wiki {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 21d eash| Bleeantyn]] [[Ronney:Yn Oarpey rere blein|21]] [[Ronney:21d eash rere mooar-rheynn rere blein|Oarpey]] 0y8k9oz20cakwhpcf3moqi1l4i3o7eu 388051 388049 2026-08-06T00:40:33Z MacTire02 219 ronney elley 388051 wikitext text/x-wiki {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 21d eash| Bleeantyn]] [[Ronney:Yn Oarpey rere blein|21]] [[Ronney:21d eash rere mooar-rheynn as blein|Oarpey]] b1f1krkwpsj0syfz8amjhbfc5gfy8cr Ronney:754 14 52273 387478 384695 2026-08-05T17:44:26Z MacTire02 219 clowan noa 387478 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:756 14 52274 387479 384696 2026-08-05T17:44:36Z MacTire02 219 clowan noa 387479 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:1440 14 53716 387462 386943 2026-08-05T17:40:07Z MacTire02 219 clowan noa 387462 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:Yn Oarpey 'sy 15oo eash rere blein 14 53719 388048 386947 2026-08-06T00:38:43Z MacTire02 219 ronney elley 388048 wikitext text/x-wiki {{category explanation|artyn bentyn rish yn [[yn Oarpey|Oarpey]] 'sy [[15oo eash]] rere blein.}} {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 15oo eash| Blein]] [[Ronney:Yn Oarpey rere blein|.15]] [[Ronney:15oo eash rere mooar-rheynn as blein|Oarpey]] t9h2c5lmh606b69bcm5ofg32j818lt0 Ronney:15oo eash rere mooar-rheynn as blein 14 53720 388050 386948 2026-08-06T00:39:53Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 15oo eash rere mooar-rheynn]] to [[Ronney:15oo eash rere mooar-rheynn as blein]] without leaving a redirect 386948 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|15]] [[Ronney:15oo eash rere mooar-rheynn| Bleeantyn]] [[Ronney:Bleeantyn y 15oo eash| Mooar-rheynn]] s0doqjwx84t2kunxdeza0n0p4k9io5s 388055 388050 2026-08-06T00:51:47Z MacTire02 219 ronney elley 388055 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|15]] [[Ronney:15oo eash rere mooar-rheynn| Bleeantyn]] [[Ronney:15oo eash rere blein| Mooar-rheynn]] nqc3ze0heacph991777n3igiys4zb0d Ronney:15oo eash rere blein 14 53722 388054 386950 2026-08-06T00:51:13Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 15oo eash]] to [[Ronney:15oo eash rere blein]] without leaving a redirect 386950 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|15]] [[Ronney:15oo eash]] pghg961h0kf418x4jah95saqkwsg8mf Ronney:1440yn rere çheer 14 53743 388107 387022 2026-08-06T01:27:29Z MacTire02 219 ronney elley 388107 wikitext text/x-wiki {{Commons category|1440s by country|1440yn rere çheer}} [[Ronney:1440yn| Cheer]] [[Ronney:15oo eash rere çheer as jeihaght| 40]] lkeiycbwaoa4yrakmo2fwkn2i5asbnp Ronney:15oo eash rere çheer as jeihaght 14 53744 388080 387023 2026-08-06T01:16:20Z MacTire02 219 ronnaghyn elley 388080 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:15oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 15]] 9xl86fnyo7j7tx1oegnh2g86u4orylw 388106 388080 2026-08-06T01:26:58Z MacTire02 219 MacTire02 moved page [[Ronney:Jeihaghtyn y 15oo eash rere çheer]] to [[Ronney:15oo eash rere çheer as jeihaght]] without leaving a redirect 388080 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:15oo eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 15]] 9xl86fnyo7j7tx1oegnh2g86u4orylw Ronney:2020yn rere çheer 14 53896 388084 387285 2026-08-06T01:18:28Z MacTire02 219 ronney elley 388084 wikitext text/x-wiki {{category series navigation}} {{Commons category|2020s by country|2020yn rere çheer}} [[Ronney:21d eash rere çheer as jeihaght|2020]] [[Ronney:Shennaghys co-emshiragh rere çheer| 2020]] [[Ronney:2020yn|.Cheer]] emjx875zpco2411p9v5a9lzsv6sfoop 388087 388084 2026-08-06T01:20:11Z MacTire02 219 catsort 388087 wikitext text/x-wiki {{category series navigation}} {{Commons category|2020s by country|2020yn rere çheer}} [[Ronney:21d eash rere çheer as jeihaght| 20]] [[Ronney:Shennaghys co-emshiragh rere çheer| 2020]] [[Ronney:2020yn|.Cheer]] eommgx63ef5yfmdzey5066yojli0rym Ronney:21d eash rere çheer as jeihaght 14 53897 388075 387278 2026-08-06T01:14:01Z MacTire02 219 catsort 388075 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:21d eash rere çheer]] [[Ronney:Jeihaghtyn rere çheer| 21]] c2ftckv2vgrwhhm2i6hha103pb3gfe4 388076 388075 2026-08-06T01:15:11Z MacTire02 219 ronnaghyn elley 388076 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:21d eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 21]] 3p5dcrtcqxwoxjly52pbladjcvr6voi 388081 388076 2026-08-06T01:17:07Z MacTire02 219 MacTire02 moved page [[Ronney:Jeihaghtyn y 21d eash rere çheer]] to [[Ronney:21d eash rere çheer as jeihaght]] without leaving a redirect 388076 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} {{CatAutoTOC}} [[Ronney:21d eash rere çheer| Jeihaght]] [[Ronney:Jeihaghtyn rere çheer| 21]] 3p5dcrtcqxwoxjly52pbladjcvr6voi Ronney:2010yn rere çheer 14 53900 388083 387284 2026-08-06T01:18:13Z MacTire02 219 ronney elley 388083 wikitext text/x-wiki {{category series navigation}} {{Commons category|2010s by country|2010yn rere çheer}} [[Ronney:21d eash rere çheer as jeihaght|2010]] [[Ronney:Shennaghys co-emshiragh rere çheer| 2010]] [[Ronney:2010yn|.Cheer]] 7j0fxukf434taxjdyvbtbmw0p0uah98 388086 388083 2026-08-06T01:19:57Z MacTire02 219 catsort 388086 wikitext text/x-wiki {{category series navigation}} {{Commons category|2010s by country|2010yn rere çheer}} [[Ronney:21d eash rere çheer as jeihaght| 10]] [[Ronney:Shennaghys co-emshiragh rere çheer| 2010]] [[Ronney:2010yn|.Cheer]] qn715xhv3lvuc3xla1wvbttch5vc534 Ronney:Croghaneyn-crooin ayns ny 1980yn 14 53907 388108 387301 2026-08-06T01:28:26Z MacTire02 219 MacTire02 moved page [[Ronney:Ny Croghaneyn-crooin ayns ny 1980yn]] to [[Ronney:Croghaneyn-crooin ayns ny 1980yn]] without leaving a redirect: aght 387301 wikitext text/x-wiki {{category series navigation}} [[Ronney:1980yn rere çheer|Croghaneyn-crooin]] [[Ronney:Ny Croghaneyn-crooin 'sy 20oo eash| 1980]] [[Ronney:Ny Croghaneyn-crooin rere jeihaght|1980]] [[Ronney:Yn Oarpey ayns ny 1980yn|Croghaneyn-crooin]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]] 71q69ibfmhikpn90fjwx9gwocw5cuyo 388109 388108 2026-08-06T01:28:58Z MacTire02 219 ++ 388109 wikitext text/x-wiki {{category series navigation}} [[Ronney:1980yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1980]] [[Ronney:Croghaneyn-crooin rere jeihaght|1980]] [[Ronney:Yn Oarpey ayns ny 1980yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1980yn|-Croghaneyn-crooin]] g7qy9ed4zjcz5kgvy4k5ru6ooal35ge Ronney:Croghaneyn-crooin rere eash 14 53912 388114 387309 2026-08-06T01:35:58Z MacTire02 219 MacTire02 moved page [[Ronney:Ny Croghaneyn-crooin rere eash]] to [[Ronney:Croghaneyn-crooin rere eash]] without leaving a redirect 387309 wikitext text/x-wiki [[Ronney:Croghaneyn y Reeriaght Unnaneysit rere eash| Crooin]] [[Ronney:Yn Oarpey rere eash|Croghaneyn-crooin]] [[Ronney:Croghaneyn-crooin|*]] 79uq98110q1ohkr8wgnt55hrot4pjgl Ronney:Bunneeaghtyn ayns Mannin 'sy vlein 1994 14 53948 387386 2026-08-05T13:51:59Z MacTire02 219 ronney noa 387386 wikitext text/x-wiki {{Category series navigation}} [[Ronney:Bunneeaghtyn 'sy vlein 1994 rere çheer|Mannin]] [[Ronney:Bunneeaghtyn ayns Mannin ayns ny 1990yn| 4]] [[Ronney:Bunneeaghtyn ayns Mannin rere blein|1994]] [[Ronney:Mannin 'sy vlein 1994]] [[Ronney:Bunneeaghtyn ayns croghaneyn y Reeriaght Unnaneysit 'sy vlein 1994|Mannin]] [[Ronney:Bunneeaghtyn 'syn Oarpey 'sy vlein 1994|Mannin]] f4oqssuq8qc82qiwhespr1dcgqmujee Ronney:Mannin 'sy vlein 1994 14 53949 387388 2026-08-05T13:54:23Z MacTire02 219 ronney noa 387388 wikitext text/x-wiki {{Category series navigation}} [[Ronney:1994 rere çheer|Mannin]] [[Ronney:Mannin 'sy 20oo eash rere blein|94]] [[Ronney:Mannin ayns ny 1990yn| 4]] [[Ronney:Yn Oarpey 'sy vlein 1994|Mannin]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit 'sy vlein 1994|Mannin]] brj7zkjdanmsi8m3n7cyzhjk5el4fcd Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash rere blein 14 53950 387391 2026-08-05T15:56:41Z MacTire02 219 ronnaghyn elley 387391 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash| Blein]] [[Ronney:Yn Impiraght Ghoaldagh rere blein|19]] [[Ronney:Bleeantyn y 19oo eash rere çheer|Ghoaldagh, Impiraght]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein| Impiraght]] 46o5tlk4sblkxl4zjqhoemlxzubci1c 388060 387391 2026-08-06T00:56:37Z MacTire02 219 ronney elley 388060 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash| Blein]] [[Ronney:Yn Impiraght Ghoaldagh rere blein|19]] [[Ronney:19oo eash rere çheer as blein|Ghoaldagh, Impiraght]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash rere blein| Impiraght]] 6ewj55psy21sm7l8b8opt6jnldnq6zb Ronney:Yn Impiraght Ghoaldagh rere blein 14 53951 387392 2026-08-05T15:58:05Z MacTire02 219 ronney noa 387392 wikitext text/x-wiki [[Ronney:Shennaghys yn Impiraght Ghoaldagh rere earish|Blein]] [[Ronney:Bleeantyn rere impiraght|Ghoaldagh]] [[ROnney:Yn Reeriaght Unnaneysit rere blein| Impiraght]] 6vc46xl5ijds7zgcmw6vec7sy8sco8g Ronney:Bleeantyn rere impiraght 14 53952 387393 2026-08-05T15:59:21Z MacTire02 219 ronney noa 387393 wikitext text/x-wiki {{moir-ronney}} {{Category see also|Jeihaghtyn rere impiraght|Eashyn rere impiraght|Milley bleeantyn rere impiraght}} [[Ronney:Shennaghys rere impiraght|.Blein]] [[Ronney:Bleeantyn rere çheer| Impiraght]] 56k5dhjqsne1yv2qw3b5hxxo8jnrcqp Ronney:Yn Impiraght Ghoaldagh 'sy 19oo eash 14 53953 387394 2026-08-05T16:00:51Z MacTire02 219 ronney noa 387394 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Yn Impiraght Ghoaldagh rere eash|19]] [[Ronney:19oo eash rere çheer|Ghoaldagh, Impiraght]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash| Impiraght]] 2l1enfxv3b7ox9jyi4lc19nc5ugm9du 387395 387394 2026-08-05T16:01:41Z MacTire02 219 ++ 387395 wikitext text/x-wiki {{Navseasoncats}} {{Category pair|Yn Impiraght Ghoaldagh 'sy 18oo eash|Croghaneyn y Reeriaght Unnaneysit 'sy 20oo eash}} [[Ronney:Yn Impiraght Ghoaldagh rere eash|19]] [[Ronney:19oo eash rere çheer|Ghoaldagh, Impiraght]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash| Impiraght]] tuf11pj1zkuu7zo6vimna0sihphjdgj Ronney:Yn Reeriaght Unnaneysit 'sy 19oo eash 14 53954 387396 2026-08-05T16:06:54Z MacTire02 219 ronney noa 387396 wikitext text/x-wiki {{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}} *'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh). ::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit rere eash|19]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]] [[Ronney:19oo rere eash|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]] l4alays8xdxisanggv0fvtil7jtl0ag 387397 387396 2026-08-05T16:07:13Z MacTire02 219 ronney elley 387397 wikitext text/x-wiki {{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}} *'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh). ::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit rere eash|19]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]] [[Ronney:19oo rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]] jau6fn1rttfrpjyqbld61h20bbs0lnm 387398 387397 2026-08-05T16:07:26Z MacTire02 219 ronney elley 387398 wikitext text/x-wiki {{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}} *'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh). ::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit rere eash|19]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit]] [[Ronney:19oo eash rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]] iwu95o4d08tykkdy83o3t4f9dcmjpwv 388150 387398 2026-08-06T02:19:10Z MacTire02 219 catsort 388150 wikitext text/x-wiki {{Commons category|United Kingdom in the 19th century|Yn Reeriaght Unnaneysit 'sy 19oo eash}} *'''{{C|Yn Reeriaght Unnaneysit}}}''' 'sy '''{{C|19oo eash}}''' — ayrn jeh {{C|Shennaghys noa-emshiragh y Reeriaght Unnaneysit}} (19oo eash derrey jerrey'n Nah Chaggey Dowanagh). ::{{Category see also|Yn Vretyn Vooar 'sy 18oo eash|Yn Reeriaght Unnaneysit 'sy 20oo eash}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit rere eash|19]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 19]] [[Ronney:19oo eash rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey 'sy 19oo eash|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 2h villey bleeaney|19]] bzxb6xg720ybc6j7brptkr6veqgxfyo Ronney:Yn Oarpey 'sy 19oo eash rere blein 14 53955 387399 2026-08-05T16:09:29Z MacTire02 219 ronney noa 387399 wikitext text/x-wiki {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 19oo eash| Blein]] [[Ronney:Yn Oarpey rere blein|19]] [[Ronney:Bleeantyn y 19oo eash rere mooar-rheynn|Oarpey]] f8e0la2xmm4fljl6imtzhpigqe2ui2m 388046 387399 2026-08-06T00:38:04Z MacTire02 219 ronney elley 388046 wikitext text/x-wiki {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 19oo eash| Blein]] [[Ronney:Yn Oarpey rere blein|19]] [[Ronney:19oo eash rere mooar-rheynn rere blein|Oarpey]] pqzo7macdhgzng0ag10ad7e1laqic83 388047 388046 2026-08-06T00:38:15Z MacTire02 219 ronney elley 388047 wikitext text/x-wiki {{navseasoncats}} [[Ronney:Yn Oarpey 'sy 19oo eash| Blein]] [[Ronney:Yn Oarpey rere blein|19]] [[Ronney:19oo eash rere mooar-rheynn as blein|Oarpey]] sx6ul210wk81wgmugjgoha7hb7w4azy Ronney:19oo eash rere mooar-rheynn as blein 14 53956 387400 2026-08-05T16:10:45Z MacTire02 219 ronney noa 387400 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|19]] [[Ronney:19oo eash rere mooar-rheynn| Bleeantyn]] [[Ronney:19oo eash rere blein| Mooar-rheynn]] hgmyblvcfjko4orxz9yp9y0yc57bttv 388045 387400 2026-08-06T00:37:27Z MacTire02 219 MacTire02 moved page [[Ronney:Bleeantyn y 19oo eash rere mooar-rheynn]] to [[Ronney:19oo eash rere mooar-rheynn as blein]] without leaving a redirect 387400 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|19]] [[Ronney:19oo eash rere mooar-rheynn| Bleeantyn]] [[Ronney:19oo eash rere blein| Mooar-rheynn]] hgmyblvcfjko4orxz9yp9y0yc57bttv Clowan:StiuragRonnaghynBleeantyn 10 53957 387407 2026-08-05T16:24:00Z MacTire02 219 clowan noa 387407 wikitext text/x-wiki <includeonly> {{#invoke:StiuragRonnaghynBleeantyn|main}} </includeonly> <noinclude> Ta'n cowan shoh croo ronnaghyn bleeaney, eash, as jeihaght. </noinclude> 0s6tllk7iljniw67wcdo4pbr7w4tj2u 387411 387407 2026-08-05T16:29:25Z MacTire02 219 ++ 387411 wikitext text/x-wiki <includeonly> {{catmore}} {{Commonscat}} {{category series navigation}} {{#invoke:StiuragRonnaghynBleeantyn|main}} </includeonly> <noinclude> Ta'n cowan shoh croo ronnaghyn bleeaney, eash, as jeihaght. </noinclude> 02jlapb8ztafs3hprfaotg9or8oqj8f Module:StiuragRonnaghynBleeantyn 828 53958 387408 2026-08-05T16:25:36Z MacTire02 219 moddyl noa 387408 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century if bc then -- BC centuries count backwards: -- 1 BC = 1st century BC -- 100 BC = 1st century BC -- 101 BC = 2nd century BC century = math.floor((year - 1) / 100) + 1 else -- AD: -- 1-100 = 1st -- 101-200 = 2nd century = math.floor((year - 1) / 100) + 1 end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade if bc then decade = math.floor(year / 10) * 10 else decade = math.floor(year / 10) * 10 end -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- local output = {} table.insert(output, "{{catmore}}") table.insert(output, "{{Commonscat}}") table.insert(output, "{{category series navigation}}") if bc then table.insert( output, string.format( "[[Ronney:%dme eash rere blein RC|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC|%d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%doo eash rere blein|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn|%d]]", decade, lastDigit ) ) end return table.concat(output,"\n") end return p sx8jsyifclcnz0ak4su46to0csdkyzf 387409 387408 2026-08-05T16:26:48Z MacTire02 219 ++ 387409 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century if bc then -- BC centuries count backwards: -- 1 BC = 1st century BC -- 100 BC = 1st century BC -- 101 BC = 2nd century BC century = math.floor((year - 1) / 100) + 1 else -- AD: -- 1-100 = 1st -- 101-200 = 2nd century = math.floor((year - 1) / 100) + 1 end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade if bc then decade = math.floor(year / 10) * 10 else decade = math.floor(year / 10) * 10 end -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- if bc then table.insert( output, string.format( "[[Ronney:%dme eash rere blein RC|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC|%d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%doo eash rere blein|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn|%d]]", decade, lastDigit ) ) end return table.concat(output,"\n") end return p jg4i8o5whsvy2af1cvn6env6x23a386 387410 387409 2026-08-05T16:27:04Z MacTire02 219 Undid revision [[Special:Diff/387409|387409]] by [[Special:Contributions/MacTire02|MacTire02]] ([[User talk:MacTire02|talk]]) 387410 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century if bc then -- BC centuries count backwards: -- 1 BC = 1st century BC -- 100 BC = 1st century BC -- 101 BC = 2nd century BC century = math.floor((year - 1) / 100) + 1 else -- AD: -- 1-100 = 1st -- 101-200 = 2nd century = math.floor((year - 1) / 100) + 1 end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade if bc then decade = math.floor(year / 10) * 10 else decade = math.floor(year / 10) * 10 end -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- local output = {} table.insert(output, "{{catmore}}") table.insert(output, "{{Commonscat}}") table.insert(output, "{{category series navigation}}") if bc then table.insert( output, string.format( "[[Ronney:%dme eash rere blein RC|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC|%d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%doo eash rere blein|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn|%d]]", decade, lastDigit ) ) end return table.concat(output,"\n") end return p sx8jsyifclcnz0ak4su46to0csdkyzf 387412 387410 2026-08-05T16:29:56Z MacTire02 219 ++ 387412 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century if bc then -- BC centuries count backwards: -- 1 BC = 1st century BC -- 100 BC = 1st century BC -- 101 BC = 2nd century BC century = math.floor((year - 1) / 100) + 1 else -- AD: -- 1-100 = 1st -- 101-200 = 2nd century = math.floor((year - 1) / 100) + 1 end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade if bc then decade = math.floor(year / 10) * 10 else decade = math.floor(year / 10) * 10 end -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- local output = {} if bc then table.insert( output, string.format( "[[Ronney:%dme eash rere blein RC|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC|%d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%doo eash rere blein|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn|%d]]", decade, lastDigit ) ) end return table.concat(output,"\n") end return p mcocl7jok3o20a7z86ixqi2okd57e30 387420 387412 2026-08-05T16:46:23Z MacTire02 219 catsort 387420 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century if bc then -- BC centuries count backwards: -- 1 BC = 1st century BC -- 100 BC = 1st century BC -- 101 BC = 2nd century BC century = math.floor((year - 1) / 100) + 1 else -- AD: -- 1-100 = 1st -- 101-200 = 2nd century = math.floor((year - 1) / 100) + 1 end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade if bc then decade = math.floor(year / 10) * 10 else decade = math.floor(year / 10) * 10 end -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- local output = {} if bc then table.insert( output, string.format( "[[Ronney:%dme eash rere blein RC|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC| %d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%doo eash rere blein|%02d]]", century, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn| %d]]", decade, lastDigit ) ) end return table.concat(output,"\n") end return p gcgo4zf71sfw7azk6yfk9srojvjwxj7 387494 387420 2026-08-05T17:51:54Z MacTire02 219 oo > d/h 387494 Scribunto text/plain local p = {} function p.main(frame) local title = mw.title.getCurrentTitle() local name = title.text -- Remove namespace name = name:gsub("^Ronney:", "") local year local bc = false -- Detect BC if name:match("RC") then bc = true year = tonumber(name:match("(%d+)")) else year = tonumber(name:match("(%d+)")) end if not year then return "" end -------------------------------------------------- -- Calculate century -------------------------------------------------- local century = math.floor((year - 1) / 100) + 1 -------------------------------------------------- -- Century suffix -------------------------------------------------- local centurySuffix local lastCenturyDigit = century % 10 if lastCenturyDigit == 1 then centurySuffix = "d" elseif lastCenturyDigit == 2 then centurySuffix = "h" else centurySuffix = "oo" end -------------------------------------------------- -- Century sort key -------------------------------------------------- local centurySort = year % 100 if centurySort == 0 then centurySort = 100 end -------------------------------------------------- -- Decade -------------------------------------------------- local decade = math.floor(year / 10) * 10 -------------------------------------------------- -- Last digit sort -------------------------------------------------- local lastDigit = year % 10 -------------------------------------------------- -- Build output -------------------------------------------------- local output = {} if bc then table.insert( output, string.format( "[[Ronney:%d%s eash rere blein RC|%02d]]", century, centurySuffix, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn RC| %d]]", decade, lastDigit ) ) else table.insert( output, string.format( "[[Ronney:%d%s eash rere blein|%02d]]", century, centurySuffix, centurySort ) ) table.insert( output, string.format( "[[Ronney:%dyn| %d]]", decade, lastDigit ) ) end return table.concat(output, "\n") end return p dgcgx0topqbnr1qrxn7jeh0hse1xl23 Ronney:1772 14 53959 387768 2026-08-05T23:32:31Z MacTire02 219 ronney noa 387768 wikitext text/x-wiki {{StiuragRonnaghynBleeantyn}} 4f1flr0salewservci5rwxkecdn1dod Ronney:20oo eash rere mooar-rheynn as blein 14 53960 388052 2026-08-06T00:43:10Z MacTire02 219 ronney noa 388052 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|20]] [[Ronney:20oo eash rere mooar-rheynn| Bleeantyn]] [[Ronney:20oo eash rere blein| Mooar-rheynn]] ggdpa99cgk5nh8c8c8eccercxeo4fbx Ronney:21d eash rere mooar-rheynn as blein 14 53961 388053 2026-08-06T00:50:17Z MacTire02 219 ronney noa 388053 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Bleeantyn rere eash as mooar-rheynn|21]] [[Ronney:21d eash rere mooar-rheynn| Bleeantyn]] [[Ronney:21d eash rere blein| Mooar-rheynn]] 5baoo5h3mgwzp6s49gxzhbmfkn0tg3x Ronney:Yn Ookraan 'sy 21d eash 14 53962 388071 2026-08-06T01:06:05Z MacTire02 219 ronney noa 388071 wikitext text/x-wiki {{Commons category|Ukraine in the 21st century|Yn Ookraan 'sy 21d eash}} {{Navseasoncats}} [[Ronney:Yn Ookraan rere eash|21]] [[Ronney:Yn Oarpey 'sy 21d eash|Ookraan]] [[Ronney:21d eash rere çheer|Ookraan]] [[Ronney:Yn Ookraan 'sy 3oo milley bleeaney|21]] [[Ronney:Shennaghys noa-emshiragh yn Ookraan| 21]] ih1sx3v8ml68ktplakqx89gwlx2zs9y Ronney:Yn Ookraan rere eash 14 53963 388072 2026-08-06T01:08:17Z MacTire02 219 ronney noa 388072 wikitext text/x-wiki {{moir-ronney}} {{Commons category|Ukraine by century|Yn Ookraan rere eash}} [[Ronney:Eashyn rere çheer|Ookraan]] [[Ronney:Shennaghys yn Ookraan rere earish|Eash]] [[Ronney:Yn Oarpey rere eash|Ookraan]] f5qqd2ja39prt407c6r6ty2qpwome79 Ronney:21d eash rere blein 14 53964 388073 2026-08-06T01:10:31Z MacTire02 219 ronney noa 388073 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|21]] [[Ronney:21d eash]] lz2gg4bppg642p7p6ovhf7vr0ymjquw Ronney:1860yn rere çheer 14 53965 388074 2026-08-06T01:12:17Z MacTire02 219 ronney noa 388074 wikitext text/x-wiki {{category series navigation}} {{Commons category|1860s by country|1860yn rere çheer}} [[Ronney:1860yn|.Cheer]] [[Ronney:Jeihaghtyn y 19oo eash rere çheer| 60]] 38aj8bb6e52djwpmbaozgj0onltpi63 388102 388074 2026-08-06T01:25:39Z MacTire02 219 ronney elley 388102 wikitext text/x-wiki {{category series navigation}} {{Commons category|1860s by country|1860yn rere çheer}} [[Ronney:1860yn|.Cheer]] [[Ronney:19oo eash rere çheer as jeihaght| 60]] 5fkgdlm43c5a0icmv3gv9ne828d5og5 Ronney:Croghaneyn-crooin 'sy 20oo eash 14 53966 388112 2026-08-06T01:34:00Z MacTire02 219 ronney noa 388112 wikitext text/x-wiki {{Navseasoncats}} {{Category see also if exists|Thallooyn Harrish Mooir Goaldagh 'sy 20oo eash|Yn Impiraght Ghoaldagh 'sy 20oo eash}} [[Ronney:Croghaneyn-crooin rere eash|20]] [[Ronney:Yn Oarpey 'sy 20oo eash]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash|-Croghaneyn]] ckedl81haxtemjq2rx0lpzax902gmjr Ronney:Croghaneyn-crooin ayns ny 1990yn 14 53968 388126 2026-08-06T01:43:56Z MacTire02 219 ronney noa 388126 wikitext text/x-wiki {{category series navigation}} [[Ronney:1990yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1990]] [[Ronney:Croghaneyn-crooin rere jeihaght|1990]] [[Ronney:Yn Oarpey ayns ny 1990yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1990yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1990yn|-Croghaneyn-crooin]] mfvwhnc97ckh8p1cjxj4kcrh4ps6pua Ronney:Croghaneyn-crooin ayns ny 2000yn 14 53969 388127 2026-08-06T01:44:59Z MacTire02 219 ronney noa 388127 wikitext text/x-wiki {{category series navigation}} [[Ronney:2000yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 21d eash| 2000]] [[Ronney:Croghaneyn-crooin rere jeihaght|2000]] [[Ronney:Yn Oarpey ayns ny 2000yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2000yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 2000yn|-Croghaneyn-crooin]] 5nkx1nnbhxxjfvuahjdxll72kvx1e4x Ronney:Croghaneyn-crooin ayns ny 2010yn 14 53970 388128 2026-08-06T01:47:20Z MacTire02 219 ronney noa 388128 wikitext text/x-wiki {{category series navigation}} [[Ronney:2010yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 21d eash| 2010]] [[Ronney:Croghaneyn-crooin rere jeihaght|2010]] [[Ronney:Yn Oarpey ayns ny 2010yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2010yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 2010yn|-Croghaneyn-crooin]] 3m3eglfc3igrlt6fvzoo0wb683xpblp Ronney:Croghaneyn-crooin ayns ny 1970yn 14 53971 388129 2026-08-06T01:48:42Z MacTire02 219 ronney noa 388129 wikitext text/x-wiki {{category series navigation}} [[Ronney:1970yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1970]] [[Ronney:Croghaneyn-crooin rere jeihaght|1970]] [[Ronney:Yn Oarpey ayns ny 1970yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]] toekj1n32wyduh4nkag2ldb2pq7o34p 388160 388129 2026-08-06T02:27:23Z MacTire02 219 -ronney 388160 wikitext text/x-wiki {{category series navigation}} [[Ronney:1970yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1970]] [[Ronney:Croghaneyn-crooin rere jeihaght|1970]] [[Ronney:Yn Oarpey ayns ny 1970yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn|-Croghaneyn-crooin]] mkutv7ircppymqy441s8ng0sjus1a4o Ronney:Croghaneyn-crooin ayns ny 1960yn 14 53972 388130 2026-08-06T01:49:33Z MacTire02 219 ronney noa 388130 wikitext text/x-wiki {{category series navigation}} [[Ronney:1960yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1960]] [[Ronney:Croghaneyn-crooin rere jeihaght|1960]] [[Ronney:Yn Oarpey ayns ny 1960yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]] 24q7ecqjbpgds9fyuhwsq7yk0qcaj71 388159 388130 2026-08-06T02:27:02Z MacTire02 219 ronney elley 388159 wikitext text/x-wiki {{category series navigation}} [[Ronney:1960yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1960]] [[Ronney:Croghaneyn-crooin rere jeihaght|1960]] [[Ronney:Yn Oarpey ayns ny 1960yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn|-Croghaneyn-crooin]] 2iyvwajj5uoq85l9xm099evoy8chi2o Ronney:Croghaneyn-crooin ayns ny 1950yn 14 53973 388131 2026-08-06T01:50:39Z MacTire02 219 ronney noa 388131 wikitext text/x-wiki {{category series navigation}} [[Ronney:1950yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1950]] [[Ronney:Croghaneyn-crooin rere jeihaght|1950]] [[Ronney:Yn Oarpey ayns ny 1950yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]] j5fs10j8qufhsnw9snuonl7yp7c1nbh 388158 388131 2026-08-06T02:26:41Z MacTire02 219 -ronney 388158 wikitext text/x-wiki {{category series navigation}} [[Ronney:1950yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1950]] [[Ronney:Croghaneyn-crooin rere jeihaght|1950]] [[Ronney:Yn Oarpey ayns ny 1950yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1950yn|-Croghaneyn-crooin]] kvrxazh1yagp1kitvwhohn8zpmnim7q Ronney:Croghaneyn-crooin ayns ny 1940yn 14 53974 388132 2026-08-06T01:51:20Z MacTire02 219 ronney noa 388132 wikitext text/x-wiki {{category series navigation}} [[Ronney:1940yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1940]] [[Ronney:Croghaneyn-crooin rere jeihaght|1940]] [[Ronney:Yn Oarpey ayns ny 1940yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]] e5qo6if760ogdzfcz5kt2fatduj3oia 388157 388132 2026-08-06T02:26:11Z MacTire02 219 ronney elley 388157 wikitext text/x-wiki {{category series navigation}} [[Ronney:1940yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1940]] [[Ronney:Croghaneyn-crooin rere jeihaght|1940]] [[Ronney:Yn Oarpey ayns ny 1940yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn|-Croghaneyn-crooin]] js6lhfen16nx2wva1hljusscfsrpbaz Ronney:Croghaneyn-crooin ayns ny 1920yn 14 53975 388133 2026-08-06T01:52:03Z MacTire02 219 ronney noa 388133 wikitext text/x-wiki {{category series navigation}} [[Ronney:1920yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1920]] [[Ronney:Croghaneyn-crooin rere jeihaght|1920]] [[Ronney:Yn Oarpey ayns ny 1920yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]] 8j2c1pmeaaq8ttizb3230xu7d4v7vo2 388155 388133 2026-08-06T02:25:03Z MacTire02 219 -ronney 388155 wikitext text/x-wiki {{category series navigation}} [[Ronney:1920yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1920]] [[Ronney:Croghaneyn-crooin rere jeihaght|1920]] [[Ronney:Yn Oarpey ayns ny 1920yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn|-Croghaneyn-crooin]] 2gvt0w4ad2iamxot4csz9lfq6uvhfkk Ronney:Croghaneyn-crooin ayns ny 2020yn 14 53976 388134 2026-08-06T01:54:43Z MacTire02 219 ronney noa 388134 wikitext text/x-wiki {{category series navigation}} [[Ronney:20200yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 21d eash| 2020]] [[Ronney:Croghaneyn-crooin rere jeihaght|2020]] [[Ronney:Yn Oarpey ayns ny 2020yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]] 1rhayuikyurfy0705zblq6q24osqcbx 388135 388134 2026-08-06T01:54:55Z MacTire02 219 ronney elley 388135 wikitext text/x-wiki {{category series navigation}} [[Ronney:2020yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 21d eash| 2020]] [[Ronney:Croghaneyn-crooin rere jeihaght|2020]] [[Ronney:Yn Oarpey ayns ny 2020yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 2020yn|-Croghaneyn-crooin]] 2wf6h5ge1vfbat81apdab13gbz3q2no Ronney:Croghaneyn-crooin rere jeihaght 14 53977 388136 2026-08-06T01:57:18Z MacTire02 219 ronney noa 388136 wikitext text/x-wiki [[Ronney:Croghaneyn-crooin|*]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit rere jeihaght| Croghane-crooin]] [[Ronney:Yn Oarpey rere jeihaght]] 28dak4urlio6zn91adxy5z85hl8vcgn Ronney:Croghaneyn-crooin 'sy 21d eash 14 53978 388137 2026-08-06T01:59:54Z MacTire02 219 ronney noa 388137 wikitext text/x-wiki {{Navseasoncats}} {{Category see also if exists|Thallooyn Harrish Mooir Goaldagh 'sy 21d eash}} [[Ronney:Croghaneyn-crooin rere eash|21]] [[Ronney:Yn Oarpey 'sy 20oo eash]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash|-Croghaneyn-crooin]] 8lwqf8a0hgn1xdqm4g439eiia6qry1n Ronney:Yn Reeriaght Unnaneysit ayns ny 2000yn 14 53979 388138 2026-08-06T02:02:37Z MacTire02 219 ronney noa 388138 wikitext text/x-wiki {{Commons category|United Kingdom in the 2000s|Yn Reeriaght Unnaneysit ayns ny 2000yn}} {{Navseasoncats}} [[Ronney:2000yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|2000]] [[Ronney:Yn Oarpey rere 2000yn|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| 2000]] 8rccpgbkyr7m1tv8e2my0elnfiruum5 388139 388138 2026-08-06T02:02:48Z MacTire02 219 ronney elley 388139 wikitext text/x-wiki {{Commons category|United Kingdom in the 2000s|Yn Reeriaght Unnaneysit ayns ny 2000yn}} {{Navseasoncats}} [[Ronney:2000yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|2000]] [[Ronney:Yn Oarpey ayns ny 2000yn|Reeriaght Unnaneysit]] [[Ronney:Yn Reeriaght Unnaneysit 'sy 21d eash| 2000]] qiugf2s467vqloxi5yn99pot9n9pspm Ronney:Yn Oarpey ayns ny 2000yn 14 53980 388140 2026-08-06T02:04:43Z MacTire02 219 ronney noa 388140 wikitext text/x-wiki {{Navseasoncats}} {{Commons category|Europe in the 2000s|Yn Oarpey ayns ny 2000yn}} {{CatAutoTOC}} [[Ronney:2000yn rere mooar-rheynn|Oarpey]] [[Ronney:Yn Oarpey rere jeihaght|2000]] [[Ronney:Yn Oarpey 'sy 21d eash| 2000]] 9l93te6zvm1bt77rbuvpjsw7v4vg0pp Ronney:2000yn rere mooar-rheynn 14 53981 388141 2026-08-06T02:07:29Z MacTire02 219 ronney noa 388141 wikitext text/x-wiki {{category series navigation}} {{Commons category|2000s by continent|2000yn rere mooar-rheynn}} [[Ronney:2000yn| Mooar-rheynn]] [[Ronney:Jeihaghtyn rere mooar-rheynn|2000]] [[Ronney:21d eash rere mooar-rheynn| 2000]] [[Ronney:Shennaghys co-emshiragh rere mooar-rheynn]] jdg500pe8bvrklumnhjifw8i9xdqkvm 388142 388141 2026-08-06T02:07:46Z MacTire02 219 ronney elley 388142 wikitext text/x-wiki {{category series navigation}} {{Commons category|2000s by continent|2000yn rere mooar-rheynn}} [[Ronney:2000yn| Mooar-rheynn]] [[Ronney:Jeihaghtyn rere mooar-rheynn|2000]] [[Ronney:21d eash rere mooar-rheynn|2000]] [[Ronney:Shennaghys co-emshiragh rere mooar-rheynn]] 0sczds9gxrtgiol94sv4a7fspjwn7a4 Ronney:Yn Reeriaght Unnaneysit ayns ny 1990yn 14 53982 388144 2026-08-06T02:13:11Z MacTire02 219 ronney noa 388144 wikitext text/x-wiki {{Commons category|United Kingdom in the 1990s|Yn Reeriaght Unnaneysit ayns ny 1990yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1990]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1990]] [[Ronney:1990yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1990yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit|1990yn]] ikoxerxku1l7a9jhkg5nc1ip8zol8xa 388145 388144 2026-08-06T02:13:24Z MacTire02 219 catsort 388145 wikitext text/x-wiki {{Commons category|United Kingdom in the 1990s|Yn Reeriaght Unnaneysit ayns ny 1990yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1990]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1990]] [[Ronney:1990yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1990yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1990yn]] nra6y8lifv51e2tnsq21drd8u5rcno2 Ronney:Yn Reeriaght Unnaneysit ayns ny 1960yn 14 53983 388146 2026-08-06T02:14:38Z MacTire02 219 ronney noa 388146 wikitext text/x-wiki {{Commons category|United Kingdom in the 1960s|Yn Reeriaght Unnaneysit ayns ny 1960yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1960]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1960]] [[Ronney:1960yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1960yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1960]] qpvfknp1zhpwwijpfgn1vjxlvzxuf69 Ronney:Yn Reeriaght Unnaneysit ayns ny 1970yn 14 53984 388147 2026-08-06T02:15:35Z MacTire02 219 ronney noa 388147 wikitext text/x-wiki {{Commons category|United Kingdom in the 1970s|Yn Reeriaght Unnaneysit ayns ny 1970yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1970]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1970]] [[Ronney:1970yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1970yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1970]] h3ojypi2rlmejpphtegwnmmn3bhd34v Ronney:Yn Reeriaght Unnaneysit ayns ny 1940yn 14 53985 388148 2026-08-06T02:16:36Z MacTire02 219 ronney noa 388148 wikitext text/x-wiki {{Commons category|United Kingdom in the 1940s|Yn Reeriaght Unnaneysit ayns ny 1940yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1940]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1940]] [[Ronney:1940yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1940yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1940]] 468450nkohbho8mljd47lpl7tamkhbn 388149 388148 2026-08-06T02:18:11Z MacTire02 219 +ronney 388149 wikitext text/x-wiki {{Commons category|United Kingdom in the 1940s|Yn Reeriaght Unnaneysit ayns ny 1940yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1940]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1940]] [[Ronney:1940yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1940yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys co-emshiragh y Reeriaght Unnaneysit| 1940]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1940]] aq3czt6bpztcjjvuou3ninj6fh7i58t Ronney:Croghaneyn-crooin ayns ny 1910yn 14 53986 388151 2026-08-06T02:20:05Z MacTire02 219 ronney noa 388151 wikitext text/x-wiki {{category series navigation}} [[Ronney:1910yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1910]] [[Ronney:Croghaneyn-crooin rere jeihaght|1910]] [[Ronney:Yn Oarpey ayns ny 1910yn]] [[Ronney:Croghaneyn y Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]] gvyikyep8sy09cl8i2ikymlnvv3oumu 388153 388151 2026-08-06T02:22:47Z MacTire02 219 -ronney 388153 wikitext text/x-wiki {{category series navigation}} [[Ronney:1910yn rere çheer]] [[Ronney:Croghaneyn-crooin 'sy 20oo eash| 1910]] [[Ronney:Croghaneyn-crooin rere jeihaght|1910]] [[Ronney:Yn Oarpey ayns ny 1910yn]] [[Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn|-Croghaneyn-crooin]] g0bnairingoeuisf5k30yr8bl4y6cwc Ronney:Yn Reeriaght Unnaneysit ayns ny 1910yn 14 53988 388154 2026-08-06T02:23:58Z MacTire02 219 ronney noa 388154 wikitext text/x-wiki {{Commons category|United Kingdom in the 1910s|Yn Reeriaght Unnaneysit ayns ny 1910yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1910]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1910]] [[Ronney:1910yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1910yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1910]] 2y77lkzdyw62aq09tvet0g1rl2hwv7c Ronney:Yn Reeriaght Unnaneysit ayns ny 1920yn 14 53989 388156 2026-08-06T02:25:32Z MacTire02 219 ronney noa 388156 wikitext text/x-wiki {{Commons category|United Kingdom in the 1920s|Yn Reeriaght Unnaneysit ayns ny 1920yn}} {{Navseasoncats}} [[Ronney:Yn Reeriaght Unnaneysit 'sy 20oo eash| 1920]] [[Ronney:Yn Reeriaght Unnaneysit rere jeihaght|1920]] [[Ronney:1920yn rere çheer|Reeriaght Unnaneysit]] [[Ronney:Yn Oarpey ayns ny 1920yn|Reeriaght Unnaneysit]] [[Ronney:Shennaghys noa-emshiragh y Reeriaght Unnaneysit| 1920]] nttfcjfdym9rlkjl9ncb71r0uvhen7b Ronney:18oo eash rere blein 14 53990 388161 2026-08-06T02:28:12Z MacTire02 219 ronney noa 388161 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|18]] [[Ronney:18oo eash]] b8dqw90779p8yp0ooy6yum82ukyoqom Ronney:17oo eash rere blein 14 53991 388162 2026-08-06T02:29:43Z MacTire02 219 ronney noa 388162 wikitext text/x-wiki {{category series navigation}} [[Ronney:Bleeantyn rere eash|17]] [[Ronney:17oo eash]] 6l2kj5lq96f9cv13u0hueh64gb890ij