diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d4ca079dc2cbcff9f82a0f462726b52217ad8e37 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +frontend/yarn.lock diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/DB/db_script-v1.1.sql b/DB/db_script-v1.1.sql new file mode 100644 index 0000000000000000000000000000000000000000..dc38a09c5fdff8316a707b2fb733a6129444c784 --- /dev/null +++ b/DB/db_script-v1.1.sql @@ -0,0 +1,78 @@ +CREATE SCHEMA IF NOT EXISTS aswi; + +CREATE TABLE aswi."catalog" ( + id uuid NOT NULL , + name varchar(100) NOT NULL , + certainty integer , + latitude double precision , + longitude double precision , + CONSTRAINT pk_katalog PRIMARY KEY ( id ) + ); + +CREATE TABLE aswi.countries ( + name varchar(100) NOT NULL , + catalog_id uuid NOT NULL , + CONSTRAINT pk_countries PRIMARY KEY ( name ) + ); + +CREATE TABLE aswi.types ( + "type" varchar(100) NOT NULL , + CONSTRAINT pk_types PRIMARY KEY ( "type" ) + ); + +CREATE TABLE aswi.users ( + name varchar(100) , + email varchar(100) NOT NULL , + "password" varchar(128) NOT NULL , + is_admin bit DEFAULT 0 , + CONSTRAINT pk_users PRIMARY KEY ( email ) + ); + +CREATE TABLE aswi.written_forms ( + form varchar(100) NOT NULL , + catalog_id uuid NOT NULL , + CONSTRAINT pk_written_forms PRIMARY KEY ( form, catalog_id ) + ); + +CREATE TABLE aswi.alternative_names ( + catalog_id uuid NOT NULL , + name varchar(100) NOT NULL , + CONSTRAINT pk_alternative_names PRIMARY KEY ( catalog_id, name ) + ); + +CREATE TABLE aswi.bibliography ( + "source" varchar(150) NOT NULL , + catalog_id uuid NOT NULL , + CONSTRAINT pk_bibliography PRIMARY KEY ( "source", catalog_id ) + ); + +CREATE TABLE aswi.catalog_type ( + catalog_id uuid NOT NULL , + "type" uuid NOT NULL , + CONSTRAINT pk_catalog_type PRIMARY KEY ( catalog_id, "type" ) + ); + +ALTER TABLE aswi.alternative_names ADD CONSTRAINT fk_catalog FOREIGN KEY ( catalog_id ) REFERENCES aswi."catalog"( id ) ON DELETE CASCADE; + +ALTER TABLE aswi.bibliography ADD CONSTRAINT fk_bibliography_catalog FOREIGN KEY ( catalog_id ) REFERENCES aswi."catalog"( id ); + +ALTER TABLE aswi.catalog_type ADD CONSTRAINT fk_catalog FOREIGN KEY ( catalog_id ) REFERENCES aswi."catalog"( id ); + +ALTER TABLE aswi.catalog_type ADD CONSTRAINT fk_type_id FOREIGN KEY ( ) REFERENCES aswi.types( ); + +ALTER TABLE aswi.countries ADD CONSTRAINT fk_countries_catalog FOREIGN KEY ( catalog_id ) REFERENCES aswi."catalog"( id ); + +ALTER TABLE aswi.written_forms ADD CONSTRAINT fk_written_forms_catalog FOREIGN KEY ( catalog_id ) REFERENCES aswi."catalog"( id ); + +COMMENT ON TABLE aswi."catalog" IS 'Catalog with geografical terms'; + +COMMENT ON COLUMN aswi."catalog".name IS 'Name of the geografical term'; + +COMMENT ON COLUMN aswi."catalog".latitude IS 'Geografical latitude'; + +COMMENT ON COLUMN aswi."catalog".longitude IS 'Geografical longitude'; + +COMMENT ON TABLE aswi.users IS 'Table to store different application users'; + +COMMENT ON COLUMN aswi.users.is_admin IS 'Logical value if the user has admin privileges'; + diff --git a/DB/model-v1.1.png b/DB/model-v1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..9bec5e205123826b54f37f3e7c50383c119c5cdf Binary files /dev/null and b/DB/model-v1.1.png differ diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..549e00a2a96fa9d7c5dbc9859664a78d980158c2 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/backend/AssyrianProject-AllNoDupl-22-03-28.csv b/backend/AssyrianProject-AllNoDupl-22-03-28.csv new file mode 100644 index 0000000000000000000000000000000000000000..b073b72be49e447deaf6359f006c62ad32b96147 --- /dev/null +++ b/backend/AssyrianProject-AllNoDupl-22-03-28.csv @@ -0,0 +1,1086 @@ +"order","name","alt","cer","lat","lon","writ","type","countr","bibl" +1074,"Abaindi","Abaindi","–","–","–","URU.a-ba-in-di, đ’Ś·đ’€€đ’€đ’…”đ’˛","fortified city","Aiadi, Iran","Bagg RGTC 7 3/1: 1–2" +2,"Abani","Abani","–","–","–","ĂŤD.a-ba-ni","river","Elam","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +3,"Abarnani","Abarnani, AbarnÄnu","–","–","–","URU.a-bar-na-ni","fortified city","Turkey, QuwĂŞ","Bagg RGTC 7 1: 1" +6,"AbattĂŞ","AbattĂŞ","–","–","–","URU.a-bat-te-e","town","Central Assyria (?)","Bagg RGTC 7 2/1: 2–3" +7,"Abbissa","Abbissa, Abbissâ, ApheisĂ´n, PheisĂ´n, Pheison, Fis",3,"38.36933","40.5615","URU.ab-bi-is-sa, URU.ab-bi-s-aa","town","province of the land NaĘľiri","Helsinki Atlas: 5 (map 3 D2), Bagg RGTC 7 2/1: 3 (not Fis), <a href=https://pleiades.stoa.org/places/874646>Pleiades: Pheison</a>" +1075,"Abdana","Abdana","–","–","–","URU.ab-da-na-a-a, 𒌷𒀊đ’•đ’ľđ’€€đ’€€","country","NaĘľiri, Iran","Bagg RGTC 7 3/1: 2 (*Abdana)" +8,"Abdudu","Abdudu","–","–","–","URU.ab-du-di, URU.ab-du-da-a-a","city","Assyria, Laḫīru","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 3" +1076,"AbdÄ«nu","AbdÄ«nu, Abdinu, ApdÄ«nu, Apdinu","–","–","–","URU.ap-di-nu, 𒌷𒀊đ’˛đ’‰ˇ","fortress","RÄši, Iran","Bagg RGTC 7 3/1: 2" +9,"Abil-šiáąáąi","Abil-šiáąáąi, Abilakka, Abil..., Abel ha-Ĺ iáąáąim, Tell al-Kafrain (?), Tall al-Kafrain (?), Al Kafrayn (?), الŮŮرين (?), Tall al-ḤammÄm (?), Tell el-Hammam (?)",2,"31.83955"," 35.67318","URU.a-bi-il-x-x, URU.a-bi-il-šiáą-áąi","city","BÄ«t-ḪazaĘľil, Damascus, BÄ«t-ḪumrĂ®, Israel, Jordan","Helsinki Atlas: 5 (map 7 D5), Bagg RGTC 7 1: 1 (Abil...), <a href=https://www.geonames.org/250627/al-kafrayn.html>Geonames: Al Kafrayn</a>, <a href=https://www.geonames.org/248731/tall-al-kafrayn.html>Geonames: Tall al Kafrayn</a>, <a href=https://www.geonames.org/249273/tall-al-hammam.html>Geonames: Tall al ḨammÄm</a>" +10,"AbilÄte","Adab, AbilÄte","–","–","–","URU.a-bi-la-te","town","Izalla","Bagg RGTC 7 2/1: 4" +1077,"Abirus","Abirus","–","–","–","KUR.a-bi-ru-us, 𒆳𒀀đ’‰đ’Š’đ’Š» ","mountains","BÄ«t-Kapsi, Iran","Bagg RGTC 7 3/1: 2–3" +1078,"Abitikna","Abitikna","–","–","–","URU.a-bi-ti-ik-na, đ’Ś·đ’€€đ’‰đ’‹ľđ’……đ’ľ, LĂš.URU.a-bi-ti-ik-na-a-a, 𒇽𒌷𒀀đ’‰đ’‹ľđ’……đ’ľđ’€€đ’€€ ","city","MannÄja, Iran","Bagg RGTC 7 3/1: 3" +1079,"Abnana","Abnana","–","–","–","URU.ab-na-na, 𒌷𒀊đ’ľđ’ľ","city","(?)","Bagg RGTC 7 3/1: 3" +1080,"Abrau","Abrau","–","–","–","KUR.ab-ra-Ăş(-x), 𒆳𒀊𒊏𒌑(-x)","land (?), mountain (?)","MÄdÄia, ḪarḫÄr (?), Iran","Bagg RGTC 7 3/2: 3–4 " +1081,"Absaḫutti","Absaḫutti","–","–","–","KUR.ab-sa-ḫu-at-ti, 𒆳𒀊𒊓𒄷𒀜𒋾","land (?), mountain (?)","MÄdÄja, Iran","Bagg RGTC 7 3/1: 4" +1082,"Abuqu","Abuqu","–","–","–","URU.a-bu-qu, đ’Ś·đ’€€đ’Ťđ’„Ł","town","Tumme, NaĘľiri (?)","Bagg RGTC 7 3/1: 4" +1,"AbÄ","Abâ, Aba","–","–","–","URU.a-ba-a, URU.a-ba-a.a","town","Tušḫan province","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +4,"AbÄt-Aššur-lÄ-tÄ“ni","Abat-Aššur-lÄ-tenni, AbÄt-Aššur-lÄ-tÄ“ni","–","–","–","URU.a-bat-aš-šur-la-te-ni","city","Ĺ ubria","Bagg RGTC 7 2/1: 2" +5,"AbÄt-šarri-lÄ-tÄ“ni","AbÄt-šarri-lÄ-tÄ“ni, Abat-šarri-lÄ-tenni","–","–","–","URU.a-bar-MAN-la-te-ni","city","Ĺ ubria","Bagg RGTC 7 2/1: 2" +1083,"AbĹ«rĂŞ","AbĹ«rĂŞ, AburĂŞ","–","–","–","URU.a-bu-re-e, đ’Ś·đ’€€đ’Ťđ’Š‘đ’‚Š","city","PuqĹ«du, GambĹ«lu, Babylonia, Iraq","Bagg RGTC 7 3/1: 4–5" +12,"Adab","Bismaya",1,"31.95047","45.62345","–","city","Babylonia","–" +1057,"Adamdun","Adamdun, Teppe Surkhehgan (?)",4,"32.02136","48.79869","–","city","Elam","–" +13,"Addauš","Addauš, Adauš, Ḥabb as-SuláąÄn DÄġ, Jabal Haybat SulĹŁÄn, Hab-es-SultÄn DÄgh, جبل هيبت سلطان","–","36.09709","44.67702","URU.ad-da-uš, KUR.a-da-uš","territory","ḪabrĹ«ri (?), Iraq","Bagg RGTC 7 3/1: 5" +1084,"Adduri","Adduri, Adduru","–","–","–","KUR.ad-du-ri, 𒆳𒀜đ’şđ’Š‘","mountains","Uraráąu, Turkey","Bagg RGTC 7 3/1: 5" +15,"Adia","Adia, Adiu, Adum, Mosul, Ḫirbat Qara Qounly (?), Khirbet Qara Quwiynili (?), Šēḫ ʿĀdÄ« (?), Shaykh AdÄ« (?)",4,"36.34233","43.11833","URU.a-di-a","town","Assyria","Helsinki Atlas: 5 (map 4 C5), ABL, 683, ONC G4, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 6–7, <a href=https://books.openedition.org/cdf/4715#tocfrom2n18>MTT I/1</a> (Adum)" +16,"Adian","Adian, Adin, Eski Kalak, AskÄ« Kalak, DahĹ«k (?)",4,"36.27267","43.63917","URU.EN-an, URU.a-di-an, URU.a-di-in","town","Assyria","Helsinki Atlas: 5 (map 4 C5), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 7–8" +1085,"AdilĂŞ","AdilĂŞ","–","–","–","LĂš.a-di-le-e, 𒇽𒀀đ’˛đ’‡·đ’‚Š","tribe","Babylonia, Iraq","Bagg RGTC 7 3/1: 6" +17,"Adinni","Adinni","–","–","–","URU.a-di-ni, đ’Ś·đ’€€đ’˛đ’‰Ś, URU.a-di-in-ni, đ’Ś·đ’€€đ’˛đ’…”𒉌","city","Babylonia, Iraq","Bagg RGTC 7 3/1: 6, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +18,"Admannu","Natmane, Admannu, Atmannu, Tell 'Ali, Tell ĘľAli","–","35.38189","43.68247","–","–","–","–" +1086,"Aduma","Aduma","–","–","–","URU.a-du-ma, đ’Ś·đ’€€đ’şđ’ ","town","–","Bagg RGTC 7 3/1: 6" +20,"Adummatu","Adummatu, Adumatu, Adumutu, Dumetu, Dumeti, Duma, Dumatha, Doumiatha, DĹ«mat al-Äžandal, Dumat el-Jandal, al-Ǧauf, al-Jawf, الجŮŮ, ŘŻŮŮ…Ř© الجندل, דוּמָ֖ה",1,"29.81144","39.86716","URU.a-du-ma-tu, URU.a-du-mu-tu, URU.a-du-um-ma-te, URU.a-du-um-ma-tu, URU.du-ma, URU.du-me-ti","town, city, fortress","Arabs","Helsinki Atlas: 5 (map 15 D4), Bagg RGTC 7 2/1: 8–9, 'Eph'lal 1982, 119, TPC H5B, <a href=https://pleiades.stoa.org/places/29548>Pleiades: Dumatha</a>" +19,"AdumÄnu","AdumÄnu","–","–","–","URU.a-du-ma-nu","town","East Babylonia","Bagg RGTC 7 2/1: 8" +11,"Adâ (city)","Adâ, Tall ĘżAdÄ (?), Theleda (?), ĘżAin at-Tall (?), Tall Hatab (?)","–","35.81818","36.33017","URU.a-da-a","city","ḪamÄt","Bagg RGTC 7 1: 2" +14,"AdĂ®","AdĂ®","–","–","–","URU.a-di-i","town","Central Assyria (?)","Bagg RGTC 7 2/1: 6" +1087,"Agazi","Agazi","–","–","–","KUR.a-ga-zi, 𒆳𒀀𒂵𒍣","territory","MÄdÄja, Iran","Bagg RGTC 7 3/1: 7" +1090,"Aiadi","Aiadi, Ajadi, AyÄdi, AiÄdi, Ayaid, Aiaid, OrĹ«mÄ«ye Plain","–","–","–","KUR.a-ia-di, 𒆳𒀀𒅀đ’˛, KUR.a-ia-id, 𒆳𒀀𒅀𒀉","territory","Uraráąu, Iran","Bagg RGTC 7 3/1: 10, <a href=https://www.geonames.org/121801/orumiyeh.html>Geonames: OrĹ«mÄ«yeh</a>" +1091,"Aiaṣun","Aiaṣun, Ajaṣun","–","–","–","URU.a-ia-ṣu-un, 𒌷𒀀𒅀𒍮𒌦","fortified city","Uraráąu, Aiadi, Iran","Bagg RGTC 7 3/1: 10–11, <a href=https://www.geonames.org/121801/orumiyeh.html>Geonames: OrĹ«mÄ«yeh</a>" +23,"Aila","'Aqaba","–","29.53067789514675","34.99994197134541","–","town","–","–" +24,"Aira","Aira","–","–","–","URU.a-i-ra","town","–","Bagg RGTC 7 2/1: 12" +1092,"Aja-Sammu","Aja-Sammu, Aia-Sammu, Aya-Sammu, Aiasamu, Ajasamu","–","–","–","URU.a-a-sa-mu, 𒌷𒀀𒀀𒊓đ’¬","fortified city","GambĹ«lu, Babylonia, Iraq","Bagg RGTC 7 3/1: 11–12" +25,"Ajaidi","Plain of UrmÄ«ya",3,"–","–","–","district","Uraráąu (?), NaĘľiri (?), Urmia","Helsinki Atlas: 5 (map 4 D4)" +1093,"Ajalaja","Ajalaja, Ayyalaya, Ayalaya","–","–","–","KUR.a-a-la-a-a, 𒆳𒀀𒀀𒆷𒀀𒀀, KUR.a-a-la-ia, 𒆳𒀀𒀀𒆷𒅀","country","Ṣibar (?), Iran","Bagg RGTC 7 3/1: 11" +1094,"AjalĂŞ","AjalĂŞ, AialĂŞ, AyalĂŞ","–","–","–","KUR.a-a-le-e, 𒆳𒀀𒀀𒇷𒂊","fortified city","Iran","Bagg RGTC 7 3/1: 11" +1095,"Ajubak","Ajubak, Ayubak","–","–","–","URU.a-a-Ăş-ba-ak, 𒌷𒀀𒀀𒌑đ’€đ’€ť","city","Namri (?), Iran","Bagg RGTC 7 3/1: 12" +27,"Akkad","Akkad, Agade, Tell Muhammad (?), Tell Muhammed (?), Tall Muḥammad (?), ŘŞŮ„ Ů…ŘŮ…ŘŻ, al-QÄdisÄ«ya (?), IšÄn Mizyad (??)",4,"33.3009","44.4682","URI.KI, URI.KI-i, ak-ka-de-e, ak-ka-di-i, A.GA.DĂ.KI, a-ka-di, a-kad.KI, URU.URI, URU.ak-ka-di, URU.ak-kad, KUR.ak-ka-di-i, URU.ak-kad-u-a","city","Babylonia, Akkad, Iraq","Helsinki Atlas: 5 (map 10 D3), Bagg RGTC 7 3/1: 13–14, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +29,"Akkuddu","Akkuddu, ÄŞlÄm (?), اŮلام, ایلام, Surkh Dum LurÄ« (?), سرخ ŘŻŮ… لـري, Surḫ Dum (?), Surḫ Dom (?), Dom Sorkh LakÄ« (?), ŘŻŮŹŮ… سُرخ Ů„ŮŽŮŰŚ, Sorkh Dom LakÄ« (?), سرخ ŘŻŮ… Ů„Ú©ŮŠ",4,"33.5065","47.7079","URU.ak-ku-du, URU.ak-ku-ud-du, URU.ak-ku-du-ma","capital, city","Ellipi, Iran","Helsinki Atlas: 5 (map 11 C3), Bagg RGTC 7 3/1: 14–15, CT 53 892" +28,"AkkĂ»","AkkĂ», 'AkkĂ´, ĘżAkko, Acco, Accon, Accra, Ptolemais, Antiocheia Ptolemais, ΠτολεμαÎĎ‚, Tall al-FuḫḫÄr, Tell el-Fukhkhar, עַכּוֹ‎, ĘżAkkÄ, ŘąŮّا‎",1,"32.92139","35.08776","URU.ak-ku-u, URU.ak-ku-Ăş, URU.a-ku-u","city, fortresses, seaport","Ḫatti, ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A4), Bagg RGTC 7 1: 3–4, <a href=https://pleiades.stoa.org/places/678010>Pleiades: Ake/Ptolemais</a>" +30,"AkuÄnu","AkuÄnu, ĘľAkuÄnu, AkuĘľanu",4,"36.83333","39.08333","–","village, city","ḪarrÄnu","Helsinki Atlas: 5 (map 3 C4)" +31,"AkzÄ«bi","AkzÄ«bi, Akzibu, Akzib, AkzĂ®b, Akziba, Tell Achzib, Achziv, ×כזיב, AkzĂ®b, az-ZÄ«b, ez-Zib, الزيب‎",1,"33.04858","35.10194","URU.ak-zi-ba, URU.ak-zi-bi, ×כזיב","town","Ḫatti, ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A3), Bagg RGTC 7 1: 4" +26,"AkÄ«tu Temple of Aššur","BÄ«t-akÄ«ti ša Aššur, BÄ«t-akÄ«ti ša ṣēri, AkÄ«tu Temple of Aššur, AkÄ«tu Temple of the steppe","–","35.46286","43.25423","É-á-ki-it šá EDIN","temple","Aššur","–" +42,"Alalaḫ","Alalaḫ, Alalakh, Tell Açana","–","36.2376050898224","36.38418400802268","–","–","–","–" +43,"Aliṣir","Aliṣir, Alimuš, Antiokia, Antiocheia, Antakya, Anáąakya","–","36.20582","36.16682","URU.a-li-MUĹ ","city, fortress","Pattinu, KullanÄ«a","Helsinki Atlas: 5 (map 2 C4), Bagg RGTC 7 1: 6 (Alimuš)" +44,"Allabria","Allabria, SanandaÄź, سنندج",3,"35.31495","46.99883","KUR.al-la-ab-ra-a-a, KUR.al-la-lab-ri-a, KUR.al-lab-ra-a-a, KUR.al-lab-ri-a, KUR.al-lab-ri-a-a, (KUR.)al-lab-rĂ-a-a, URU.al-la-ab-ra-a, URU.al-la-ab-ri-a, URU.al-lab-ri-a","territory, country, city","Zagros mountain range, Iran","Helsinki Atlas: 5 (map 11 B1, 11 C1), Bagg RGTC 7 3/1: 18–19, Parpola Toponyms: 12" +45,"Alligu","Alligu, Ialligu, Iallgu, Jalligu, Aṣbat-lakĹ«nu, Aṣbat-lÄ-kunu, Aṣbat-lakĹ«n, Aligör, Ali Gör, IlÄ«Äźak, IllÄ«jÄk, Degirman, الليجاŮ, Tall QĹ«mluq, Ů‚ŮŮ…Ů„ŮŮ","–","37.04393","38.4504","URU.a-li-gu, URU.al-li-gi, URU.ia-li-gu","city","BÄ«t-Adini","Bagg RGTC 7 1: 6–7, Bagg RGTC 7 3/2: 914" +46,"Alluria","Alluria, Nazlu çay","–","–","–","–","river","–","Helsinki Atlas: 5 (map 4 E4)" +47,"Alluriu","Alluriu, Alluria, Baradost, جبل برادŮست","–","36.73601","44.39033","KUR.a-lu-ri-a, KUR.al-lu-ri-Ăş","mountain","Iraq","Bagg RGTC 7 3/1: 20" +48,"AltaqĂ»","AltaqĂ», Altaqu, Tall aš-Ĺ allÄf, Tel Shalaf, Tel Ĺ allÄf, תל שלף, ElteqÄ“h, Eltekeh, Eltheke, ×לתקה, ×לתק×",1,"31.89238","34.76765","URU.al-ta-qu-u, URU.al-ta-qu-Ăş, ×לתקה, ×לתק×","city","AsdĹ«du (province) (?), Pilistu","Helsinki Atlas: 5 (map 7 C5), Bagg RGTC 7 1: 7, <a href=https://pleiades.stoa.org/places/498102722>Pleiades: AltaqĂ»</a>" +53,"AmadÄni","AmadÄni, Amadanu, AmadÄnu, Amadana, Amadani, Maden DaÄźlari, Maden DaÄźları",2,"38.27444","39.3835","KUR.a-ma-da-ni, KUR.a-ma-da-na","mountain, mount","Ḫabḫu","Helsinki Atlas: 5 (map 3 C2), Bagg RGTC 7 2/1: 41–42, <a href=https://books.openedition.org/cdf/4564#tocfrom2n39>MTT I/2</a> (AmadÄnu (1))" +54,"Amantu","Amantu, Amante, Amatti, Amanta, SultÄn ĘżAbdallÄh, Sultan ĘżAbdallah",4,"35.89601","43.39074","URU.a-mat-ti, URU.am-an-te, URU.a-ma-an-ta-a-u","town, village","Central Assyria, KilÄ«zi (province) (?)","Helsinki Atlas: 5 (map 4 C6), Bagg RGTC 7 2/1: 42" +57,"Ammali","Ammali, Mamli, Nammal, Namal, نمل","–","35.32081","45.60446","KUR.URU.am-ma-li, URU.am-ma-li, URU.ma-am-li","city","Zamua, Iraq","Bagg RGTC 7 3/1: 37–38" +59,"AmmanÄna","AmmanÄna, AmmanÄnu, Ammanana, Antilibanos, Antilibanus, Anti-Lebanon, Äžabal an-NuṣairÄ«ya, Quṣeir, JibÄl an NuṣayrÄ«yah, Ǧabal Anṣariya, ǦibÄl LubnÄn aš-Ĺ arqÄ«ya",2,"35.24408","36.28354","KUR.am-ma-na-na","mountain","–","Helsinki Atlas: 5 (map 8 B1), Bagg RGTC 7 1: 8–9" +58,"AmmÄna","AmmÄna, ĘżAmmÄn, Rabbat Ammon, Ammon, Rabatha, Äžabal al-Qal'a, Philadelphia",1,"31.95431","35.93515","URU.am-ma-a-na","capital, city","BÄ«t-AmmÄn","Helsinki Atlas: 5 (map 7 D5), Bagg RGTC 7 1: 7–8" +60,"Ampa","Ampa, Ambi, Anfa, Anfeh, انŮه",3,"34.35515","35.73206","URU.am-pa","town","ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A2), Bagg RGTC 7 1: 9" +61,"Ampiḫabi","Ampiḫabi, Ampihabi, Ampiḫapi, Ampihapi",3,"33.96633","44.2265","KUR.am-pi-ḫa-a-bi, URU.am-pi-ḫa-bi","town","Assyria, Arzūḫina (province)","Helsinki Atlas: 5 (map 10 D3), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +62,"Amrit","Amrit","–","34.83512","35.91208","–","–","–","–" +64,"AmurrĂ»","AmurrĂ», Amurru, MÄt-AmurrĂ®, ×מורי‎, áĽÎĽÎżĎĎαῖοι, Ęľmr, đ¤€đ¤Śđ¤“‎, ĘżAkkÄr Plain (?)","–","–","–","MAR, MAR.KI, MAR.TU, MAR.TU.KI, KUR.a-mur-ri, KUR.MAR, KUR.MAR.KI, KUR.MAR.TU, KUR.MAR.TU.KI, a-mur-re-e, a-mur-ri-i, a-mur-ru-Ăş, KUR.a-mur-ra-a-a, KUR.a-mur-re-e, KUR.a-mur-ri-i, KUR.a-mur-ru-u, KUR.MAR.TU-e.KI, LĂš.MAR.TU.KI, MAR.TU-i, MAR.TU.KI-Ăş, ×מורי‎, đ¤€đ¤Śđ¤“‎","territory","Syro-Palestine, Levant","Bagg RGTC 7 1: 11–15" +65,"Ana-Aššur-utÄ“r-aṣbat","Ana-Aššur-utÄ“r-aṣbat, Aššur-utÄ“r-aṣbat, Aššur-aṣbat, PitĹ«ru, Pitru, Pitiru, Pethor, פְּתוֹר, Tell Aushariye, Ausheriya, Aušar ar-RafÄ«Ęża, ḤammÄm aṣ-Ṣaġīr",2,"36.66007","38.07583","URU.a-na-aš-šur-Ăş-ter-aṣ-bat, URU.AN.Ĺ ĂR-DAB-bat, URU.ana-aš-šur-Ăş-ter-aṣ-bat, URU.aš-šur-DIB-bat, URU.aš-šur-Ăş-ter-aṣ-bat, URU.ina-aš-šur-ut-ter-aṣ-bat, URU.pi-it-ru, URU.pi-ti-ru","city","Ḫatti, BÄ«t-Adini, Til-Barsib (?)","Helsinki Atlas: 5, Bagg RGTC 7 1: 16 (Ana-Aššur-utÄ“r-aṣbat), 191 (Pitru), <a href=https://pleiades.stoa.org/places/771224407>Pleiades: Pitru</a>" +66,"Anasarta","Anasarta, Khanasir","–","35.77596486304121","37.49764864063391","–","–","–","–" +68,"Andarutta","Andarutta, Andarutu, Berat DaÄź (?), جبل بيرت, Baradost (?), جبل برادŮست","–","36.74111","44.14666","KUR.an-da-ru-ut-ta, KUR.an-da-ru-tĂş","mountain","Ḫabḫu (?), Province of ''nÄgir ekalli'' (?), Iraq","Helsinki Atlas: 5 (Berat DaÄź, map 4 D5), Bagg RGTC 7 3/1: 39–40 (Baradost), Dlshad A. Marf: ''Re-Identifying the ‫Ḫ‬iptunu Town and Andaruttu Mountain''. Akkadica 136 (2015), pp. 127- 140." +69,"Andia","Andia",2,"–","–","–","country, state","Zagros mountains","Helsinki Atlas: 5 (map 5 C4)" +70,"Androna","Androna, El-Andarin","–","35.53433495330736","37.36206520477305","–","–","–","–" +71,"Anduli","Anduli, Andulu, Hedil, HĂŞdil, Kayı","–","37.37316","41.7836","URU.an-du-li","town","Izalla","Bagg RGTC 7 2/1: 48" +73,"Ankuwa","Ankuwa, AliĹźar HĂĽyĂĽk","–","39.60636312468131","35.26129955642234","–","–","–","–" +74,"Anmurru","Anmurru, Keban, Nemerli","–","38.70377","37.822263","URU.an-mu-ur-ru","fortress, city","MelÄ«di, Turkey","Bagg RGTC 7 1: 17, <a href=https://pleiades.stoa.org/places/762647722>Pleiades: Anmurru</a>" +75,"AnqarrĹ«na","AnqarrĹ«na, AmqarrĹ«na, Amqaruna, Aqqarruna, ĘľAmkaruna, Tel Miqne, Khirbat el-Muqanna', Eqron, Ekron, Akkaron, עֶקְרוֹן‎, عقرŮن‎",1,"31.77746","34.85097","KUR.am-qar-u-na, KUR.am-qar-ru-na, URU.Ęľa-am-qa-ar-ru-na, URU.Ęľa-am-qa-ru-na, URU.am-qar-ru-na, URU.am-qar-u-na, URU.an-qar-u-na, KUR.an-qar-ru-na-a-a, URU.a-qa-ru-na-a-a","capital, city","Pilistu, Levant, Israel","Helsinki Atlas: 5 (map 7 C5), Bagg RGTC 7 1: 10–11 (AmqarrĹ«na), <a href=https://pleiades.stoa.org/places/687888>Pleiades: Ekron/Akkaron</a>" +77,"Antakya","Antakya, Antiokia, Antiochia","–","36.22255","36.18321","–","monument","Turkey","Helsinki Atlas: 20 (map 2 C4), <a href=https://pleiades.stoa.org/places/658381>Pleiades: Antiochia/Theoupolis</a>" +78,"AnzaknĂŞ","AnzaknĂŞ, Ṣaḥne, صŘنه, BahÄr, بهار","–","34.4813","47.6908","KUR.an-za-ak-nĂ©-e","territory, country (?)","MÄdÄja, Iraq","Bagg RGTC 7 3/1: 43" +79,"Anzaria","Anzaria, KÄr-Adad","–","–","–","–","fortress","Iran","Parpola Toponyms: 20, Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +72,"AnÄ«su","AnÄ«su, Anisu, AnÄ«sus, Anisus, QalĘżat DÄ«za, Qalaat Diza, QalĘże DÄ«ze, Qalat Dizah, QeĹ‚adizĂŞ, قلعة دزة",4,"36.18254","45.13017","URU.a-ni-su, URU.a-ni-i-su-us","town","Zagros mountain range, Iraq","Helsinki Atlas: 5 (map 4 E5), Bagg RGTC 7 3/1: 42–43" +76,"Anšan","Anzan, Anšan, Aššan, Tall-i MalyÄn, Tall-e MalyÄn, Tell Malyan, ŘŞŮ„ ملیان, Tepe Malyan",1,"30.01238","52.41011","KUR.an-za-an, KUR.áš-ša-an, KUR.an-za-nu-Ăş-a, URU.áš-šá-an","capital, city","Elam, Iran","Helsinki Atlas: 5 (map 17 D4), Bagg RGTC 7 3/1: 44" +81,"AparÄzu","AparÄzu, ApparÄzu, Apparazu, Parraza, Abarara, Abarraza, BrÄ“Äź, البريج, Ṭaáąmaraš, ṬÄáąumarÄš, طاطمراش","–","36.25225","36.85209","URU.a-pa-ra-a-zu, URU.ap-pa-ra-zu","fortress, fortified city","BÄ«t-AgĹ«si","Bagg RGTC 7 1: 17–18 (ApparÄzu), <a href=https://pleiades.stoa.org/places/658362>Pleiades: Abarara</a>" +82,"Apaša","Apaša, Ephesus (?)",4,"37.94113","27.346","–","–","–","–" +83,"Apku","Apku, Apqu, Apka, Apqum, Tall AbĹ« MÄrÄ«yÄ, Tell Abu Marya, AbĹ« MÄrÄ«yah, AbĹ« Maria, اب٠مارية",2,"36.42959","42.5976","URU.ap-ku, URU.ap-ka, URU.ap-ki, URU.ap-qĂ","town","Central Assyria, Iraq","Helsinki Atlas: 6 (map 4 B5), Bagg RGTC 7 2/1: 49, <a href=https://pleiades.stoa.org/places/874723>Pleiades: Tell Abu Marya/[Apqu]</a>, <a href=https://books.openedition.org/cdf/4564#tocfrom2n50>MTT I/2 ( HIGEOMES Nr. 3)</a>" +84,"Appari","Appari","–","–","–","URU.ap-pa-ri","town","–","Bagg RGTC 7 1: 18, Parpola Toponyms: 21" +85,"Apparu","Apparu, Apparum, Afaris, ḤafÄ«ra, Ůادي الŘŮيرة, al-LajÄh, al-LaÄźÄ, اللجاه","–","32.93481","36.385","URU.ap-pa-ru","oasis, water resource","MÄĘľab (?), Jordan, Syria","Bagg RGTC 7 1: 18, <a href=https://books.openedition.org/cdf/4715>MTT I/1</a>, Parpola Toponyms: 21" +86,"Apqu","Apqu, Ęľpq, đ¤€đ¤đ¤’, Aphek, Aphik, ×ֲפֵק, AfqÄ, ŘŁŮقا, Pegae, Antipatris, Aphaka, Tel Ras el-'Ain, Tel AfÄ“q, תל ×פק, TÄ“l Kabri, FÄ«q, TÄ“l Soreq, Ḫirbat al-Hadab",1,"34.06616","35.88854","URU.ap-qu, ×ֲפֵק, đ¤€đ¤đ¤’","town","BÄ«t-ḪumrĂ® (?), Israel (?), Phoenicia (?), Lebanon (?), Dimašqa (?), Syria (?), Palestine (?), Iaʾūdu (?)","Helsinki Atlas: 6 (map 7 C4), Bagg RGTC 7 1: 18–19, <a href=https://pleiades.stoa.org/places/668195>Pleiades: Aphaka (Temple of Aphrodite Aphakitis)</a>" +87,"AprĂŞ","AprĂŞ, Apre, ĘżAfrÄ«n, ĘżIfrÄ«n",2,"–","–","–","river","Ḫatti, Pattinu, KullanÄ«a (province), SamĘľalla","Helsinki Atlas: 6 (map 2 C4)" +88,"Apsia","Apsia, Absia, Apsija, Ebsi (?), Apši, Apše",3,"37.364166666667","41.166833333333","–","village","Izalla, Syria (?), Turkey (?)","Helsinki Atlas: 6 (map 3 E3)" +89,"Apsu","Apsu, Apsuna, Ęľpš, Tell Afis, T. Afis",3,"35.905","36.79875","–","city","Ḫatti, Syria","Helsinki Atlas: 6 (map 2 C5)" +80,"ApÄk","ApÄk, Apak, Apiak, Abiak",3,"32.416666666667","44.666666666667","–","town","BÄ«t-DakkĹ«ri, Babylonia, Iraq","Helsinki Atlas: 6 (map 10 D4)" +90,"Apšu","Apšu",4,"33.321166666667","44.385666666667","–","town","Babylonia, Iraq","Helsinki Atlas: 6 (map 10 D3)" +91,"AqarbÄnu","AqarbÄnu, AqarbÄni, Aqarbani, NaqarabÄni, NaqarbÄni, Merrhan, Kherban",3,"34.65","40.83333","URU.a-qa-ar-ba-ni, URU.na-qa-ra-ba-ni, URU.na-qa-ra-ba-a-ni","town","LÄqĂŞ, Syria","Helsinki Atlas: 6 (map 9 C2), Bagg RGTC 7 2/1: 50–51" +93,"Arad","Arad","–","31.28089","35.12658","–","–","–","–" +94,"Arameans","Aram, Arameans, Aramaeans","–","–","–","–","ethnic","–","–" +95,"Arantu","Arantu, Orontes",1,"–","–","–","river","Mediterranean coast, Syria","Helsinki Atlas: 6 (map 8 B1)" +96,"Aranziaš","Aranziaš, Araziaš, Aranzēšu, Arazišu, Godin Tepe (?), Godin Teppe (?), GĹ«dÄ«n Tapeh, ÚŻŮدین‌تپه","–","34.51841","48.06839","KUR.a-ra-an-ze-e-šú, KUR.a-ra-an-ze-šú, KUR.a-ra-zi-aš, KUR.a-ra-zi-áš, KUR.a-ra-zi-šú, KUR.a-ra-zi-áš-a-a","territory, city, state","MÄdÄia, Iran","Bagg RGTC 7 3/1: 56–57 (Araziaš), Helsinki Atlas: 6 (map 11 C2)" +97,"Aranziaše","Aranziaš, Aranziaše, Aranziašu, Aranzēše","–","–","–","URU.ar-an-ze-e-še, URU.ar-an-zi-a-še, URU.ar-an-zi-a-šu","city","RÄši, Iran","Bagg RGTC 7 3/1: 53–54 (Araziaše), Helsinki Atlas: 6 (map 11 C2)" +99,"Arattâ","Arattâ","–","–","–","ĂŤD.a-rat-ta-a","river","MÄzamua (?)","Parpola Toponyms: 24" +100,"Araziqa","Araziqa, Tell el-Hajj (?)",4,"36.19682","38.07494","–","–","–","–" +101,"Arbail","Arbail, Arbela, ArbÄ“la, ArbÄ«l, IrbÄ«l, Irbil, Erbil, أربيل‎",1,"36.19143","44.00901","arba-ìl, arba-ìl.KI, DUMU.arba-ìl, DUMU-URU.arba-ìl, DUMU.MEĹ -URU.arba-ìl, URU.ar-ba-ìl, URU.ár-ba-ìl, URU.arba, URU.arba-ìl, URU.arba-ìl.KI, URU.er-ba-ìl, URU.arba-ìl-a-a","city","Assyria","Helsinki Atlas: 6 (map 4 C5), Bagg RGTC 7 2/1: 53–57" +102,"Arbakki","Arbakki, Arbakku, Gre Dimse, Arwah (?)","–","37.82752","40.96629","KUR.ar-ba-ki, KUR.ar-ba-ak-ki, URU.ar-ba-ki, URU.ar-ba-ak-ki, URU.ár-ba-ak-ki","city, territory","Ḫabḫu, Turkey","Bagg RGTC 7 2/1: 58" +104,"Arbela (Irbid)","Arbela, Irbid","–","32.55925461562157","35.84754833501287","–","–","–","–" +105,"Arbunâ","Arbunâ","–","–","–","URU.ar-bu-na-a","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 59" +103,"ArbÄtu","ArbÄtu, Arbate, Arbatu, Tell Khaumat Hajin (?), Tall Ḥawmat Hayin, aṣ-ṢÄliḥīyah (?), Dura-Europos (?), Doura'Europus (?), ΔοῦĎα Εá˝Ďωπός, aç-ÇaĘľÄbi (?), Tall ĘżAfrÄ«ya (?)",4,"34.71257","40.82676","URU.ar-ba-te","town","LÄqĂŞ, Syria","Bagg RGTC 7 2/1: 58–59 (Arbate)" +106,"Ardata","Ardata, Tell ArdĂ©","–","34.408691834184","35.9148561159837","–","–","–","–" +107,"Arganâ","Arganâ, Arzigana, ḪarganÄ, ArziġÄn at-TaḥtÄni, RīḥÄ, ar-Rūǧ territory, Ǧabal az-ZÄwiya territory, QalĘżat al-Muḍīq territory, Tall Arguni, Tall QasáąĹ«n",3,"35.81374","36.60964","URU.ar-ga-na-a","city","ḪamÄt, Syria","Helsinki Atlas: 6 (map 2 D5), Bagg RGTC 7 1: 20–21" +110,"Argite","Argite, Tall ĘżArquni, ŘŞŮ„ عرقŮني","–","34.58147","36.65652","URU.ar-gi-te","station","Syria","Bagg RGTC 7 1: 21" +109,"Argištiuna","Argištiuna, Argistiani, Irgistiani, QalĘże Esmaʾīl Ä€ÄˇÄ (?), قلعه اسماعیل آقا","–","37.6651","44.9296","URU.ar-giš-ti-Ăş-na, URU.ir-gi-is-ti-a-ni","fortified city","Aiadi, Iran","Bagg RGTC 7 3/1: 59" +108,"Argištiḫinili","Argištihinili, Armavir, Davti-blur",1,"40.08092","44.03321","–","city","–","Helsinki Atlas: 6 (map 4 D1)" +112,"AriawÄte","AriawÄte",3,"36.8","40.283333333333","–","town","–","Helsinki Atlas: 6 (map 3 D4)" +113,"Aribi","Aribi, Arabs",2,"–","–","–","tribe","–","Helsinki Atlas: 6 (map 10 A1)" +114,"Aribua","Aribua, Ǧisr aš-Ĺ uġūr, جسر الشغŮر, as-SafÄ«ra, السŮيرة","–","35.81418","36.31983","URU.a-ri-bu-a","fortified city","Pattinu, Syria","Bagg RGTC 7 1: 22" +117,"Ariru","Ariru","–","–","–","URU.a-ri-ra-a-a","town","Central Assyria (?), Kalḫu province (?)","Bagg RGTC 7 2/1: 62–63" +118,"ArmarialĂ®","ArmarialĂ®, Plain of SalmÄs/Ĺ ahpĹ«r",2,"–","–","–","district","–","Helsinki Atlas: 6 (map 4 D3)" +119,"ArnabÄni","ArnabÄni",3,"36.583333333333","40.416666666667","–","town","–","Helsinki Atlas: 6 (map 3 D4)" +120,"ArnĂŞ","ArnĂŞ, Arne, Arna (?), ĘľArnaya (?), Tell ĘżArÄn, ŘŞŮ„ عرن, Erin",2,"36.12419","37.34718","URU.ar-nĂ©-e","capital","BÄ«t-AgĹ«si, Syria","Helsinki Atlas: 6 (map 2 D4), Bagg RGTC 7 1: 23" +121,"Arpadda","Arpadda, Arpad, Ęľrpd, đˇ€đˇ“đˇđˇ, ĘľArpÄd, ×ַרְפָּד, Ḫurpata, Tell RifĘżat, Tall RifĘżat, Tell Rifa'at, ŘŞŮ„ رŮعت",2,"36.47262","37.09464","ar-pad-da, KUR.ar-pad-da, KUR.ár-pad-da, KUR.URU.ar-pad-dĂ , URU.ar-pa-da, URU.ar-pad-da, URU.ar-pad-du, URU.ár-pa-da, URU.ár-pad-da, ár-pad-da-a-a-te, KUR.ar-pa-da-a-a, KUR.ár-pad-da-a-a, URU.ar-pad-da-a-a, URU.ár-pad-da-a-a, đˇ€đˇ“đˇđˇ, ×ַרְפָּד","prov. capital","BÄ«t-AgĹ«si, Arpadda province, Syria","Helsinki Atlas: 6 (map 2 D4), Bagg RGTC 7 1: 23–25" +122,"Arqâ","Arqâ, Irqanat, Irqanatu, Irqanata, Arkata, Irkata, Irqata, Ężrqw, đˇŹđˇ“đˇ’đˇ…‎‎, br Ężrqj, đˇđˇ“ đˇŹđˇ“đˇ’đˇ‰, ĘżArqĂ®, עַרְקִי, Arka, ArkÄ“, Ężrq, đ¤Źđ¤“đ¤’‎, Arca, Arka, ArkÄ“, Archis, Caesarea ad Libanum, Herakleia en Phoinike, Tell ĘżArqâ, عرقا",1,"34.53333","36.03333","KUR.ar-qa-a, URU.ar-qa-a, ar-qa-a-a, KUR.ir-qa-na-ta-a-a, Ężrqw, đˇŹđˇ“đˇ’đˇ…‎‎, br Ężrqj, đˇđˇ“ đˇŹđˇ“đˇ’đˇ‰, Ężrq, đ¤Źđ¤“đ¤’‎, עַרְקִי","city","ḪamÄt, Phoenicia, Syria","Helsinki Atlas: 6 (map 8 A2), Bagg RGTC 7 1: 25–26, <a href=https://pleiades.stoa.org/places/668198>Pleiades: Arca/Herakleia en Phoinike/Caesarea ad Libanum</a>" +123,"ArqÄnia","ArqÄnia, Arkanâ, Arkania, Ergani mountains, Sakız Dağı, Yaylım Dağı","–","38.49845","39.6579","KUR.ar-ka-a-na-a, KUR.ar-qa-ni-a","mountain","MallÄnu, Turkey","Bagg RGTC 7 2/1: 64, Helsinki Atlas: 6 (map 3 C2)" +124,"Arrakdi","Arrakdi, Arrakdu, Arrakdia, Arikdin, Arragdi, TukultÄ«-Aššur-aṣbat, Bingird, بنگرد",4,"35.37778","45.71389","KUR.ár-rak-di-a, URU.a-ra-ak-di, URU.a-rak-di, URU.ar-ra-ak-di/URU.ar-ra-ag-di","town","Zamua","Bagg RGTC 7 3/1: 63–64, Helsinki Atlas: 6 (Arragdi, map 10 E1), Radner (2017), A Neo-Assyrian Legal Document from Tell Sitak: 428" +125,"Arrapḫa","Arrapḫa, Arrapḫum, Arrapḫe, Arrapḫi, Arrapachitis, Karkha de Beth Seluk, KarkĹ«k, Kirkuk, ŮرŮŮŮ, ĘżArafah, عرŮŘ©",1,"35.46963","44.39572","ár-rap-ḫa, arrap-ḫa, arrap-ḫa.KI, KUR.arrap-ḫa, URU.ár-arrap-ḫa, URU.a-rap-ḫa, URU.ar-rap-ḫa, URU.ar-rap-ḫi, URU.ár-rap-ḫa, URU.ár-rap-ḫe, URU.arrap-ḫa, URU.arrap-ra-ap-ḫa, ar-rap-ḫa-ia, URU.ar-rap-ḫa-a-a, URU.arrap-ḫa-a-a","city","Assyria, Arrapḫa province","Helsinki Atlas: 6 (map 10 D1), Bagg RGTC 7 2/1: 64–68, <a href=https://pleiades.stoa.org/places/893941>Pleiades</a>" +128,"Artulu","Artulu, Kululu, Kayserı, Aksaray","3 4","38.96968","36.13359","URU.ar-tu-lu","city","TabÄl, Turkey","Helsinki Atlas: 6 (Artulu and Artulu (alt. loc.), map 2 B2, 1 D2), Bagg RGTC 7 1: 26, <a href=https://pleiades.stoa.org/places/543726022>Pleiades: Kululu Kalesi</a>, <a href=https://pleiades.stoa.org/places/619164>Pleiades: Aksaray</a>, <a href=https://pleiades.stoa.org/places/629035>Pleiades: Kayserı</a>" +130,"ArwÄda","Arwad, Arvad, ArwÄd, ArwÄda, ArmÄda, Armada, Arwada, ĘľArwÄd, ×ַרְוַד, Ęľrwd, đ¤€đ¤“đ¤…đ¤, Ęľrwdj, đ¤€đ¤“đ¤…đ¤đ¤‰, Arados, Aradus, ar-RuwÄd, ArwÄd, أرŮاد",1,"34.85735","35.86053","KUR.a-ru-a-di, KUR.a-ru-ad-da, KUR.a-ru-Ăş-ad-da, KUR.a-ru-Ăş-da, KUR.a-ru-ud-da, KUR.ar-u-a-da, KUR.ar-Ăş-a-da, KUR.ar-Ăş-ad-da, KUR.ar-Ăş-da, LĂš-KUR.ar-Ăş-ad-da, URU.a-ru-ad-da, URU.a-ru-a-di, URU.ar-ma-da, URU.ar-ma-di, URU.ar-u-a-da, URU.ar-Ăş-a-da, KUR.ar-ma-da-a-ia, URU.a-ru-da-a-a, URU.ar-ma-da-a-a, đ¤€đ¤“đ¤…đ¤, đ¤€đ¤“đ¤…đ¤đ¤‰, ×ַרְוַד","city, island","Phoenicia, Syria","Helsinki Atlas: 6 (map 8 A2), Bagg RGTC 7 1: 27–29, <a href=https://pleiades.stoa.org/places/668197>Pleiades: Arados</a>" +131,"Arzâ","Arzâ, ArzÄja, Yurza, Tell ÄžÄmÄ, TÄ“l Gamma, תל גמה, TÄ“l Haror, תל הרור, Tall AbĹ« ḤurÄ“ra, TÄ“l Hesi, תל חסי, al-ĘżArīš (?), العريش",1,"31.38715","34.44511","KUR.ar-za-a, URU.ar-za-a, URU.ar-za-a-a","town","Levant, Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 29–30, <a href=https://pleiades.stoa.org/places/309101265>Pleiades: Arzâ (T. ǦÄmÄ)</a>" +132,"Arzūḫina","Arzūḫina, Arzuḫina, Aḫi-Zūḫina, Urzūḫina, Azuḫīnum, Azuḫinni, Narzuḫini, Uzuḫinnum, Ęľrzḥn, đˇ€đˇ“đˇ†đˇ‡đˇŤ, Gök Tepe, ÚŻŮÚŻ تپه, LÄ“lÄn, ليلان, Tall Qara Khogh",3,"35.84718","44.83326","ar-zu-ḫi-na, ár-zu-ḫi-na, ur-zu-ḫi-na, KUR.ur-zu-ḫi-na, URU.a-ḫi-ĂŤD.zu-ḫi-na, URU.ar-zu-ḫi-na, URU.ar-zu-ḫi-nu, URU.ár-zu-ḫi-na, URU.ur-zu-ḫi-nu, URU.ar-zu-ḫi-na-a-a, URU.ur-zu-ḫi-na-a-a, đˇ€đˇ“đˇ†đˇ‡đˇŤ","city, prov. capital","Assyria, Arzūḫina province, Iraq","Bagg RGTC 7 2/1: 72–74 (Arzuḫina), <a href=https://pleiades.stoa.org/places/893944>Pleiades: Arzuhin?</a>, Parpola Helsinki Atlas: 6, 24 (map 10 D1)" +92,"Arâ","Arâ, Arra, Arrha, Ężrw, đˇŹđˇ“đˇ…, Tall ĘżAr, MaĘżarrat an-NuĘżmÄn, معرة النعمان, Tall ArrÄ«, ŘŞŮ„ عري","–","35.4851","36.67946","URU.a-ra-a, Ężrw, đˇŹđˇ“đˇ…","town","ḪamÄt, Syria","Bagg RGTC 7 1: 19–20" +98,"ArÄši","ArÄši, RÄši","–","–","–","–","region","–","Helsinki Atlas: 6 (map 11 B3)" +115,"ArÄ«di","ArÄ«di, Aridi, ArÄ«du, Aridu, Jaridu, Jaridi, Iaridu, Tell ĘżArÄda, Tall ĘżArÄda, ŘŞŮ„ عرادة",2,"36.74381","40.26703","URU.a-ri-di, URU.ia-ri-di","town","GĹ«zÄna province, Syria","Helsinki Atlas (ArÄ«du (1), map 3 D3), Bagg RGTC 7 2/1: 62" +116,"ArÄ«du","ArÄ«du, Aridu, Ruwandiz, RÄwandĹ«z, áąžuwandiz, راŮندŮز, رŮاندز",4,"36.61667","44.51667","KUR.a-ri-di, URU.a-ri-di, URU.a-ri-du","fortified city","ḪabrĹ«ri, Iraq","Bagg RGTC 7 3/1: 60, Helsinki Atlas: 6 (ArÄ«du (2), map 4 D5), Bagg RGTC 7 1: 62" +129,"ArĹ«mâ","Arumâ, ArĹ«mâ, RĂ»mâ, Rumah, רוּמָה, Ḫirbat ar-RĹ«ma, Ḥirbe Ruma, חרבת רומה",1,"32.78854","35.29285","URU.a-ru-ma-a, רוּמָה","town","BÄ«t-ḪumrĂ®, Galilee, Israel","Helsinki Atlas: 6, Bagg RGTC 7 1: 27" +111,"Arḫi","Arḫi","–","–","–","–","district","–","Helsinki Atlas: 6 (map 5 C2)" +126,"Arṣania","Arṣania, Murat Su, Arsanias",1,"–","–","–","river","–","Helsinki Atlas: 6 (map 3 D2)" +127,"Arṣaškun","Arṣaškun, Erciṣ",4,"39.02906","43.35914","–","capital","–","Helsinki Atlas: 6 (map 4 C2)" +133,"Asatia","Asatia, Asati","–","–","–","–","country","NaĘľiri","–" +134,"AsdĹ«dimmu","AsdĹ«dimmu, Asdudimmu, AzĹŤtos Paralios, Ἄζωτος παĎάλιος, AšdĂ´d-Yam, Ashdod Yam, H̱orbat Ashdod Yam, חרבת ×שדוד ים, Minat el-Qal'a, TÄ“l Mor, תל מור",1,"31.77931","34.62103","URU.as-du-di-im-mu","seaport, city","Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 30, <a href=https://pleiades.stoa.org/places/687843>Pleiades: Azotos Paralios</a>" +135,"AsdĹ«du","AsdĹ«du, SadĹ«du, SidĹ«du, Asdudu, Ašdod, ĘľAḏdÄdu, AšdĂ´d, ĘľAšdĂ´d, ×ַשְ×דּוֹד, AzĹŤtos, áĽÎ¶Ď‰Ď„ĎŚĎ‚, Azotos Mesogeios, Ἄζωτος μεĎόγειος, ʾšdd, đ¤€đ¤”đ¤đ¤, 'EsdĹ«d, Tel Ashdod, TÄ“l Ašdod, Ashdod",1,"31.75604","34.65606","as-du-du, KUR.as-du-di, URU.as-du-di, URU.as-du-du, URU.as-du-Ăş-di, KUR.as-du-da-a-a, KUR.sa-du-da-a-a, KUR.si-du-da-a-a, URU.as-du-da-a-a, đ¤€đ¤”đ¤đ¤, ×ַשְ×דּוֹד","prov. capital","Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 30–32, <a href=https://pleiades.stoa.org/places/687838>Pleiades: Ashdod/Azotos (Mesogeios)</a>" +136,"Asiḫi","Asiḫi","–","–","–","–","town","Assyria, Syria","RGTC 7 2/1: 74–75 (Asiḫi 1 and 2), 76 (Ašiḫi)" +137,"AstÄrtu","AstÄrtu, ĘżAštartu, ĘżAṯtartu, AstÄrtu, Astartu, Ashtarot, AštÄrĂ´t, ʿštrt, đ¤Źđ¤”đ¤•đ¤“đ¤•â€Ž, עַשְ×תְּרֹת, עַשְ×תְּרֹת ×§Ö·×¨Ö°× Ö·×™Ö´×ť, Tell Aštara, Tell Ashtara, Tall Aštara, ŘŞŮ„ الشتارا",1,"32.8045","36.01537","URU.as-tar-tu, đ¤Źđ¤”đ¤•đ¤“đ¤•â€Ž, עַשְ×תְּרֹת, עַשְ×תְּרֹת ×§Ö·×¨Ö°× Ö·×™Ö´×ť","city","Dimašqa","Helsinki Atlas: 6 (map 8 B4), Bagg RGTC 7 1: 32, <a href=https://pleiades.stoa.org/places/678227>Pleiades: Karnaia/Astaroth?</a>" +145,"Atalur","Atalur, Lallar, Kurt DaÄź, Kurt Dağı, Jabal al Kurd, جبل الŮرد, Jabal KurÄ«, جبل Ůري, Kartal Dağı",2,"36.68627","36.63681","KUR.a-ta-lu-ur, KUR.lal-la-ar","mountain","Syria, Turkey (?)","Helsinki Atlas: 7 (map 2 C4), Bagg RGTC 7 1: 34 (Atalur),d 154–155 (Lallar), 328, and 329." +146,"Atinni","Atinnu, Atinni, Atanni, Adennu, AddanĂ´n, AdanĂ´n, Adana, ad-DÄnÄ, الدانا, KÉ™far Atin, ḪÄnedÄn","–","35.6997","36.68736","URU.a-ti-in-ni, URU.a-de-en-nu","royal city","ḪamÄt, Syria","Bagg RGTC 7 1: 35 (Atinnu), Parpola Toponyms: 55, Helsinki Atlas: 8 (DÄna)" +147,"Atunna","Atunna, Atuna, Tuna, AtĹ«nu, TĹ«nu, Dunna, Tynna, Porsuk, Bohça, Adana",1,"37.51473","34.58111","KUR.a-tu-un-a-a, KUR.a-tĂş-un-a-a, KUR.a-tu-na-a-a, KUR.tu-na-a-a, KUR.tu-un-na-a-a, URU.a-tĂş-na-a-a, URU.tu-na-a-a","city, state","TabÄl, Turkey","Helsinki Atlas: 7 (map 1 D3), Bagg RGTC 7 1: 35–36" +148,"AukanĂŞ","AukanĂŞ, MiyÄne (district of?)","–","37.421","47.715","KUR.a-Ăş-ka-nĂ©-e, URU.a-Ăş-ka-nĂ©-e","district, fortified city","Zikirtu, Iran","Bagg RGTC 7 3/1: 79, Helsinki Atlas: 7 (map 5 B4)" +149,"Awal","Awal, Tell es-Suleimeh","–","34.1672839680068","45.10398610165713","–","–","–","–" +150,"Azalla","Azalla, Izalla, Aṣalli, al-ĘżUyÄnÄ«ya, العليانية","–","34.01469","38.0986","URU.a-za-al-la, URU.a-za-al-li, URU.i-za-la","city","Syria","Bagg RGTC 7 1: 36–37" +151,"Azamḫul","Azamhul, Tell Muhammed Diyab (?)",4,"36.92458278462991","41.5639438856054","–","–","–","–" +152,"Azaqâ","Azaqâ, Azeqa, ĘżAzÄ“qÄh, עֲזֵקָה, Αζηκα, TÄ“l ĘżAzÄ“qÄh, תל עזקה, ŘŞŮ„ عزيقة, TÄ“l Zekarya, תל זְכַרְיָה, Tell ZakarÄ«ya, Tell Zakariya",1,"31.70927","34.94488","URU.a-za-qa-a, עֲזֵקָה","city","Iaʾūdu, Israel","Helsinki Atlas: 7 (map 7 C5), Bagg RGTC 7 1: 37" +153,"Azari","Azari, SulaimÄniya",4,"35.558333333333","45.441666666667","–","town","–","Helsinki Atlas: 7 (map 11 A1)" +154,"Azatiwadaya","Karatepe AslantaĹź","–","37.29593799675796","36.25398751793364","–","–","–","–" +155,"Azmu","Azmu, Zalabiya, Zalebiye, زلابية, YasÄ«m",4,"35.66842","39.84256","URU.az-mu","town","BÄ«t-Adini, Middle Euphrates, Syria","Helsinki Atlas: 7 (map 3 C5), Bagg RGTC 7 1: 38" +156,"Azu","Azu, Tell Hadidi","–","36.2636830630028","38.15089325346946","–","–","–","–" +157,"Azuru","Azuru, Asuru, YÄzĹ«r, Azor, ʾĀzĂ´r, ×ָזוֹר‎, TÄ“l Azor, Azur, أزŮر‎",1,"32.02167","34.7805","URU.a-zu-ru","town","Pilistu, IsqalĹ«na, Israel","Helsinki Atlas: 7 (map 7 C4), Bagg RGTC 7 1: 38" +140,"Ašnakkum","Chagar Bazar (?)",4,"36.87559543914787","40.89909269814208","–","–","–","–" +144,"AštamÄku","Aštammaku, AštamÄku, Aštamaku, Abšimmaku, Abtammaku, Išdamugu, Aštakamu, Ęľystmk, al-Mastumaḥ, Tall MasáąĹ«ma, ŘŞŮ„ مسطŮŮ…Ř©, StĹ«mÄ, StĹ«mÄk, Stumak",1,"35.87781","36.63077","URU.ab-ši-ma-ku, URU.ab-ta-ma-ku, URU.áš-ta-ma-ku, URU.áš-tam-ma-ku","town","ḪamÄt, Syria","Helsinki Atlas: 6 (map 2 C5), Bagg RGTC 7 1: 33–34 (Aštammaku), <a href=https://pleiades.stoa.org/places/56494917>Pleiades: Aštamaku</a>" +141,"Aššur","Libbi-Äli, LibbÄli, Inner City, Aššur, Assur, Ashur, Baltil, QalĘżat Ĺ arqÄáą, Qal'at Sherqat, Qalaat Sherqat",1,"35.45626","43.25979","–","capital, city","Assyria","Helsinki Atlas: 6 (map 10 C1), <a href=https://www.assur.de/> Assur</a>" +142,"Aššur-iqīša","Aššūr-iqīša, Aššur-iqīša, Takyan HöyĂĽk, ZÄḫū",4,"37.17944","42.39525","URU.aš-šur-BA-šá","prov. capital","Ulluba, Birtu (2) province","Helsinki Atlas: 6 (map 4 B4), Bagg RGTC 7 2/1: 81" +143,"Aššur-mÄssu-urappiš","Aššur-mÄssu-urappiš","–","–","–","URU.aš-šur-KUR-su-DAGAL.MEĹ ","town","Egypt","–" +139,"AšḫÄni","AšḫÄni, Ašḫani, Isḫanikka, Išḫanik, ḪÄn Ĺ ayḫūn, ḪÄn Ĺ aiḫūn, خان Ř´ŮŠŘ®Ůن, aš-Ĺ aĘżrÄni, aš-Šēḫ ḤourÄni, الشيخ ŘŮراني, ĘżAin SaḫnÄ, عين السŘنة",2,"35.44328","36.64629","URU.aš-ḫa-ni, URU.áš-ḫa-ni","city","ḪamÄt, Syria","Helsinki Atlas: 6 (map 8 B1), Bagg RGTC 7 1: 33 (Ašḫani)" +1088,"Aḫsipuna","Aḫsipuna","–","–","–","URU.aḫ-si-pu-na, đ’Ś·đ’„´đ’‹›đ’Ťđ’ľ","town","Parsua (?), MÄdÄja (?), Iran","Bagg RGTC 7 3/1: 9" +22,"Aḫtâ","al-MÄ«nÄĘľ, RaĘľs al-BasÄ«áą (?)",3,"36.05979","35.97939","URU.aḫ-ta-a","city, emporium on the seashore","ḪamÄt (?), KullanÄ«a (province) (?), Mediterranean coast","Helsinki Atlas: 5 (map 2 B4), Bagg RGTC 7/1: 3, Zadok 1996, 11, Barrington Atlas, 67" +21,"Aḫšūru","Aḫšūru, Aḫšūra","–","–","–","KUR.aḫ-šu-Ăş-ru, 𒆳𒄴𒋗𒌑𒊒","mount","Zamua (?), MannÄja (?), Iran ","Bagg RGTC 7 3/1: 9, Parpola Toponyms: 6, <a href=https://www.geonames.org/98463/as-sulaymaniyah.html>Geonames: As SulaymÄnÄ«yah</a>" +1089,"Aḫūdu","Aḫūdu, Aḫudu, Uḫūdu","–","–","–","URU.a-ḫu-di, 𒌷𒀀𒄷đ’˛","fortified city","BÄ«t-AmukkÄni, Babylonia, Iraq","Bagg RGTC 7 3/1: 9–10" +138,"Aṣūṣi","Aṣūṣi, Aṣūṣu, Ṣūṣi","–","–","–","URU.a-ṣu-ṣi, URU.ṣu-ṣi","town","Northern Babylonia (?)","Bagg RGTC 7 1: 74" +158,"Babil","Assyrian name unknown, Babil, Kebili, Kebeli KöyĂĽ, Kebeli Koyu","–","37.1876517","42.0271825","–","monument","Turkey","Helsinki Atlas: 7 (map 4 A4), <a href=https://pleiades.stoa.org/places/708232008>Pleiades: Babil</a>" +160,"Babiti","Babiti, BaziÄn",2,"35.6365","44.96966","–","pass","–","Helsinki Atlas: 7 (map 10 E1)" +161,"BadÄni","BadÄni","–","–","–","URU.ba-da-a-ni","village","Central Assyria","Bagg RGTC 7 2/1: 88 (BadÄni 3)" +162,"BadÄni (2)","Badani, BadÄnu, BadÄni, Fadana, Phaddan, Tall FeddÄn, Yukarı Telfidan, YukarıbeÄźdeĹź, AĹźağı Telfidan, AĹźağıbeÄźdeĹź",3,"36.84738","38.9045","URU.ba-da-ni, URU.ba-da-na-a-a","village","ḪarrÄnu province, Turkey","Bagg RGTC 7 2/1: 87–88 (BadÄni 2), Helsinki Atlas: 7 (BadÄnu, map 3 B4), <a href=https://pleiades.stoa.org/places/658467>Pleiades: Fadana</a>" +163,"BadÄnu","BadÄnu, BadÄni","–","–","–","URU.ba-da-na-a-a","tribe","Sinai Peninsula (?), Arabian Peninsula (?)","Bagg RGTC 7 1: 41 (BadÄni 1)" +166,"Baliḫu","Baliḫu, Balīḫu, BaliḫÄ, Baliḫum, Baliḫa, Ḫarru-ša-mÄr-Balīḫi, Tell Abyaḍ, Tell Abid, Tall Abyaḍ, ŘŞŮ„ ابيض, ĘżAin al-ĘżArĹ«s, عين العرŮŘł",3,"36.6844","38.98529","URU.ba-li-ḫi, URU.ba-li-ḫu","town, city","Syria","Helsinki Atlas: 7 (map 3 B4), Bagg RGTC 7 2/1: 90–91 (Balīḫu 1)" +164,"BalÄáąa","BalÄáąa, Balaáąu, Balatu, Balad, BalÄáąu, BalÄáąÄja, BalÄáą, Eski Moṣul, Eski Mosul, اسŮŮŠ Ů…Ůصل, al-Mauṣil-al-QadÄ«m, Tall ÄžikÄn, Tall Jikan",3,"36.51292","42.73595","URU.ba-la.MEĹ , URU.ba-la-áąa, URU.ba-la-áąa-a-a, URU.ba-laáą, URU.ba-laáą-a-a","town, prov. capital","Central Assyria, Province of the crown prince, Iraq","Helsinki Atlas: 7 (map 4 B5), RGTC 7 2/1: 89–90 (BalÄáąÄja)" +165,"Balīḫ","Balīḫu, Balissos, Balīḫ, Daisan",1,"–","–","–","river","–","Helsinki Atlas: 7 (map 3 C4)" +167,"Banai-barqa","Banai-barqa, Banajabarqa, B<sup>e</sup>nĂŞ b<sup>e</sup>raq, BnÄ“ BrÄq, ×‘Ö°× Öµ×™Öľ×‘Ö°×¨Ö·×§, H̱orbat BnÄ“ BrÄq, חרבת ×‘× ×™ ברק, Ibn IbrÄq, Tall AbĹ« ZÄ“tĹ«n, TÄ“l ZÄ“tĹ«n, תל זיתון",1,"32.03613","34.82061","URU.ba-na-a-a-bar-qa","town","IsqalĹ«na, Pilistu, Israel","Bagg RGTC 7 1: 42 (Banajabarqa), Helsinki Atlas: 7 (Banai-barqa, map 7 C4)" +168,"Baqarru","Baqarru, Baqarri, Baqar, QabrÄ, Tepe YaĘżqĹ«b, Tall Bqarta, Tell Baqrta, Tappe YaĘżqĹ«b, تبه يعقŮب",3,"35.95195","43.90993","URU.ba-qar, URU.ba-qar-ma, URU.ba-qar-ri","town","Assyria, Arzūḫina (province) (?)","Helsinki Atlas: 7 (map 4 D6), Bagg RGTC 7 2/1: 92–93 (Baqarri)" +169,"Bargâ","Barqum (?)",4,"36.03727524058666","36.96663802100544","–","–","–","–" +172,"Barzaništa","Barzaništa, Barzanista, Göktepe","–","37.69504","40.38403","URU.bar-za-ni-is-ta, URU.bar-za-ni-iš-ta","town","Izalla","Bagg RGTC 7 2/1: 97–98" +173,"Barzaništun","Barzaništun","–","–","–","URU.bar-za-ni-iš-tu-un","town","BÄ«t-ZamÄni, Turkey","Bagg RGTC 7 2/1: 98" +171,"BarĹ«ri","BarĹ«ri, Baruḫu, Bourira (?), BurÄ“r (?)","–","31.56667","34.65","URU.bar-Ăş-ri","town","Central Assyria (?), Iraq (?), Ḫazzat (?), Pilistu (?), Israel (?)","RGTC 7 2/1: 97" +170,"Barḫalza","Barḫalza, Barḫalzu, Barḫalzi",2,"–","–","–","province, prov. capital","–","Helsinki Atlas: 7 (map 4 B5), RGTC 7 2/1: 93–95" +176,"Batruna","Botrus, Batrun?","–","34.25624622926138","35.65955373869843","–","–","–","–" +175,"Bašimu","Bašimu, Liyan (?), Būšehr, Sabzabad Bushehr",3,"28.9071","50.8456","–","city","–","Helsinki Atlas: 7 (map 17 C5)" +181,"BaĘľali","BaĘľali, BaĘľalu, Ḫirbat BalĘżama, Khirbet Balama, Khirbet Bel'ameh, Khirbet Bal’ama, Ibleam, יִבְלְעָם, BaĘżlabakk, Heliopolis","–","34.00675","36.20437","URU.ba-Ęľa-li, URU.ba-aĘľ-li","town","Syro-Palestine, Dimašqa (?)","Bagg RGTC 7 1: 39" +182,"BaĘľali-raĘľasi","BaĘľli-rÄĘľsi, BaĘľali-raĘľasi, BaĘľali-raĘľsi, BaĘľil-rÄĘľsi, BaĘżal Rôš, RešbaĘżal, RÄs an-NÄqĹ«ra, RaĘľs an-NÄqĹ«ra, ר×ש ×”× × ×§×¨×”, Ǧabal al-Karmil, جبل الŮرمل, Har ha-Karmel, הר כרמל, KarmÄ“los",2,"33.09409","35.10378","KUR.ba-Ęľa-li-ra-Ęľa-si/KUR.ba-Ęľa-li-ra-si, KUR.ba-aĘľ-li-ra-aĘľ-si/KUR.ba-aĘľ-li-ra-si","mountain","Mediterranean coast, Phoenicia, Syria","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 40–41 (BaĘľali-raĘľsi)" +183,"BaĘľil-gazara","BaĘľil-gazara, Ä azÄ«r (?), Ghazir (?), (?) غزير","–","34.01823","35.66611","URU.ba-il-ga-za-ra","town","Syro-Palestine","Bagg RGTC 7 1: 41–42" +184,"BaĘľli-ṢapĹ«na","Cassius, Äžabal al-AqraĘż",2,"–","–","–","mountain","–","Helsinki Atlas: 7 (map 2 B5)" +174,"Baṣiru","Baṣiru, Tell Bazi","–","36.42789","38.27684","–","–","–","–" +185,"Beer-šeba","Beersheva, Beer-ševa, Tell es-Saba'","–","31.24500206386151","34.84073003359802","–","–","–","–" +186,"Ben Shemen Forest","Assyrian name unknown, Ben Shemen Forest","–","31.93558","34.96537","–","monument","Israel","–" +187,"Benuḫše","Benuḫše","–","–","–","URU.be-nu-uḫ-še (URU.be?-nu?-uḫ?-še?)","town","Central Assyria (?)","Bagg RGTC 7 2/1: 102" +191,"Bethlehem","Bethlehem, Betlem, Bethleem, Bet Leḥem, Bait Laḥm, בֵּית לֶחֶם, بيت Ů„ŘŮ…, ΒηθλεÎÎĽ","–","31.70306","35.19556","بيت Ů„ŘŮ…, בֵּית לֶחֶם, ΒηθλεÎÎĽ","town","Israel, Iaʾūdu","–" +192,"Bethsaida","Gešur (?), Ṣaydȧn, Bethsaida, Báşąt Ṣẹdȧ, Bait ṢaidÄ, بيت صيدا, Beit Tsaida, בית צידה, Ioulias, Iulias, Julias, Ἰουλίας, al-MaṣʿadÄ«ya, Al Musâ€adÄ«yah, المسعدية, al-ĘżAraǧ, Tell ĘżAraj, Tel ĘżAraj, El Araj, at-Tall","–","32.9103","35.63066","–","fortified city","Gešur (?)","<a href=https://pleiades.stoa.org/places/678065>Pleiades: Bethsaida</a>, <a href=https://bethsaidaarchaeology.org>Bethsaida Excavations Project</a>, <a href=https://www.elarajexcavations.com/updates>El Araj Excavation Project</a>" +193,"BeĘľrĹ«","BiĘľrĂ», BeĘľrĂ», BeĘľrĹ«, Biruta, BiĘľrutu, BiĘľrĹ«tu, bjrt, đ¤‰đ¤“đ¤•â€Žđ¤, Berytos, BÄ“rytos, Berytus, Laodikeia, Colonia Iulia Augusta Felix, Beirut, BairĹ«t, بَيْرُŮŘŞ",1,"33.89942","35.50818","URU.bi-iĘľ-ru-u, đ’Ś·đ’‰đ’€Şđ’Š’đ’Ś‹, URU.bi-iĘľ-ru-Ăş, đ’Ś·đ’‰đ’€Şđ’Š’đ’Ś‘, đ¤‰đ¤“đ¤•â€Žđ¤","city, seaport","Phoenicia, ṢīdĹ«nu, Lebanon","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 43–44 (BiĘľrĂ»), <a href=https://pleiades.stoa.org/places/678060>Pleiades: Beirut</a>" +194,"Bikni","Bikni, DamÄvand (?), ŮŮه دماŮند (?), Ququ, Ú©Ůه Ů‚ŮŮ‚Ů",2,"34.2071","51.031","KUR.bi-ik-ni, KUR.bi-ik-nu","mountain","MÄdÄja, Iran","Helsinki Atlas: 7 (map 6 D5), Bagg RGTC 7 3/1: 105–106" +197,"BirgiĘľ","BirgiĘľ, BarÄźÄ, Barja, برجا","–","33.64972","35.44278","URU.bi-ir-gi-iĘľ","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 42–43" +198,"Birtu (2)","Birtu, BÄ«rtu","–","–","–","URU.ḪAL.ṢU","city","–","RGTC 7 2/1: 105–106 (Birtu 2)." +199,"Birtu (3)","Birtu, BÄ«rtu","–","–","–","URU.ḪAL.ṢU","town","–","RGTC 7 2/1: 106 (Birtu (3))." +200,"Birtu-ša-Adad-rÄ“manni","Birtu-ša-Adad-rÄ“manni, Birat-ša-Adad-rÄ“manni, Fort Adad-rÄ“manni, PanÄźvÄ«n (?), بينجŮين, پنجŮین","–","35.62054","45.94908","URU.bir-tu-ša-<sup>m</sup>10-rĂ©m-a-ni, URU.ḪAL.ṢU-<sup>md</sup>IM-rĂ©m-a-ni, URU.ḪAL.ṢU-ša<sup>md</sup>10-rĂ©m-a-ni, URU.ḪAL.ṢU-<sup>md</sup>IĹ KUR-rĂ©m-a-ni","town, fortress","MÄzamua, Mannea, Iraq","Bagg RGTC 7 3/1: 110" +201,"Biruatti","Biruatti","–","–","–","KUR.bi-ru-at-ti","mount","–","Parpola Toponyms: 75" +202,"Bisuru","Bisuru, BaĹ›ar, Basalla, Bašar, Bisir, Bešri, Äžabal BišrÄ«, جبل البشري",1,"35.35449","39.28944","KUR.bi-su-ru, KUR.bĂ©-eš-ri (MA)","mountain","Syria","Helsinki Atlas: 7 (map 9 B1), Bagg RGTC 7 2/1: 107" +241,"Bitirume","Bitirume, Botrys, Î’ĎŚĎ„ĎĎ…Ď‚, al-BatrĹ«n, BatroĂ»n, البترŮن","–","34.25528","35.65806","URU.bi-ti-ru-me","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 51, <a href=https://pleiades.stoa.org/places/668214>Pleiades: Botrys</a>" +242,"Biturra","Biturra, Piturra, Beidul, Bedol, بيدŮŮ„","–","36.86618","43.2352","URU.BI-it-ur-ra, URU.bi-it-ur-ra, URU.pĂ-it-ur-ra","town","Central Assyria, Iraq","Bagg RGTC 7 2/1: 121" +243,"Borsippa","Borsippa, Barsip, Birs NimrĹ«d, Birs Nimrud, برس نمرŮŘŻ",1,"32.39245","44.3425","bar-sip.KI, BĂR.SIPA, BĂR.SĂŤPA.KI, bur-sip.KI, DUMU-bar-sip.KI, DUMU-BĂR.SIPA.KI, DUMU.MEĹ .bar-sip.KI, DUMU.MEĹ -BĂR.SIPA.KI, LĂš.BĂR.SIPA.KI.MEĹ , LĂš.BĂR.SIPA.MEĹ , LĂš.DUMU-BĂR.SIPA.KI, LĂš.DUMU.MEĹ -BĂR.SIPA.KI, URU.BĂR.SIPA, URU.BĂR.SIPA.KI","prov. capital","Babylonia, Iraq","Helsinki Atlas: 7 (map 10 D4), Bagg RGTC 7 3/1: 98–100 (Barsip)" +245,"Bulijanu","Bulijanu, Buliiana, Buliana, Buliyana, BÄlÄne/YĂĽceköy (?), Tall Abade (?)","–","37.60477","41.3396","URU.bu-li-ia-na, URU.bu-li-ia-ni","town, pass","Ḫabḫu, Turkey","Bagg RGTC 7 2/1: 125" +246,"Bumame","Bumame, Tall MamĹ«, ŘŞŮ„ مامŮ","–","35.93126","37.02406","URU.bu-ma-me","town","ḪamÄt, Syria","Bagg RGTC 7 1: 55" +1063,"Bunais","Bunais, Silsilat JibÄl Azmar, سلسلة جبال ازمر, Jabal ŢÄslĹ«jah, جبل طاسلŮجة, KÄnÄ«rÄš-Pass (?), Ůانى Ú•Ű•Ř´, QandÄ«l DÄġ (?), Silsilat JibÄl QandÄ«l (?), سلسلة جبال قنديل","–","35.63017","45.47669","KUR.bu-na-is","mountain, pass","Zamua, Iran (?), Iraq (?) ","Bagg RGTC 7 3/1: 161–162, Edmonds (1957), <i>Shar BazhĂŞr and the Basin of the Qalachuwalan</i>. The Geographical Journal 123/3, 318–328" +1064,"Bunisa","Bunisa, BunÄsi, Bunisu","–","–","–","URU.bu-na-a-si, KUR.bu-ni-sa-a-a, URU.bu-na-i-sa-a-a, URU.bu-ni-sa-a-a","fortified city, country","Zamua, Iran (?), Iraq (?) ","Bagg RGTC 7 3/1: 162, Edmonds (1957), <i>Shar BazhĂŞr and the Basin of the Qalachuwalan</i>. The Geographical Journal 123/3, 318–328" +248,"Buramma","Buramma, Purammu, Burrim","–","–","–","URU.bu-ram-ma","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 126" +252,"Buruqi","Buruqi, Buruqu","–","–","–","URU.bu-ru-qi","town","GĹ«zÄna (?)","Bagg RGTC 7 1: 128–129 (Buruqi 1)" +253,"Buruqu","Buruqu, Buruqi","–","–","–","URU.bu-ru-qi, URU.bu-ru-qa-a.a","town","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 129 (Buruqi 2)" +254,"Burušḫanda","Burušhanda, AçemhöyĂĽk (?)",4,"38.41158900602762","33.83548385023444","–","–","–","–" +1065,"Bustus","Bustus, Bustis, Buštus, KangÄvar (?), کنگاŮر","–","34.50164","47.96017","KUR.bu-us-ti-is, KUR.bu-us-tu-us, KUR.bu-uš-tu-us, URU.bu-us-tu-us","district","MÄdÄja, Iran","Bagg RGTC 7 3/1: 163–164" +258,"Buto","Buto, Tell el-Fara'in","–","31.19626755366928","30.7426378739966","–","–","–","–" +257,"ButÄmu","ButÄmu, Bdama (?), بداما (?), BeitÄn (?), BÄdÄmÄ (?), Butaynah (?), بتينة (?), BitammÄ(?)","–","36.46136","36.83682","URU.bu-ta-a-mu","town","Pattinu, Syria","Bagg RGTC 7 1: 56, Astour (1963), JNES 22, Place-Names from the Kingdom of Alalaḫ...: 224, map" +256,"Bušâ","Bušâ","–","–","–","URU.bu-šá-a","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 130" +255,"Buṣruna","Buṣruna, Bosra, Buṣra'","–","32.5198850290294","36.48140619600834","–","–","–","–" +159,"BÄbili","BÄbil, Babylon",1,"32.54036","44.42633","–","capital, city","Babylonia","Helsinki Atlas: 7 (map 10 D4)" +1059,"BÄra","BÄra, Baragird, Girdabor, GirdÄbur, جردبŮر","–","35.70139","45.19889","URU.ba-a-ra, URU.ba-ra-a-a","town","Zamua, Iraq","Bagg RGTC 7 3/1: 95–96" +177,"BÄza","BÄza","–","–","–","KUR.ba-a-za","territory","Central Assyria, Ḫabḫu","Bagg RGTC 7 2/1: 99" +178,"BÄzi","BÄzi, BÄzu","–","–","–","KUR.ba-zi","territory","North Mesopotamia","Bagg RGTC 7 2/1: 99 (BÄzi 1)" +179,"BÄzi 2","Bazi, BÄzi, BÄzu","–","–","–","URU.ba-zi","town","Central Assyria (?)","Bagg RGTC 7 2/1: 99 (BÄzi 2 (?))" +180,"BÄzu","BÄzu, BÄṣi, Bazza, Baz, BÄ«t-BÄzi, BÄṣ, Baṣ, Bezu, BÄsu, Strait of Hormuz, Azraq Oasis","–","25.99163","49.49675","KUR.ba-a-zi, KUR.ba-a-zu, KUR.ba-az-zi, URU.ba-a-su, URU.ba-a-ṣi, URU.ba-zi, LĂš.be-zu","territory, land, state","Arabian Peninsula","Bagg RGTC 7 2/1: 100–101" +188,"BÄ“t-el","Bet-el, Betel, Beitin?","–","31.92623433858433","35.23912780857168","–","–","–","–" +189,"BÄ“t-Ĺ ean","Bet Shean, Bit-Sani, Scythopolis, Tell el-Hosn","–","32.50419181537359","35.50300346740403","–","–","–","–" +190,"BÄ“t-Ĺ emeš","Bet-Ĺ emeš, Bet-Shemesh, Tel Bet-Shemesh","–","31.75189849886516","34.97455573812866","–","–","–","–" +195,"BÄ«rÄti (city)","BÄ«rÄti, Birtu, ḪararÄti, Ḥadīṯa",3,"34.178","42.376","–","city","–","Helsinki Atlas: 7 (map 10 B2)" +196,"BÄ«rÄti (fortress)","BÄ«rÄti, BirthĂ´n",3,"37.79383","40.97216","–","fortress","–","Helsinki Atlas: 7 (map 3 D3)" +203,"BÄ«t-AbdadÄni","BÄ«t-AbdadÄni, AbdadÄna",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 D1)" +204,"BÄ«t-Abu-ilÄʾī","BÄ«t-Abu-ilÄʾī, Ä€l-Abu-ilÄʾī, BÄ«t-AbÄ«-IlÄja","–","–","–","–","city","east ǦazÄ«ra","RGTC 7 2/1: 108-109" +206,"BÄ«t-Adad-erÄ«ba","BÄ«t-Adad-erÄ«ba, Bit-Adad-eriba, Tell Baqaq 1-2, Tell BaqÄq 2, Tall Baqqaq 2, Tall BuqÄq 2",1,"36.68995","42.93595","URU.É-10-SU, URU.É-<sup>m</sup>10-SU","town","Central Assyria, TamnĹ«na province, Iraq","Helsinki Atlas: 7 (map 4 B5), Bagg RGTC 7 2/1: 109–110" +205,"BÄ«t-Adad-Ä“reš","BÄ«t-Adad-Ä“reš, BÄ“t-Adad-Ä“reš","–","–","–","URU.É-m10-KAM-eš","town","Central Assyria (?)","Bagg RGTC 7 2/1: 109" +207,"BÄ«t-Adini","BĂŞt-eden, bytĘżdn",3,"–","–","–","territory","–","Helsinki Atlas: 7 (map 3 B4)" +208,"BÄ«t-AgĹ«si","BÄ«t-AgĹ«si, Arpadda",2,"–","–","–","country","–","Helsinki Atlas: 7 (map 2 D4)" +209,"BÄ«t-AmmÄn","BÄ«t-AmmÄn, Ammon, ĘżAmmÄn",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 7 D5)" +210,"BÄ«t-AmukÄni","BÄ«t-AmukÄni",2,"–","–","–","territory","–","Helsinki Atlas: 7" +211,"BÄ«t-BagÄia","BÄ«t-BagÄia, KÄr-IssÄr, BÄ«t-GabÄia, BÄ«t-Gabia","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110, Parpola Toponyms: 78" +213,"BÄ«t-BarrĹ«a","BÄ«t-BarrĹ«a, BorĹ«Äźidr",4,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 D3)" +212,"BÄ«t-BaḫiÄni","BÄ«t-BaḫiÄni",2,"–","–","–","country","–","Helsinki Atlas: 7 (map 3 C4)" +214,"BÄ«t-Bunakki","BÄ«t-Bunakki, Hinemini",4,"33.22933","47.21133","–","city","–","Helsinki Atlas: 7 (map 11 C3)" +215,"BÄ«t-Daganna","BÄ«t-Daganna, BÄ«t-Dagan, BÄ«t-DagÄn, BÄ“t Daǧan, Bejt Dagan, BÄ“t DaÄźan, בית דגן, Beit Dagon, Beth-dagon, בֵּית־דָּגוֹן, Beit Dajan","–","32.00191","34.82977","URU.É-da-gan, URU.É-da-gan-na, בֵּית־דָּגוֹן","town","Pilistu, IsqalĹ«na, Palestine, Israel","Bagg RGTC 7 1: 48, Parpola Toponyms: 80 (BÄ«t-DagÄn)" +216,"BÄ«t-DakkĹ«ri","BÄ«t-DakkĹ«ri",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 10 D4)" +217,"BÄ«t-DÄ“rÄja","BÄ«t-DÄ“rÄja, BÄ«t-DÄ“rÄya, BÄ«t-DÄ“rÄia, Tamertu-ša-BÄ«t-DÄ“rÄja, BÄdarÄjÄ, Badra (?), Badrah (?), بدرة (?)","–","33.11508","45.93344","URU.É-de-ra-a-a, É-<sup>m</sup>de-ra-a-a","city","DÄ“ru province (?), Iraq (?), northern Levant (?)","Bagg RGTC 7 2/1: 112" +218,"BÄ«t-GabbÄri","BÄ«t-GabbÄri, SamĘľalla, SamĘľal",2,"–","–","–","territory, state, province","Syria","Helsinki Atlas: 7 (map 2 C4)" +219,"BÄ«t-Gisimeja","BÄ«t-Gisimeja, ḪÄn al-QÄsimÄ«ya (?), مخيم القاسمية (?), القاسمية (?), BiqsmayyÄ (?), BoqsmaĂŻya (?), بقسميا (?), BišmizzÄ«n (?), BechmizzĂ®ne (?), بشمزين (?)","–","34.25194","35.765","URU.É-gi-si-me-ia, URU.É-mgi-si-me-ia","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 49" +225,"BÄ«t-IakÄ«n","BÄ«t-IakÄ«n, BÄ«t-YakÄ«n",2,"–","–","–","territory","Babylonia, MÄt-tâmti, Iraq","Helsinki Atlas: 7 (map 16 C2)" +226,"BÄ«t-ImbĂ®","BÄ«t-Imbi, BÄ«t-ImbÄ«ja","–","–","–","URU.É-<sup>m</sup>im-bi-i, URU.É-<sup>md</sup>im-bi-i, URU.É-im-bi-i, URU.É-im-bi-ia, URU.É-im-bi-Ăa, É-<sup>m</sup>im-bi-ia, URU.É-<sup>m</sup>im-bi-ia, URU.É-<sup>m</sup>im-bi-Ăa","fortress, city","Elam, ArÄši","Bagg RGTC 7 3/1: 133 (BÄ«t-ImbÄ«ja), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +1060,"BÄ«t-Ištar","BÄ«t-Ištar, BÄ«t-IssÄr, RavÄnsar, RawÄnsÄ«r, رŮانسر","–","34.71208","46.65129","KUR.É-<sup>d</sup>15, URU.É-15, URU.É-<sup>d</sup>15, URU.É-<sup>d</sup>INNIN","town","Parsua (?), MÄdÄja (?), Iran ","Bagg RGTC 7 3/1: 134" +227,"BÄ«t-Kapsi","BÄ«t-Kapsi, BÄ«t-Kabsi, BÄ«jÄr (?), BÄ«ÄźÄr (?), بيجار (?)",2,"–","–","DUMU-<sup>m</sup>kap-si, URU.É-kap-si, URU.kap-si, KUR.É-kap-si-a-a","territory","Iran","Helsinki Atlas: 7 (map 11 C1), Bagg RGTC 7 3/1: 137–138" +1061,"BÄ«t-Kubatti","BÄ«t-Kubatti, BÄ«t-Kubati, Kird Qariyat ÄŚiarza (?), Tepe Qebristan (?)","–","35.09844","45.54416","É-ku-bat, É-<sup>m</sup>ku-bat-ti","fortified city","MÄt-kaššî, Iraq","Bagg RGTC 7 3/1: 140" +228,"BÄ«t-PurĹ«taš","BÄ«t-PurĹ«taš",3,"–","–","–","country","–","Helsinki Atlas: 7 (map 2 B2)" +229,"BÄ«t-Ramannu","BÄ«t-Ramannu","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 2/1: 117" +1062,"BÄ«t-Ramatua","BÄ«t-Ramatua, NÄrtu-šaplÄ«tu, RĹ«dḫÄne-ye MalÄyer (?), RĹ«d-e GÄmÄsÄ«Äb (?), رŮدخانه گاماسیاب (?)","–","–","–","É-<sup>m</sup>ra-ma-tu-a, É-<sup>m</sup>ra-ma-ti-ia","territory","MÄdÄja, Iran","Bagg RGTC 7 3/1: 144–154" +230,"BÄ«t-Ruḫūbu","BÄ«t-Ramannu, Beth Rehov",1,"–","–","–","country","–","Helsinki Atlas: 7 (map 8 A3)" +231,"BÄ«t-Sagbat","BÄ«t-Sagbat, Ecbatana, Ekbatana,Hamadan, ḪamadÄn, Teppe-ye Hekmatana",3,"34.80700819452446","48.51727288555129","–","city","–","Helsinki Atlas: 7 (map 11 D2)" +836,"BÄ«t-SangibĹ«ti","BÄ«t-SangibĹ«ti, SangibĹ«tu, SingibĹ«tu, Ĺ ingibutu, BÄ«t-SingibĹ«ti, SingibĹ«ti, SangibĹ«ti, Ĺ ÄhÄbÄd Plain, EslÄmÄbÄd-e Gharb, اسلام آباد غرب, Ĺ ÄhÄbÄd-e Ä arb, شاه آباد غرب",2,"34.1089","46.52988","KUR.É-sa-an-gi-bu-te, KUR.É-sa-an-gi-bu-ti, KUR.É-si-in-gi-bu-ti, KUR.sa-an-gi-bu-ti, KUR.si-in-gi-bu-ti, KUR.si-in-gi-bu-te, KUR.si-in-gi-bu-tĂş, KUR.sin-gi-bu-te, KUR.šin-gi-bu-tĂş, URU.É-sa-an-gi-bu-ti, KUR.sin-gi-bu-ta-a-a","territory","MÄdÄja, ḪarḫÄr province, Iran","Zimansky (1990), <i>Urartian Geography and Sargon's Eighth Campaign</i>, JANES 49/1: 15, Parpola Toponyms: 88, 303, Bagg RGTC 7 3/1: 148–149 (BÄ«t-SangibĹ«ti 1), Helsinki Atlas: 16, 30 (SangibĹ«tu (2), map 11 B2)" +236,"BÄ«t-TÄbti","BÄ«t-TÄbti, Dašt-e KavÄ«r",2,"–","–","–","region","–","Helsinki Atlas: 7" +237,"BÄ«t-ZamÄni","BÄ«t-ZamÄni, Ä€midu, AmÄ“du, Amidu, Amidi, Amida, Amedu, Ä€mid, Diyarbakir, Diyarbakır",1,"–","–","–","province","Turkey","Helsinki Atlas: 8 (map 3 C2)" +240,"BÄ«t-Zualza","BÄ«t-Zualza, BÄ«t-Zualzaš",3,"–","–","KUR.É-zu-al-za, KUR.É-zu-al-za-áš","territory","Iran, BÄ«t-SangibĹ«ti (?)","Bagg RGTC 7 3/1: 157–158, Helsinki Atlas: 8 (map 11 C2)" +239,"BÄ«t-ZÄ«zĂŞ","BÄ«t-ZÄ«zĂŞ","–","–","–","–","town","GĹ«zÄna","Bagg RGTC 7 2/1: 123/–124, PNA 2/2: 753" +238,"BÄ«t-zitti","BÄ«t-zitti, BÄ«t-Zitti, ZaitÄ, ZeitÄ, زيتا","–","33.5025","35.40028","URU.É-zi-it-ti, URU.É-zi-it-tĂş","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 54–55" +234,"BÄ«t-Ĺ abÄia","BÄ«t-Ĺ abÄia",3,"34.46333","41.5045","–","town","–","Helsinki Atlas: 7 (map 9 D2)" +235,"BÄ«t-Ĺ ilÄni","BÄ«t-Ĺ ilÄni, BÄ«t-SilÄni, Ĺ ilÄni","–","–","–","KUR.É-msi-la-a-ni, KUR.É-ši-la-a-ni, KUR.É-<sup>m</sup>ši-la-a-ni, <sup>m</sup>ši-la-a-ni, KUR.É-<sup>m</sup>šil-la-na","country, territory, tribe","Southern Babylonia","–" +233,"BÄ«t-ša-muḫḫi-Äli","BÄ«t-ša-muḫḫi-Äli, BÄ«tu-ša-muḫḫi-Äli","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/1: 119" +220,"BÄ«t-ḪalupĂŞ","BÄ«t-ḪalupĂŞ",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 9 C1)" +221,"BÄ«t-Ḫamban","BÄ«t-Ḫamban, Cambadene",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 C2)" +222,"BÄ«t-ḪazaĘľil","BÄ«t-ḪazaĘľil, Dimašqa, Damascus",1,"–","–","–","country","–","Helsinki Atlas: 7 (map 8 B3)" +223,"BÄ«t-ḪumrĂ®","BÄ«t-ḪumrĂ®, Israel, byt Ężmry, BÄ«t-Ḫumria",1,"–","–","–","country","Israel","Helsinki Atlas: 7 (map 7 C4)" +224,"BÄ«t-ḪurÄpĂ®","BÄ«t-ḪurÄpĂ®, BÄ«t-ḪurÄbĂ®","–","–","–","URU.É—ḫu-ra-pi-i, URU.É—ḫu-ra-bi-i","town","Central Assyria, Nineveh province (?)","Bagg RGTC 7 2/1: 115" +232,"BÄ«t-ṢupĹ«ri","BÄ«t-ṢupĹ«ri, BÄ«t-Ṣupuri, bt ṣpr, đ¤đ¤• đ¤‘đ¤đ¤“‎, Ornithopolis, OrmithĹŤnpolis, Ornithon Polis, á˝Ďνίθων πόλις, Tell BurÄq (?), Tall al-BurÄq (?), ĘżAdlĹ«n (?), عدلŮن (?), ĘżAin Ṣaufar (?), عين صŮŮر (?), ṢfÄrÄ«ya/Ṣfaray/Bṣfaray (?), صŮاراي (?), MazraĘżat BṣaffĹ«r (?), مزرعة بصŮŮ‘Ůر (?)",4,"33.55528","35.49389","URU.É-ṣu-pu-ri, URU.É-<sup>m</sup>ṣu-pu-ri, bt ṣpr, đ¤đ¤• đ¤‘đ¤đ¤“‎","town","Phoenicia, ṢīdĹ«nu, Lebanon","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 53–54, <a href=https://pleiades.stoa.org/places/678000>Pleiades: â€Ad Nonum’/Ornithon Polis?</a>" +244,"BĹ«ia","BĹ«ia, Cham Kizil",2,"–","–","–","river","–","Helsinki Atlas: 7 (map 11 B1)" +247,"BĹ«r-marʾīna","BĹ«r-marʾīna, BurmarĘľina, Burmarina, brmrn, đˇđˇ“đˇŚđˇ“đˇŤ, MarinÄ, Marinâ ša BÄ«t-Adini, MarÄ«na, MarÄ«na ša šadĂŞ, Tell Ĺ iʾūḫ FawqÄni, Tell esh-Shiyukh Fawqani, Tell Shiukh Fawqani, Tall Ĺ ijūḫ FawqÄnÄ«, ŘŞŮ„ الشيŮŘ® ŮŮقاني",1,"36.78761","38.03595","URU.bur-mar-Ęľi-na, URU.ma-ri-na-a šá É-ma-di-ni, brmrn, đˇđˇ“đˇŚđˇ“đˇŤ","town","BÄ«t-Adini, Syria","Helsinki Atlas: 8 (map 3 B4)" +251,"BĹ«ru-WÄ“r","BĹ«ru-WÄ“r (?), Buresa (?)","–","–","–","URU.bu-ru-e-er (?), URU.bu-ru-e-sa (?)","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 129" +249,"BĹ«rÄte","BĹ«rÄte, BĹ«rÄti, BurÄti, Burate, Burati","–","–","–","URU.bu-ra-a-te","town","ḪÄbĹ«r triangle","Bagg RGTC 7 1: 127 (BĹ«rÄte 1), Zadok 1995: 237, 3.6.4.5" +250,"BĹ«rÄti","BĹ«rÄte, BĹ«rÄti, BurÄti, Burate, Burati","–","–","–","URU.bu-ra-a-ti, URU.bu-ra-a-te, URU.ḪAL.ṢU","town","Elam","Bagg RGTC 7 1: 127 (BĹ«rÄte 2), Parpola Toponyms: 95 (BurÄti)" +259,"Daban","Daban, RĹ«dḫÄne-ye Gangir",3,"–","–","–","river","–","Helsinki Atlas: 8 (map 11 A3)" +261,"Dadiualla","Dadiualla, Dadi-ualla, Tall al-Ḥusainiyeh, HusaynÄ«yah, Řسينية","–","36.68203","43.24538","URU.da-di-Ăş-al-la","town","Central Assyria, TalmĹ«sa province","Bagg RGTC 7 2/1: 131" +262,"Daduni","Daduni","–","–","–","KUR.da-du-ni","mountain (?), territory (?)","Zabban","Bagg RGTC 7 2/1: 131" +1067,"Daiaeni","Daiaeni, Dajaeni, DaiÄ“nu, DaiÄ“ni, DajÄ“ni, Diaueḫe, Taochoi, Tauchoi, Τάοχοι","–","40.5","41.5","KUR.da-ia-a-ni, KUR.da-ia-e-ni, KUR.da-ia-ni, URU.da-ia-e-ni, KUR.da-ie-ni","territory","NaĘľiri, Uraráąu, Turkey","Bagg RGTC 7 3/1: 167–168, <a href=https://pleiades.stoa.org/places/857343 >Pleiades: Taochoi</a>, <a href=https://books.openedition.org/cdf/4439>MTT I/2</a>" +263,"Daiašeti","Daiašeti, Dajašeti, Daiašetu, Sitha (?), ruins of al-Aswad (?)","–","33.51151","42.80401","URU.da-ia-še-ti","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 1: 132, <a href=https://pleiades.stoa.org/places/894008>Pleiades: Idu/Diacira/Hit</a>" +264,"Dalaimme","Dalaimme, DalhĹ«n, Dalhoun, دلهŮن","–","33.62667","35.4675","URU.da-la-im-me","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 57–58" +265,"Damdammusa","Damdammusa, Damdammusu, Damdammusi, Dandammusu, Kaziktepe (?), Pornak (?), Sardebar (?), Sardeoua (?), TauĹźantepe (?), Aktepe (?)",4,"37.72463","40.56995","URU.da-am-da-mu-sa, URU.dam<sup>am</sup>-dam-mu-si, URU.dam<sup>am</sup>-dam-mu-su, URU.dam-dam-mu-sa","city","Nirbu, BÄ«t-ZamÄni, Turkey","Bagg RGTC 7 2/1: 133–134, Bagg RGTC 7 2/2: 740 (Aktepe, Dandammusu), 748 (Pornak, Damdammusu, Sinabu), <a href=https://pleiades.stoa.org/places/874681>Pleiades: Sardeoua/â€Sardebar’</a>" +266,"Dan","Tell Qadi","–","33.2483851722403","35.65224970650611","–","–","–","–" +268,"Danabu","Danab, Dababu, Din<sup>e</sup>hÄbâ, Dinhabah, ×“Ö´ÖĽ× Ö°×”Ö¸×‘Ö¸×”, Danaba, Danova (?), Ḏunaiba (?), ṢaidnÄyÄ (?), صيدنايا (?), Ḏunaiba (?), دنيبة (?), Tall Ä€bil, Abila Dekapoleos/Seleukeia, QuwailibÄ«, Ḏunaiba, ذنيبّة",3,"32.68241","35.8689","KUR.da-na-bi, URU.da-an-a-bi, URU.da-na-bi, URU.da-na-bu","town, fortified city","Dimašqa, Syria (?), Jordan (?)","Helsinki Atlas: 8 (map 8 A3), Bagg RGTC 7 1: 59–60, <a href=https://pleiades.stoa.org/places/668236>Pleiades: â€Danova’</a>, <a href=https://pleiades.stoa.org/places/677992>Pleiades: Abila Dekapoleos/Seleukeia</a>" +1066,"Daqalu","Daqalu, Daqala, DagalÄ, Til-Daqalu, Diqlâ, דִּקְלָה, Beth Deqla, Bayt-Dagalâ","–","31.77163","45.20362","URU.da-qa-la, URU.da-qa-lu","fortified city","BÄ«t-AmukkÄni, Babylonia, Iraq","Bagg RGTC 7 3/1: 172, Zadok (1985), <i>Zur Geographie Babyloniens während des sargonidischen, chaldäischen, achämenidischen und hellenistischen Zeitalters</i>, Die Welt des Orients 16, p. 60" +270,"Dawali","Assyrian name unknown, Dawali, DawÄlÄ«, Ad-DawÄlÄ«, Ad DawÄlÄ«","–","34.45357","41.99118","–","–","Sūḫu, Iraq","RIMB 2: 309" +271,"Dedan","Dedan (?)",4,"26.66642322233715","37.91158927555229","–","–","–","–" +273,"Diati","Diati","–","–","–","–","town","Assyria","RGTC 7 2/1: 140–141" +274,"Diban","Diban","–","31.50182","35.77646","–","–","–","–" +275,"Dibar (mountain)","Dibar, Äžabal ĘżAbd al-ĘżAzÄ«z",2,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 3 D4)" +276,"DibirÄti","DibirÄti","–","–","–","–","town","Arrapḫa province (?)","RGTC 7 2/1: 141" +277,"Diglat","Diglat, Idiglat, Tigris, DiÄźla",1,"–","–","–","river","–","Helsinki Atlas: 8 (map 10 C2)" +278,"Dilbat","Dilbat, Tell Dulaim, Tell Dailam, Deilam",1,"32.29571615001174","44.46622078649037","–","city","–","Helsinki Atlas: 8 (map 10 D4)" +280,"Dimašqa","Dimašqa, Ĺ a-imÄ“rīšu, Aram, Damascus, Dimašq",1,"33.51012","36.30921","–","prov. capital","Syria","Helsinki Atlas: 8 (map 8 B3)" +281,"Dinanu","Dinanu, dynn, đˇđˇ‰đˇŤđˇŤ, Tall AbĹ« Danna, Tell Abu Danne, AbĹ« DÄnÄ, أب٠دانا, AbĹ« Z̧annah, أب٠ظنة","–","36.1843","37.45152","URU.di-na-nu, đˇđˇ‰đˇŤđˇŤ","city","BÄ«t-AgĹ«si","Bagg RGTC 7 1: 62" +282,"Diniktum","Diniktum (?)",4,"32.8297802583831","45.34726149800385","–","–","–","–" +283,"DiqĹ«qÄ«na","DiqĹ«qÄ«na, DiqukÄ«na, Diqukina, ṬÄwĹ«q (?), DaqĹ«q (?), DaqĹ«qÄ (?), داقŮŮ‚","–","35.13923","44.44907","URU.di-qu-qi-na, KUR.di-qu-ki-na, URU.di-qu-qi-na-a-a","town","Laḫīru (1) (?), Iraq","Bagg, RGTC 7 2/1: 143–144, " +284,"Dohuk","Dohuk, Dohok","–","36.86249","42.91942","–","monument","Iraq","–" +285,"Dummutu","Dummutu, Dummete, Dummetu, ḤalabÄ«ya, Řلبية, Tall Ḏimme (?)",4,"35.68683","39.82767","URU.du-um-me-te, URU.du-um-mu-tĂş","town","BÄ«t-Adini","Helsinki Atlas: 8 (map 3 C5), Bagg RGTC 7 1: 62–63, <a href=https://pleiades.stoa.org/places/894185>Pleiades: Zenobia</a>" +287,"Dunnu-ša-Uzibi","Dunnu-ša-Uzibi, Giricano","–","37.81718029603009","40.75010515326059","–","–","–","–" +286,"DunnÄte","DunnÄte","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/1: 146" +313,"Duʾūa","Duʾūa, DuĘľa, DuĘľua","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/1: 164" +260,"DÄbigu","DÄbigu, Dabigu, DÄbiq, Adabiq, Adabig, Dabekon, Dabigu, Dabekov, Tell Dabiq, Tall DÄbiq, ŘŞŮ„ دابق",1,"36.53976","37.26849","URU.da-bi-gi, URU.da-bi-gu","town, fortified city","BÄ«t-Adini, Syria","Helsinki Atlas: 8 (map 2 D4), Bagg RGTC 7 1: 57 (Dabigu), <a href=https://pleiades.stoa.org/places/727743778>Pleiades: Dabigu</a>" +267,"DÄna","DÄna, ad-DÄna, ad-DÄnÄ, الدانا",2,"36.21254","36.76998","UU.da-a-na","town","Syria, Unqi (?), ḪamÄt (?)","Helsinki Atlas: 8 (map 2 C4), Bagg RGTC 7 1: 58" +269,"DÄri-abu (place)","DÄri-abu","–","–","–","URU.dĂ -ri-AD","town","Central Assyria (?)","Bagg RGTC 7 2/1: 136" +272,"DÄ“ru","DÄ“ru, DÄ“r, Der, DĂ®r, BÄ«t-DÄ“rÄja (?), BÄ«t-DÄ“rÄia (?), Tell ĘżAgar (near Badra), Tell Aqar, Tall al-ĘżAqar, بتل عقار, Badra, بدرة",1,"33.12467","45.93132","BĂ€D.KI, BĂ€D.AN.KI, de-e-ri, de-ri, KUR.de-e-ri, URU.BĂ€D, URU.BĂ€D.AN.KI, URU.de-e-ri, URU.de-eĘľ-ri, URU.de-ri, URU.de-ru","prov. capital, city, province","Iraq, DÄ“ru province","Helsinki Atlas: 8 (map 11 A3), Bagg RGTC 7 2/1: 138–140, <a href=https://pleiades.stoa.org/places/903013>Pleiades: Deru/Beth Daraya/Badra</a>" +288,"DĹ«r-AbīḫÄra","DĹ«r-AbīḫÄra, Ĺ aiḫ YaĘżqĹ«b al-YĹ«suf",4,"32.75","46.25","–","town","–","Helsinki Atlas: 8 (map 11 B4)" +289,"DĹ«r-Aššur","DĹ«r-Aššur, DĹ«r-Aššūr, Dur-Aššur, Atlila, Yasim Tepe (?), Tepe YÄsÄ«n (?), Yasin Teppe (?), Bakr Ä€wÄ (?), Bakr Awa (?), قرية بŮراŮه, بکراŮه, بەکراŮŰ•",4,"35.2216","45.9403","URU.at-li-la, URU.BĂ€D-aš-šur","prov. capital","Zamua, Iraq, Kurdistan","Bagg RGTC 7 3/1: 74–75 (Atlila), 186 (DĹ«r-Aššūr 2), Helsinki Atlas: 8 (map 11 A1)" +291,"DĹ«r-Aššur-ketti-lēṣir","DĹ«r-Aššūr-ketti-lēṣir, Dur-Aššur-ketti-lešer, Tell BdÄ“ri, Tell Bderi",1,"36.38745469204624","40.8138848265138","–","town","–","Helsinki Atlas: 8 (map 3 D4)" +290,"DĹ«r-Aššūr","DĹ«r-Aššūr, DĹ«r-Aššur","–","–","–","URU.BĂ€D-aš-šur","town","Iraq, east ǦazÄ«ra","Bagg RGTC 7 2/1: 148 (DĹ«r-Aššur 1)" +293,"DĹ«r-BalÄáąi","DĹ«r-BalÄáąi, DĹ«r-balÄáąi",4,"33.25","43.83333","–","town","–","Helsinki Atlas: 8 (map 10 C3)" +294,"DĹ«r-BalīḫÄia","DĹ«r-BalīḫÄia",4,"32.33333","45.56666","–","city","–","Helsinki Atlas: 8 (map 11 A4)" +296,"DĹ«r-BÄ“l-ilÄʾī","DĹ«r-BÄ“l-ilÄʾī, DĹ«r-BÄ“l-ilÄja","–","–","–","URU.BĂ€D-EN-DINGIR-a-a, URU.BĂ€D-<sup>m</sup>EN-DINGIR-a-a","town","Laḫīru (?)","Bagg RGTC 7 2/1: 150" +295,"DĹ«r-BÄ“l-ḪarrÄn-bÄ“lÄ«-uṣur","DĹ«r-BÄ“l-ḪarrÄn-bÄ“lÄ«-uṣur, Tell ĘżAbáąa",1,"35.9095","42.55683","–","town","–","Helsinki Atlas: 8 (map 4 B6)" +297,"DĹ«r-IakÄ«n","DĹ«r-IakÄ«n, Aginis, AmpÄ“",4,"31.5","47.25","–","city","–","Helsinki Atlas: 8 (map 16 C2)" +298,"DĹ«r-Illil","DĹ«r-Illil, DĹ«r-Enlil","–","–","–","–","fortress","Assyria, border with Mannea","–" +299,"DĹ«r-Katlimmu","DĹ«r-Katlimmu, DĹ«r-katlimmu, Dur-Katlimmu, DĹ«r-duklimmu, DĹ«r-aduklimmu, Magdala, Tell Šēḫ Ḥamad, Tell Sheikh Hamad, Dur-Katlimmu",1,"35.64538","40.74455","URU.BĂ€D-kat-lim-mu, URU.BĂ€D-a-du-ku-1-lim, URU.BĂ€D-a-duk-1-lim, URU.BĂ€D-duk-1-lim, URU.BĂ€D-kat-li-me","capital, city","LÄqĂŞ","Helsinki Atlas: 8 (map 9 C1), Bagg RGTC 7 1: 152–153" +300,"DĹ«r-Kurigalzu","DĹ«r-Kurigalzu, ĘżAqarqĹ«f, Aqar Quf",1,"33.35466","44.2008","–","city","–","Helsinki Atlas: 8 (map 10 D3)" +301,"DĹ«r-LadÄ«ni","Tell ḪÄlid",3,"32.33333","44.66666","–","city","–","Helsinki Atlas: 8 (map 10 D4)" +302,"DĹ«r-NanÄia","DĹ«r-NanÄia, DĹ«r-Nanâ, DĹ«r-NanÄja, Beonan, Bethonan","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/1: 154–155" +303,"DĹ«r-Papsukkal","DĹ«r-Papsukkal, MandalÄ«",4,"33.74939","45.5538","–","city","–","Helsinki Atlas: 8 (map 11 A3)" +304,"DĹ«r-Samsuiluna","Dur-Samsuiluna, Khafaja B","–","33.35091903696783","44.55058886950584","–","–","–","–" +305,"DĹ«r-SĂ®n-aḫḫē-erÄ«ba","DĹ«r-SĂ®n-aḫḫē-erÄ«ba, DĹ«r-SĂ®n-aḫḫē-erÄ«ba eššu, Aliḫu","–","–","–","URU.BĂ€D-<sup>m</sup>30-PAB.MEĹ -SU GIBIL, URU.a-li-ḫu, URU.a-li-ḫi","city","Assyria","Radner (2006), RlA 11: 64" +310,"DĹ«r-UndÄsi","DĹ«r-UndÄsi, Dur-Untaš, DĹ«r-Untaš, Chogha Zanbil, Côġa ZanbÄ«l",1,"32.00848520889885","48.52139171893702","–","city","–","Helsinki Atlas: 8 (map 17 A2)" +292,"DĹ«r-atÄnÄte","DĹ«r-atÄnÄte, DĹ«r-AtÄnÄte, Tawakkal",4,"35.70833","44.87683","–","town","–","Helsinki Atlas: 8 (map 10 D1), Bagg RGTC 7 2/1: 149." +309,"DĹ«r-tÄlitte","DĹ«r-tÄlitte, DĹ«r-TalÄ«ti, DĹ«r-tÄliti",3,"35.52667","44.8395","–","town","Central Assyria, Arzūḫina province","Helsinki Atlas: 8 (DĹ«r-Taliti, map 10 D1), RGTC 7 2/1: 162–163, RGTC 7 2/2: 420" +306,"DĹ«r-Ĺ amšī-Adad","Dur-Ĺ amši-Adad, Qal'at Halwanji (?)",4,"36.64406619565289","37.90457984690173","–","–","–","–" +308,"DĹ«r-Ĺ arrukku","DĹ«r-Ĺ arrukku",3,"33.25","44.58333","–","prov. capital","–","Helsinki Atlas: 8 (map 10 D3)" +307,"DĹ«r-Ĺ arrukÄ«n","DĹ«r-Ĺ arrukÄ«n, Dur-Ĺ arrukin, Dur-Ĺ arruken, Khorsabad, ḪorsÄbÄd, Khursabad, Ř®Ůرسباط, ŘŻŮر شرŮŮين",1,"36.50365","43.23367","BĂ€D-LUGAL-GI.NA, BĂ€D-LUGAL-GI.NA.KI, BĂ€D-MAN-GIN, KUR.BĂ€D-MAN-GIN, URU.BĂ€D-LUGAL-GI, URU.BĂ€D-LUGAL-i-ku, URU.BĂ€D-LUGAL-Ăş-kin, URU.BĂ€D-MAN-GI.NA, URU.BĂ€D-MAN-GIN, URU.BĂ€D-mLUGAL-GI.NA, URU.BĂ€D-mLUGAL-GIN, URU.BĂ€D-mMAN-GI.NA, URU.BĂ€D-mMAN-GIN, URU.BĂ€D-mMAN-GIN.NA","capital, city","Assyria","Helsinki Atlas: 8 (map 4 C5)" +311,"DĹ«ru","DĹ«ru, Anaz",1,"37.14","39.027","–","town","–","Helsinki Atlas: 8 (map 3 C3)" +312,"DĹ«Ęľru","DĹ«Ęľru, DuĘľru, Dor, Tel Dor, DĂ´r, Dora, Khirbet el-Burj",1,"32.61645","34.91612","–","prov. capital","–","Helsinki Atlas: 8 (map 7 C4), <a href=https://sketchfab.com/3d-models/tel-dor-biblical-port-israel-223035f60f1a4787b49a0fe479f5692f>3D model</a>" +315,"Eber nÄri","Eber nÄri, Aber Nahara",1,"–","–","–","region","–","Helsinki Atlas: 8 (map 2 C5)" +314,"Ebeḫ","Äžabal ḤamrÄ«n",2,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 10 C2)" +316,"Ebla","Ebla, Tell Mardikh","–","35.79888167626015","36.79830790607152","–","–","–","–" +317,"EbĘľala","EbĘľala, Ebla, Ibla, EbĘľal",3,"35.16666","44.16666","–","town","–","Helsinki Atlas: 8 (map 10 D1)" +318,"Edimgalkalama","Edimgalkalama, House, Great Bond of the Land, bÄ«t-IštarÄn","–","33.10945","45.94789","Ă©-dim-gal-kalam-ma, É.DIM.GAL.KALAM.MA, É-AN.GAL","temple","DÄ“ru, DÄ“ru province, Iraq","George 1993, House Most High: 76, <a href=https://pleiades.stoa.org/places/667048536>Pleiades: Edimgalkalama</a>" +319,"EdiĘľil","ldalion, Dali",1,"35.01654738846563","33.42360094234276","–","city","–","Helsinki Atlas: 8 (map 7 B1)" +320,"Edurḫenunna","Edurḫenunna, Adad Temple, House, Abode of Plenty","–","–","–","É.DĂšR.ḪÉ.NUN.NA","temple","Assyria, Aššur, Kurbail","George 1993, House Most High: 80–81" +323,"Ekal mÄšarti of Kalḫu","ekal mÄšarti Kalḫa, Review Palace of Calah, ekal mÄšarti of Kalḫu, Fort Shalmaneser",1,"36.09408","43.34666","–","palace, armory, arsenal, review palace","Assyria, Kalḫu","Helsinki Atlas: 8 (map 4 C5)" +324,"Ekal mÄšarti of Nineveh","Review Palace of Nineveh, Tell Nebi Yunus","–","36.3480377418","43.1609489586","–","review palace, fortress, palace","Nineveh province","–" +325,"EkallÄti","EkallÄti, EkallÄte, TulĹ«l Haikal",3,"35.56583","43.253","–","town","–","Helsinki Atlas: 8 (map 10 C1)" +326,"Ekalte","Ekalte, Tell Munbaqa","–","36.22053470854134","38.13183949295749","–","–","–","–" +327,"El-Ghâb","el-Ghab, el-Ghâb, al-Ghab","–","35.587","36.356","–","monument","Syria","<a href=https://pleiades.stoa.org/places/413309735>Pleiades: Al-Ghab</a>" +328,"Elamtu","Elam, Elamtu",1,"–","–","–","country, territory","–","Helsinki Atlas: 8 (map 17 A1)" +329,"Elephantine","Elephantine, Geziret Aswan","–","24.08494","32.88581","–",",island","Egypt","<a href=https://www.dainst.org/en/projekt/-/project-display/25953>Elephantine Reports Online</a>" +330,"Ellipi","Ellipi",1,"–","–","–","country","–","Helsinki Atlas: 8 (map 11 B3)" +332,"Ellitarbi","Ellitarbi, el-AtÄrib, Litarba, TÄ“rib",1,"36.129","36.85766","–","town","–","Helsinki Atlas: 8 (map 2 C4)" +331,"Ellišu","Ellišu, Ullassa, Tripoli, Tripolis",3,"34.45218677501611","35.81494409315681","–","town","–","Helsinki Atlas: 8 (map 8 A2)" +333,"Elumu","Elumu","–","–","–","–","village","GargamÄ«s, Syria","PNA 1/1: 4" +334,"Emar","EmarBarbalissus, Tell Meskene","–","35.9878","38.11287","–","–","–","<a href=https://web.archive.org/web/20060925230158/http://www.uni-tuebingen.de/emar/en/index.html>Emar Website</a>" +335,"Emesa","Emesa, Hims","–","34.72354534277252","36.71452867140398","–","–","–","–" +336,"Enu-Ĺ asĂ®","Enu-Ĺ asĂ®, Tell 'Ayn Sharif (?)",4,"33.8916086298232","36.02661717170561","–","–","–","–" +337,"Enzite","Alzi, Ilzi, Alši, Alze, Enzite, Enzi, Alzu, ElâsiÄź, AnzitÄ“nÄ“",2,"38.49648","39.2199","KUR.al-zi, KUR.en-zi","region, territory","Uraráąu","Helsinki Atlas: 8 (map 3 B2), Bagg RGTC 7 2/1: 40–41, <a href=https://pleiades.stoa.org/places/874328>Pleiades: Anzitene</a>" +338,"Erebuni","Erebuni, Arin-berd","–","40.14085010986663","44.53744103455104","–","–","–","–" +339,"Eridu","Eridu, AbĹ« Ĺ aḥrain, Tell Abu Shahrain",1,"30.81686971277664","45.99672447851623","–","city","–","Helsinki Atlas: 8 (map 16 B3)" +340,"EritÄ«a","ErtÄ«a",3,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 4 D3)" +341,"Erudi","Erudi","–","–","–","–","town","Central Assyria","RGTC 7 2/1: 172" +342,"Esagil","Esagila, Esagil, Esaggil, EsaĹ‹il","–","32.53379","44.42149","É.SAG.ĂŤL, Ă©-sag-gĂl, eâ‚‚-saĹ‹-ilâ‚‚-la","temple","Babylonia, Babylon","–" +343,"Ešarra","Ešarra, Temple of Aššur","–","35.46081","43.26293","É.Ĺ ĂR.RA, đ’‚Ťđ’Šąđ’ŠŹ, É.Ĺ ĂR.RA.KI, đ’‚Ťđ’Šąđ’ŠŹđ’† ","temple","Assyria","–" +344,"Ešnunna","Ešnunna, Tell Asmar D244","–","33.48313061963756","44.72850137066683","–","–","–","–" +321,"Eǧil","Eǧil, Egil","–","38.25791","40.08115","–","monument","Turkey","Helsinki Atlas: 8 (map 3 D2)" +322,"Eḫiman","Eḫiman","–","–","–","–","town","ḪÄbĹ«r triangle","RGTC 7 2/1: 166" +345,"Faida","Faida, Faidah (Ůايدة), Fayda (Ůايضة)","–","36.757628","42.935313","–","monument","Assyria, Iraq","Helsinki Atlas: 8 (map 4 B5), <a href=https://qui.uniud.it/notizieEventi/ricerca-e-innovazione/italian-and-kurdish-archaeologists-on-the-trail-of-the-assyrian-empire/>Italian and Kurdish Archaeologists on the trail of the Assyrian Empire</a>" +347,"GabbutĹ«nu","GibbetĂ´n, RaĘľs AbÄ« ḤamÄ«d",1,"31.83333","34.83333","–","town","–","Helsinki Atlas: 8 (map 7 C5)" +346,"GabbÄru-ibni","GabbÄru-ibni, GabbÄri-ibni, Ä€l-GabbÄru-ibni, Äl GabbÄru-ibni, Gabbari-ibni, Ä€l-gabbÄri-bÄnĂ®, SĹ«r ÄžurĘża, Sur Jur'eh, SĹ«r JarĘżÄ, Sur Jureh",3,"34.30549","42.20724","–","town","Sūḫu","Helsinki Atlas: 8 (map 10 B2)" +1069,"GadisĂŞ","GadisĂŞ","–","–","–","URU.ga-di-se-e","town","Syria","Bagg RGTC 7 2/1: 176" +348,"GambĹ«lu","GambĹ«lu",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 11 B4)" +349,"GannanÄti","GannanÄti, GannanÄte,Qaṣr-e Ĺ Ä«rÄ«n",4,"34.51667","45.58433","–","town","–","Helsinki Atlas: 9 (map 11 A2)" +350,"GargamÄ«s","GargamÄ«s, Karkemish, Karchemiš, Karkemiš, Carchemish, KarkamiĹź, krkymyš, Djerablis, ÄžarablĹ«s, جرابلس",1,"36.82891","38.01622","–","prov. capital","–","Helsinki Atlas: 9 (map 3 A4), <a href=https://www.orientlab.net/3d-kark>Karkemish 3D Visualization Project</a>" +351,"Gasur","Gasur, Nuzi, Yorgan Teppe","–","35.36956130794378","44.2548782342147","–","–","–","–" +352,"Gath","Gimtu, Gat, Gath, Tel es-SafÄ«","–","31.70286793150219","34.84939088642997","–","–","–","–" +353,"Gazru","Gazru, Gezer, Gazara, Tell Jazar",1,"31.85958","34.92048","–","city","–","Helsinki Atlas: 9 (map 7 C5)" +354,"Gazziura","Gazziura, Turhal","–","40.38836556561288","36.09263300772279","–","–","–","–" +355,"Gerasa","Gerasa, Jerash","–","32.28028700581027","35.89338726699758","–","–","–","–" +356,"Gibeon","Gibeon, El-Jib","–","31.84696414567557","35.18560843989516","–","–","–","–" +357,"GibĘżat Ĺ aul","GibĘżat Ĺ aul, GibĘżat Shaul, Givat Shaul, Givat Ĺ aul, Tell el-Ful","–","31.82214335732264","35.23111358574556","–","–","–","–" +358,"Gidira","Gader, Gadara, Gidira, Pompeia, Umm Qeis",1,"32.65692","35.67797","–","city","–","Helsinki Atlas: 9 (map 8 A4)" +359,"GilzÄnu","GilzÄnu, Gelišin Plain",2,"–","–","–","country","–","Helsinki Atlas: 9 (map 4 E5)" +360,"GilĘľad","GilĘżad, Gilead, Ḫirbat ÄžalĘżad",1,"32.08333","35.75","–","town","–","Helsinki Atlas: 9 (map 7 D4)" +361,"Gimir","Gimir, Gomer, Cimmerians, Caucasus",1,"–","–","LĂš.gi-mir-ra-a.a","tribe","–","–" +362,"Gimtu","Gimtu, Gat, Gath, Tel es-SafÄ«",2,"31.60883","34.77","–","city","–","Helsinki Atlas: 9 (map 7 C5)" +363,"Gingiliniš","Gingiliniš, Tepe Chenchi",2,"36.48211","43.22937","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +364,"Girmua","Girmua, ÄžirwÄn, Jerwan",2,"36.659","43.35383","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +365,"Girsu","Girsu, Tello","–","31.55980384457702","46.17866802939608","–","–","–","–" +366,"Girumu","Girumu, Tell Barghuthiat / Ishan Khilala K94","–","32.7025685157628","44.79553579596829","–","–","–","–" +367,"Gizilbunda","Gizilbunda",2,"–","–","–","territory","–","Helsinki Atlas: 9 (map 11 C1)" +369,"Gordion","Gordion, YassihĂĽyĂĽk","–","39.65698267259338","31.98669023055001","–","–","–","–" +370,"Gubal","Gubal, Äžabla, Gibala, GibaĘľla, Gubla, Gabala, Tell Tuweini, Jableh",2,"35.37182694071063","35.93723497454413","–","town","–","Helsinki Atlas: 9 (map 8 A1)" +371,"Gubla","Gubla,Byblos, Äžubail, Gebal",1,"34.11877","35.64464","–","capital","–","Helsinki Atlas: 9 (map 8 A2)" +372,"Gurasimmu","Gurasimmu",2,"–","–","–","tribe","–","Helsinki Atlas: 9 (map 16 A3)" +374,"Gurgum","Gurgum, MarqÄsa, Marqasi, Marqas",2,"–","–","–","territory, country, province","Turkey, Assyria","Helsinki Atlas: 9 (map 2 C3)" +375,"Gurru","Gurru, GurrÄja, Qamurra","–","–","–","gur-ri, gur-ru, LĂš.gur-ru, LĂš.qa-mur-ra, KUR.gur-ra-a-a, LĂš.gur-a-a, LĂš.gur-ra-a-a, LĂš.gur-ra-a-a-e-a, LĂš.qur-mur-ra-a-a","tribe","Iraq (?)","Bagg RGTC 7 2/1: 186–187" +373,"GurÄ“te","GurÄ“te, GurÄ“tu, KurdÄ, Kurda, Tell Aswad",3,"36.58317","40.88117","URU.gu-re-e-te","town","ḪÄbĹ«r area","Helsinki Atlas: 9 (map 3 D4), Bagg RGTC 7 1: 185" +368,"GÄ«Ęľa","GiĘľ, GÄ«Ęľa, GÄ«ya, Porphyreon Polis",1,"33.59717","35.41433","–","town","–","Helsinki Atlas: 9 (map 8 A3)" +376,"GĹ«zÄna","Guzana, GĂ´zÄn, gwzn, Gizania, Tell Ḥalaf, Tell Halaf",1,"36.82619","40.0395","–","prov. capital","–","Helsinki Atlas: 9 (map 3 D4)" +377,"Ha-Ma’apil","Ha-Ma’apil, Kibbutz Hama’apil, HaMa'apil","–","32.37776","34.98405","–","monument","Israel","<a href=https://pleiades.stoa.org/places/189103682>Pleiades: HaMa'apil</a>" +422,"Hatra","el-Hadhar","–","35.58702654572083","42.71855218530546","–","–","–","–" +418,"Hašabu","Ḫašabu, Hašabu, Tell 'Ayn 'Ushba, Tell Hashba (?)",4,"33.94699430482985","36.05384272993871","–","–","–","–" +437,"Hilla","Hilla, Hillah, Al-Hilla, Al-Hillah, الŘŮ„Ř©","–","32.47362","44.42519","–","–","Iraq, Babylonia","–" +461,"IabrĹ«du","IabrĹ«du, JabrĹ«du, Jabrudu, YabrĹ«d, Yabrud",1,"33.96686712056401","36.66004361025661","–","town","–","Helsinki Atlas: 10 (map 8 B3)" +462,"Iadaʾî","Iadaʾî, Jadaʾî, Yadaʾî","–","–","–","–","town","Izalla","Bagg, RGTC 7 2/1: 267, Zadok, The Ethno-Linguistic character of the Jezireh and adjancent regions in the 9th–7th centuries, in Liverani (1995): 271, 6.3.6, Kessler, Unterzchungen zur historischen Topografie Nordmesopotamiens nach keilschriftlichen Quellen des 1. Jahrtausends v Chr., TAVO Beih, B 26 (1980): 47 Anm. 205" +463,"Iadburu","Iadburu",2,"–","–","–","territory","–","Helsinki Atlas: 10 (map 11 C4)" +464,"IadnÄna","IadnÄna, Cyprus",1,"–","–","–","region, island","Levant","Helsinki Atlas: 10 (map 7 A1)" +467,"Iamutbal","Iamutbal, Jamutbal, Jamutbalu",2,"–","–","–","region, territory","–","Helsinki Atlas: 10 (map 11 A3)" +468,"IappĂ»","JappĂ», Ioppe, Yafa, Yafo, Jaffa",1,"32.05406","34.75264","–","city","–","Helsinki Atlas: 10 (map 7 C4), <a href=http://jaffa.nelc.ucla.edu/>The Jaffa Cultural Heritage Project (JCHP)</a>" +469,"IasĹ«bu","IasĹ«bu, JasĹ«bu",2,"–","–","–","region","–","Helsinki Atlas: 10 (map 11 A3)" +470,"IasĹ«mu","IasĹ«mu, SĹ«mu, AisĹ«mas, AšūmÄ, KaracadaÄź",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 3 C3)" +472,"Iaʾūdu","Iaʾūdu, Jaʾūdu, YehĹ«dÄ, Judah",1,"–","–","–","country, territory","Israel","Helsinki Atlas: 10 (map 14 B2)" +465,"Iaḫariša","Jahariša, Iahariša, Tell Fray","–","35.88141078555107","38.38536367908736","–","–","–","–" +466,"Iaḫdik","Iaḫdik, Yahdik","–","–","–","URU.ia-aḫ-di-ik","city","Elam (?)","–" +471,"Iaáąbite","Iaáąbite, Jaáąbite, Yaáąbite, IĹŤtapata, Jotapata, Yodefat, Yodfat, Ḫirbat Ĺ ifÄt","–","32.836897","35.2736","–","city","Israel, Galilea","RGTC 7/1: 127" +473,"Ibatuni","Ibatuni","–","–","–","LĂš.i-ba-tĂş-na","ethnic","–","Parpola Toponyms: 171" +474,"Idide","Idide, Ä€b-e Dez, Hithite, Hudhud",2,"–","–","–","river","–","Helsinki Atlas: 10 (map 17 A1)" +475,"Idu","Idu, ÄŞdu, Ida, Satu Qala, Tall SÄtu Qala, SÄtĹ« QalÄ, سات٠قلا",1,"35.874","44.6965","URU.i-du, KUR.i-da-a-a, URU.i-da-a-a","town, fortress, region, country","Assyria","Bagg RGTC 7 2/1: 242, Parpola Toponyms: 72 (Ida, Idu), Helsinki Atlas: 10 (map 11 B1, (Idu, region))" +478,"Ilansura","Ilansura, Tell Farfara (?)",4,"36.82263255254318","41.33237455299481","–","–","–","–" +479,"Ilgie","Ilgie, IlgĂŞ","–","–","–","URU.il-gi-e","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 243" +482,"IlištamĘľu","Ilištam'u, Stamo (?)",4,"35.48439709459653","35.91601561510269","–","–","–","–" +483,"Illubru","Illubru, Ellibir, Olymbros, Lampron, Namrun",1,37,"34.66666","–","city","–","Helsinki Atlas: 10 (map 1 D4)" +480,"Ilḫini","Ilḫini","–","–","–","URU.il-ḫi-ni","town","GĹ«zÄna province","Bagg RGTC 7 2/1: 244" +484,"Imgur-Illil","Imgur-Illil, Imgur-Enlil, BalawÄt, Balawat",1,"36.22945","43.4038","–","town","–","Helsinki Atlas: 11 (map 4 C5)" +485,"Immiu","Immiu, AmyĹ«n, Ammiya",1,"34.29683","35.81866","–","city","–","Helsinki Atlas: 11 (map 8 A2)" +486,"Ingirâ","Ingirâ, Anchiale, Anchialeia",1,"36.84983","34.57233","–","city","–","Helsinki Atlas: 11 (map 1 D4)" +487,"Inimme","Inimme, en-NÄĘżima",1,"33.74316","35.4615","–","town","–","Helsinki Atlas: 11 (map 8 A3)" +488,"Innaia","Innaia, Qasemlua, Branduz çay","–","–","–","–","river","–","Helsinki Atlas: 11 (map 4 E4)" +489,"IrbĂ»","IrbĂ», Irbayu, IrbuÄja","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/1: 248–249" +490,"Irgilli","Irgilli, Tell Irjil (?)",4,"35.84856296472241","37.22541738884766","–","–","–","–" +1071,"Irinniḫ","Irinniḫ","–","–","–","URU.i-ri-in-ni-iḫ, 𒌷𒄿𒊑𒅔𒉌𒄴","town","Central Assyria, Kalḫu province (?), Iraq","Bagg RGTC 7 2/1: 249" +491,"Irrita","Irrita, Oylum HöyĂĽk","–","36.69900478406686","37.17821281809435","–","–","–","–" +493,"Isin","IIsin, šÄn al-BaḥriyÄt, Ishan Bahriyat",1,"31.88640216500606","45.27050931069247","–","city","–","Helsinki Atlas: 11 (map 16 A2)" +494,"IspallurĂŞ","IspallurĂŞ, IšpallurĂŞ, Ispallure, Isphrium (?)","–","–","–","–","town","Izalla","Bagg, RGTC 7 2/1: 253" +495,"IsqalĹ«na","IsqalĹ«na, Ashcalon, Ascalon, ĘżAsqalÄn, AšqelĂ´n, Ašqaluna, Isqaluna, Ashqelon, Ashkelon",1,"31.66426","34.54732","–","capital","–","Helsinki Atlas: 11 (map 7 C5)" +496,"IssÄ“te","IssÄ“tu, IssÄ“te, Issutu, Ĺ aqlÄwa",4,"36.39783","44.34517","–","town","–","Helsinki Atlas: 11 (map 4 D5), Bagg RGTC 7 2/1: 254–255" +497,"Istuanda","Istuanda, Wištawanda, Patuanda",3,"37.66666","34.33333","–","city","–","Helsinki Atlas: 11 (map 1 D3)" +492,"IsÄna","IsÄna, IsÄn Köi, Izan, Tell IsÄn",4,"36.75","37.66666","–","prov. capital","–","Helsinki Atlas: 11 (map 2 D4)" +504,"ItuĘľu","UtuĘľu, ItuĘľu",2,"–","–","–","tribe","–","Helsinki Atlas: 11 (map 10 C3)" +505,"Izalla","Izalla, Azalla, Azallu, Zalla, Zallu, Izallu, Azalzi, IšalÄ, byt ṣll, đˇđˇ‰đˇ• đˇ‘đˇ‹đˇ‹â€Ž, ʾÛzÄl, ×וּזָל, Aṣalli, Iṣalla, Kanni, Nini, Ninili, ṬūrÄ á¸ŹIzalÄ, IzalÄ, Izala mons, Azalla, Ṭūro d-Malbash, Melabas, Dibek DaÄźi",1,"37.20109","41.46527","i-za-al, ì-zal, KUR.a-za-al-li, KUR.a-zal-li, KUR.i-za-la, KUR.i-za-li, KUR.i-zal, KUR.i-zal-li, KUR.i-zal-lu, KUR.ì-zal, KUR.ì-zal-la, KUR.ì-zal-li, KUR.za-al-lu, KUR.a-za-la-a-a, KUR.zal-la-a-a, KUR.zal-la-a-ia, byt ṣll, đˇđˇ‰đˇ• đˇ‘đˇ‹đˇ‹â€Ž, ×וּזָל","territory, mountain","ǦazÄ«ra, Turkey","Helsinki Atlas: 7 (Azalla, territory, map 3 C4), 11 (Izalla, mountain, map 3 D3 ), Bagg RGTC 7 2/1: 263–265 (Izalla)" +507,"Izirtu","Izirtu, Zirtu, Saqqez",2,"36.25116","46.279","–","capital","–","Helsinki Atlas: 11 (map 5 B4)" +506,"IzÄ«bia","IzÄ«bia, ZÄ«wiye, Ziwiye, ZÄ«we",1,"36.2614","46.68737","–","city","–","Helsinki Atlas: 11 (map 5 B4)" +477,"IÄ“ri","JÄ“ri, IÄ“ri, Yeri, Sardašt",4,"36.15267","45.47767","–","town","Ḫabḫu, Ḫabḫu 2","Helsinki Atlas: 11 (map 5 A4), Bagg RGTC 7 3/1: 310" +498,"Išida","Išida, Išid","–","–","–","LĂš.i-ši-da-a-a","town","Central Assyria (?), Kalḫu province (?)","Bagg RGTC 7 1: 256, " +499,"IškĂ»zai","IškĂ»zai, Iškuza, AšgĂ»zai, Scythians","–","–","–","iš-ku-za-a.a, KUR.as-ku-za-a.a, KUR.áš-gu-za-a.a, KUR.iš-ku-za, KUR.iš-ku-za-a.a, LĂš.iš-ku-za-a.a, URU.as-gu-za-a.a","ethnic","–","Parpola Toponyms: 178 (Iškuza), Vera Chamaza (2002), Die Omnipotenz Aššurs: 227" +500,"Išrun","Išrun","–","–","–","KUR.iš-ru-un","mount","–","–" +501,"Ištaraurâ","Ištaraurâ, SÄrĹ«q",2,"–","–","–","river","–","Helsinki Atlas: 11 (map 5 B4)" +502,"Išua","Išua",2,"–","–","–","region","–","Helsinki Atlas: 11 (map 3 B3)" +508,"JalĹ«na","JalĹ«na, Ialuna","–","–","–","URU.ia-lu-na, KUR.ia-lu-na, KUR.ia-lu-na-a-a, URU.ia-lu-na-a-a","town, territory","Kalḫu province (?), Central Assyria","Bagg RGTC 7 2/1: 269–270" +509,"Jericho (1)","Jericho (1), Tell es-Sultan","–","31.87098681042005","35.44476683822438","–","–","–","–" +510,"Jericho (2)","Jericho (2), Tulul Abu el-'Alaiq North","–","31.85262041903013","35.43531529964726","–","–","–","–" +511,"Jericho (3)","Jericho (3), Tulul Abu el-'Alaiq South","–","31.85024154909864","35.43693647832034","–","–","–","–" +512,"Jerwan Aqueduct","Jerwan Aqueduct, ÄžirwÄn Aqueduct","–","36.66952","43.3946","–",",canal, monument","Assyria, Iraq","<a href=https://pleiades.stoa.org/places/10280471>Pleiades: Jerwan Aqueduct</a>" +513,"Jokneam","Jokneam, Tel Yoqne'am","–","32.66466721782095","35.10883229927659","–","–","–","–" +514,"Judeideh","Judeideh, Judaide, JedÄ«dÄ“, JadÄ«dah","–","34.23989","42.30865","–","–","Sūḫu, Iraq","RIMB 2: 322" +515,"Judi Dagh","Judi Dagh, Äžudi DaÄź, Ḥsanah, Ĺ eḫ, Cudi Dagh","–","37.37667","42.34667","–",",Monument","Turkey","Helsinki Atlas: 11 (map 4 B4)" +516,"Kabinnak","Kabinnak, Kabinak, Kabnak, Hafttappe, Haft Teppe",1,"32.08090580192094","48.32873115985338","–","city","–","Helsinki Atlas: 11 (map 17 A1)" +517,"Kabsite","Kabsite, Kabsitu","–","–","–","kab-si-te, URU.kab-si-te","town","Northern Babylonia","Bagg RGTC 7 1: 275" +518,"Kadeš Barnea","Kadeš-Barnea, Kadeš Barnea, Tell el-Qudeirat (?)",4,"30.64667651544816","34.41929399232647","–","–","–","–" +519,"Kafar Nahum","Kafar Nahum, Kafar-Nahum, Capharnaum","–","32.88049659607911","35.57594165209499","–","–","–","–" +521,"Kailete","Kailete, Kailetu","–","–","–","URU.ka-i-le-te","town","mid-Euphrates, Sūḫu, ḪÄbĹ«r basin (?)","Bagg RGTC 7 1: 276" +522,"Kakkabnaše","Kakkabnaše, Kakkabnamušat","–","–","–","URU.kak-kab-na-še","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 276" +523,"Kaldu","Kaldu, Chaldea",2,"–","–","–","territory","–","Helsinki Atlas: 11 (map 10 D4)" +525,"Kallat","Kallat, Batman Suyu",2,"–","–","–","river","–","Helsinki Atlas: 11 (map 3 E2)" +526,"Kalmakarra Cave","Kalmakarra Cave","–","33.03461","47.56946","–","–","Iran","<a href=https://pleiades.stoa.org/places/413309734>Pleiades: Pol-e Dokhtar</a>" +524,"Kalḫu","Kalḫu, Calah, Kalhu, Kalchu, NimrĹ«d, Nimrud",1,"36.09863","43.32932","URU.kal-ḫu, URU.kal-ḫi","capital, city","Assyria","Helsinki Atlas: 11 (map 4 C5)" +528,"KannuĘľ","KannuĘľ","–","–","–","URU.ka-an-nu-uĘľ, URU.kan-nu-uĘľ, LĂš.kan-nu-uĘľ-a-a, URU.kan-nu-a-a, URU.kan-nu-uĘľ-a-a","city","Central Assyria","Bagg RGTC 7 2/1: 287–288" +530,"Kapar-AkkullÄni","Kapar-AkkullÄni, village of AkkullÄnu","–","–","–","URU.Ĺ E-<sup>m</sup>ak-ku-la-ni","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 296" +531,"Kapar-AndarÄnu","Kapar-AndarÄnu","–","–","–","–","–","–","–" +529,"Kapar-Aḫi-iaqar","Kapar-Aḫi-iaqar, Kapar-Ahiqar","–","–","–","–","village","–","–" +532,"Kapar-BisĂŞ","Kapar-BisĂŞ, village BisĂŞ","–","–","–","URU.Ĺ E-bi-se-e","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 300–301" +533,"Kapar-DannÄia","Kapar-DannÄia, village of Dannaya, village of DannÄia","–","–","–","–","village","Assyria","–" +535,"Kapar-Itiri","Kapar-Itiri","–","–","–","URU.Ĺ E-i-ti-ri","village","Central Assyria (?)","Bagg RGTC 7 3/2: 967–968" +536,"Kapar-Mannu-lĹ«-aḫūʾa","Kapar-Mannu-lĹ«-aḫūʾa","–","–","–","–","village","Central Assyria, Nineveh province","Bagg, RGTC 7 1/1: 309–310" +538,"Kapar-NabĂ»-šimanni","Kapar-NabĂ»-išmanni, Kapar-NabĂ»-šimanni, village of NabĂ»-šimanni","–","–","–","URU.Ĺ E-mdPA-ḪAL-a-ni, URU.Ĺ E-mdAG-ši-man-ni","village","Central Assyria (?), Nineveh province (?)","Bagg RGTC 7 2/1: 311–312" +539,"Kapar-Qiluḫte","Kapar-Qiluḫte, Kapar-Kiluḫte, Kiluḫte","–","–","–","–","village","Central Assyria","RGTC 7 2/1: 314" +540,"Kapar-UsÄni","Kapar-UsÄni","–","–","–","–","village","Central Assyria","RGTC 7 2/1: 323" +534,"Kapar-ikkÄri","Kapar-ikkÄri, village of the Farmer","–","–","–","URU.Ĺ E-LĂš.ENGAR","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 304" +537,"Kapar-mÄr-šarri","Kapar-mÄr-šarri, Village of the Crown Prince, URU.Ĺ E A MAN","–","–","–","–","village","Central Assyria, Kalḫu province (?)","RGTC 7 2/1: 310" +541,"Kaprabi","Kaprabi, Edessa, Urfa",4,"37.15211","38.78947","–","town","–","Helsinki Atlas: 11 (map 3 B3)" +542,"Kapri-Dargilâ","Kapri-Dargilâ",3,"36.7","38.33333","–","village","–","Helsinki Atlas: 11 (map 3 B4)" +555,"Karabur","Karabur, Karsanbey","–","36.02","36.19","–","monument","Turkey","Helsinki Atlas: 11 (map 2 C4), O. AytuÄź TaĹźyĂĽrek,: Some New Assyrian Rock-Reliefs in Turkey: 174-176, 177 Fig. 10." +556,"Karalla","Karalla, Uramanat",2,"–","–","KUR.kar-al-li, KUR.kar-al-la, KUR.kar-al-la-a-a, KUR.kar-al-lu, KUR.kar-al-luâ‚„, KUR.kar-la-a-a, KUR.kar-..., URU.kar-al-lu, KUR.kar-al-la-a-a","country, state","Iran","Helsinki Atlas: 11 (map 11 B2), Parpola Toponyms: 199–200" +557,"Karduniaš","Babylonia, Karduniaš",2,"–","–","–","country","–","Helsinki Atlas: 11 (map 10 D3)" +558,"Karkara","Karkara, Tell Jidr U004 (?)",4,"31.82392203365745","45.70750109912942","–","–","–","–" +559,"Kasappa","Kasappa, KušÄf, Tell KašÄf, Tell Kashaf",1,"35.99892626871029","43.36667385244879","–","town","–","Helsinki Atlas: 11 (map 4 C6)" +562,"Katmuḫi","Katmuḫi, Katmuḫu, Kadmuḫi, Ĺ aḫuppa, Saḫuppa, Ĺ uḫuppa",2,"–","–","–","state, province","–","Helsinki Atlas: 11 (map 3 E3)" +563,"Kazallu","Kazallu","–","–","–","ka-za-lu.KI, ka-zal-lu.KI","city","Northern Babylonia","Groneberg, RGTC 3: 136–237" +561,"KašpĹ«na","KašpĹ«na, KusbÄ",2,"34.28733","35.87867","–","city","–","Helsinki Atlas: 11 (map 8 A2)" +520,"Kaḫat","Kaḫat, Kahat, Tell BarrÄ«, Tell Barri",3,"36.73893","41.12701","URU.ka-ḫa-at, URU.ka-ḫat","town","ḪÄbĹ«r area","Helsinki Atlas: 11 (map 3 E4), Bagg RGTC 7 1: 276" +564,"Kelenderis","Kelenderis, Ura (?), Aydıncık","–","36.14441180151798","33.32303180199708","–","–","–","–" +565,"Kenk BoÄźazi","Kenk BoÄźazi, Kenk BoÄźazı","–","37.24166","37.85433","–","–","Turkey","Helsinki Atlas: 11 (map 3 A3)" +566,"KesentaĹź","Ergani, Gisgis, KesentaĹź","–","38.20387","39.58986","–","monument","Turkey","Helsinki Atlas: 11 (map 3 C2)" +567,"Kibaki","Kibaki, Kivah",1,"37.24883","41.5015","–","town","–","Helsinki Atlas: 11 (map 4 A4)" +568,"KilÄ«zi","KilÄ«zi, Kilizu, Kilizi, KalÄ«zi, KilÄ«zu, Kalzu, Kalzi, Qaṣr Ĺ amÄmĹ«k, Qasr Shamamok EPAS 2, KilÄ«zi",1,"36.10582","43.75306","kĂ l-zi, URU.kĂ l-zi, URU.kĂ l-zu, URU.ki-li-zi, URU.kĂ l-zi-a-a","prov. capital","–","Helsinki Atlas: 11 (map 4 C5), <a href=https://scholar.harvard.edu/jasonur/pages/erbil>Erbil Plain Archaeological Survey</a>, <a href=https://sketchfab.com/3d-models/site-2-qasr-shemamok-d658c28b789c460998697a621ca7fd4b>3D model</a>, Bagg RGTC 7 2/1: 284–285 (Kalzu), " +569,"Kinabu","Kinabu, TavĹźantepe (?), Aktepe (?)","–","37.83546","40.2019","ki-na-bu, URU.ki-na-bu","fortified city","Nirbu, Turkey","Bagg RGTC 7 2/1: 341–342" +570,"KindÄu","KindÄu, Qindau, KÄr-SĂ®n","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110" +571,"Kipšūna","Kipšūna, Kipšūnu, Gefše",3,"37.21617","42.7535","–","capital of QumÄ“ni, prov. capital","QumÄ“ni, Province of masennu","Helsinki Atlas: 11 (map 4 B4), Bagg RGTC 7 2/1: 343–344" +572,"Kirruru","ḪabrĹ«ru, Kirruru, Kirruri, Kirriuru","–","–","–","KUR.kìr-ri-Ăş-ri, KUR.ḫab-ru-ri, KUR.kìr-ru-ri","mount","ḪabrĹ«ri","–" +573,"Kirši","Kirši, Meydancıkkale?","–","36.27389593578619","33.44268818917155","–","–","–","–" +575,"Kisiru","Kisiru, Kisiri, Tell Inṯa, Tall ĘżAin Ṭelṯameh",3,"36.48083","43.21467","URU.ki-si-ri","village","Nineveh province (?), Central Assyria","Helsinki Atlas: 12 (map 4 C5), Bagg RGTC 7 1: 345–346" +576,"Kissik","Kissik, Duru (?), Tell al-Laḥm, Tell el-Lahm",1,"30.77400531941019","46.3655492049713","–","city","–","Helsinki Atlas: 12 (map 16 B3)" +577,"Kissuwatna","Kissuwatna, Kizzuwatna",4,37,36,"–","city","–","Helsinki Atlas: 12 (map 2 C3)" +578,"Kisurra","Kisurra, Abu Hatab","–","31.83792434426611","45.4819673839158","–","–","–","–" +583,"Kitrusu","Kitrusu, Khytroi, Kitrea",1,"35.24066","33.49183","–","city","–","Helsinki Atlas: 12 (map 7 B1)" +581,"Kišešlu","Kišešlu, KÄr-NabĂ»","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +582,"Kištan","Kištan, KaysĹ«n, KaisĹ«m",2,"–","–","–","district","–","Helsinki Atlas: 12 (map 3 B3)" +580,"Kišēsim","Kišēsim, Kišessim, KÄr-Nergal, Najafabad, NajafÄbÄd, NaÄźafÄbÄd, نجŮ‌آباد",3,"34.6527"," 47.9761","–","city","–","Helsinki Atlas: 11 (map 11 B2), <a href=https://pleiades.stoa.org/places/811827554>Pleiades: Najafabad</a>, <a href=https://zenodo.org/record/5217600>CIGS</a>, Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +574,"Kiṣirte","Kiṣirte, Kiṣirtu","–","–","–","URU.ki-ṣir-te, URU.ki-ṣir-tu","town","South-east Assyria","CTN 6: 221, Parpola 1970: 210" +585,"Kubanaše","Kubanaše",3,"36.9","40.2","–","town","–","Helsinki Atlas: 12 (map 3 D4)" +587,"Kulimmeri","Kulimmeri, Kullimeri, Qulmere, ChlomarĂ´n, Klimar, Gre Migro",2,"37.99107","41.1573","–","prov. capital","Ĺ ubria, Assyria","Helsinki Atlas: 12 (map 3 E2), Bagg RGTC 7 2/1: 349–350" +588,"Kullab","Kullab",1,"31.32183","45.6405","–","town","–","Helsinki Atlas: 12 (map 16 A2)" +589,"KullanÄ«a","KullanÄ«a, Kunulua, KinalĹ«a, Kullania, KunalÄ«a, KalnÄ“, Calneh, Tell TaĘżyÄ«nÄt, Tell Tayinat",1,"36.24717","36.37452","–","prov. capital","–","Helsinki Atlas: 12 (map 2 C4), <a href=https://tayinat.artsci.utoronto.ca> Tayinat Archaeological Project (TAP)</a>" +591,"Kullar","Kullar, Kolara, BaziÄn",2,"35.6365","44.96966","–","mountain","–","Helsinki Atlas: 12 (map 10 E1)" +592,"Kulmadara","Kulmadara, ChĂ´lmadara, Charmodara",1,"37.64166","38.74483","–","town","–","Helsinki Atlas: 12 (map 3 B3)" +593,"KulumÄn","KulumÄn, KilmÄn, not Kermanshah, near ḪarḫÄr","–","–","–","–","town","–","–" +594,"Kumidu","Kumidu, Kamid el-Loz","–","33.62381849627923","35.82143372904021","–","–","–","–" +595,"Kummanni","Kummanni, Comana Cappadociae, Ĺžar (?)",4,"38.33041595481895","36.32519972256748","–","–","–","–" +596,"Kumme","Kumme",3,"37.34716","42.74483","–","city","–","Helsinki Atlas: 12 (map 4 B4)" +597,"Kummuḫi","Kummuhu, KammÄnu (district), CommagÄ“nÄ“, Samosata, Samsat",1,"37.50560103152622","38.50081550200599","–","prov. capital","–","Helsinki Atlas: 12 (map 3 B3)" +598,"Kundu","Kundu, Anavarza, Kynda",1,"37.257","35.91216","–","city","–","Helsinki Atlas: 12 (map 2 B3)" +599,"Kurbail","Kurbail, ĘżAgra",4,"36.75983","43.90316","–","prov. capital","–","Helsinki Atlas: 12 (map 4 C5)" +600,"Kurbail (alt. loc.)","Kurbail (alt. loc.), ÄžarÄhÄ«ya, Ḫirbat al-ÄžarÄhÄ«ya",4,"36.6875","43.20966","–","prov. capital","–","–" +601,"KurĂ®","KurĂ®, Kourion, Episkopi",1,"34.67216001285875","32.86433366558725","–","city","–","Helsinki Atlas: 12 (map 7 A2)" +603,"Kutalla","Kutalla, Kutallu, Tell Sifr, Tell Ṣifir",1,"31.29236345808405","45.9694994372622","–","town","–","Helsinki Atlas: 12 (map 16 B2)" +604,"KutĂŞ","KutĂŞ, KĂ»tâ, KutĂ», Gudua, Kutha, Cutha, Tell IbrÄhÄ«m, Tell Ibrahim",1,"32.75989763098715","44.61289455976172","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D4)" +527,"KÄneš","KÄneš, Kaneš, Nēša, Neša, KĂĽltepe","–","38.85017107282217","35.6352947895362","–","–","–","–" +543,"KÄr-Apladad","Gleieh, GlaiĘżÄ, GlaiĘżÄ, GleiĘżeh",4,"34.30261","42.21187","–","–","Sūḫu, Iraq","RIMB 2: 327, 329" +544,"KÄr-Aššur","KÄr-Aššur, Ḫumut","–","–","–","kar-aš-šur, URU.kar-AN.Ĺ ĂR, URU.kar-aš-šur, URU.kar-<sup>d</sup>aš-šur","city","Assyria, Laḫīru province (?)","Bagg RGTC 7 2/1: 330" +545,"KÄr-Aššur-aḫu-iddina","KÄr-Aššūr-aḫu-iddina, see ṢīdĹ«nu","–","–","–","–","city","–","–" +546,"KÄr-Aššurnasirpal","KÄr-Aššurnasirpal, KÄr-Aššur-nÄṣir-apli, KÄr-Ashurnasirpal, Kar-Assurnasirpal, Jebel Masaikh","–","34.97366","40.55532","URU.kar-<sup>m</sup>AĹ -PAB-A","city","Assyria, Middle Euphrates","Bagg RGTC 7 2/1: 330–331" +547,"KÄr-IssÄr","KÄr-Ištar, Tell ĘżAÄźÄğī",4,"35.03333","43.55","–","town","–","Helsinki Atlas: 11 (map 10 C1)" +549,"KÄr-Mullissi","Kar-Mullissi, KarmallÄ«s, KeremlÄ«s, Keramlais",1,"36.30538292011827","43.40982550055244","–","city","–","Helsinki Atlas: 11 (map 4 C5)" +550,"KÄr-Nergal","KÄr-Nergal, aṣ-Ṣūwaira",4,"32.92616","44.78683","–","town","–","Helsinki Atlas: 11 (map 10 D4)" +554,"KÄr-TukultÄ«-Ninurta","KÄr-TukultÄ«-Ninurta, Kar-Tukulti-Ninurta, TulĹ«l al-ĘżAgar, Tulul el-'Aqir",1,"35.50153","43.2831","–","city","–","Helsinki Atlas: 11 (map 10 C1)" +548,"KÄr-kaššî","KÄr-kaššî, Karkaššî","–","–","–","KUR.kar-ka-ši-e, KUR.kar-kaš-ši-i, URU.kar-kaš-ši-i, KUR.kar-kaš-šá-a.a","city","Iran, Media","Parpola Toponyms: 197" +551,"KÄr-nĹ«ri","KÄr-nĹ«ri, ĘżAin SifnÄ«, Ain Sifni","–","36.69182","43.35083","URU.kar-nu-ru, URU.kar-nu-Ăş-ri, URU.ka-ru-nu-ri","town","Assyria","Bagg RGTC 7 2/1: 335" +552,"KÄr-Ĺ amaš","KÄr-Ĺ amaš",3,"34.09449","44.00033","–","town","–","Helsinki Atlas: 11 (map 10 D2)" +553,"KÄr-Ĺ amaš-nÄṣir","KÄr-Ĺ amaš-nÄṣir","–","–","–","–","town","Central Assyria","RGTC 7 2/1: 336" +560,"KÄšijÄ“ri","Kašiieri, Kašiiari, KÄšijÄ“ri, KÄšiÄru, Kašijari, Ṭūr ĘżAbdÄ«n",1,"–","–","–","mountain","–","Helsinki Atlas: 11 (map 3 D3)" +579,"Kīš","Kīš, Kiš, Kish, Ḫursagkalama, Tell Inġarra, Tell al-Uḥaimir, Uhaimir",1,"32.55189","44.59024","–","city","–","Helsinki Atlas: 11 (map 10 D4)" +584,"Kızkapanlı","Kızkapanlı, Kizkapanli, Pazarcık, KahramanmaraĹź, PazarÄźik","–","37.47166","37.25599","–","–","Turkey","–" +586,"KĹ«kab","KĹ«kab, Tell Kawkab",1,"36.53183","40.85433","–","mountain","–","Helsinki Atlas: 12 (map 3 D4)" +602,"KĹ«su","KĹ«su, Kush, Cush, Kuš, Meluḫḫa, Emeluḫḫa, Nubia","–","–","–","KUR.ku-u-si, KUR.ku-u-su, KUR.ku-Ăş-su, KUR.ku-Ăş-ši, KUR.ku-Ăş-šú, KUR.ku-si, KUR.ku-Ăş-si, URU.ku-Ăş-si, KUR.ku-ši, KUR.ku-su, ku-sa-a, ku-sa-a-a, ku-sa-a-a-te, KUR.ku-sa-a-a, KUR.ku-sa-a-e","country, territory","Africa, Nubia","Bagg RGTC 7 2/1: 356–358, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +606,"LabdĹ«du","LabdĹ«du",3,"–","–","–","tribe","–","Helsinki Atlas: 12 (map 11 A3)" +608,"LabnÄna","LabnÄna, LubnÄn, LebÄnĂ´n, Lebanon",1,"–","–","–","mountain","–","Helsinki Atlas: 12 (map 8 A3)" +605,"LabÄĘľu","Laba'u, LabaĘľu, Lebo, Labwa, LebĂ´, Tell Qasr Labwa",1,"34.20045475734132","36.34428372649153","–","city","–","Helsinki Atlas: 12 (map 8 B2)" +607,"LabÄ«ru","LabÄ«ru","–","–","–","–","town","Assyria","RGTC 7 2/1: 360" +609,"LadÄnu","LadÄnu","–","–","–","KUR.la-da-a-ni","territory","–","–" +610,"Lagaš","Lagaš, El-Hiba","–","31.4183207967609","46.41221284166029","–","–","–","–" +612,"LaglÄgu","LaglÄgu, TagalÄgu, Tagalagi, Lagalaga, Laggalagi, ĘżUlĹ«w BĹ«lÄq, Ulubulagh","–","35.5",45,"–","town","–","Helsinki Atlas: 12 (map 10 E1)" +614,"LakÄ«su","LakÄ«su, Lakišu, Lakisu, LÄkîš, Lachish, Tell al-Duweir, Tell ed-Duwer",1,"31.56525","34.84951","–",",admin. center","–","Helsinki Atlas: 12 (map 7 C5), <a href=https://sketchfab.com/3d-models/tel-lachish-2018-993a67a2138d4e6782e71ad3275ead8c>3D model</a>" +615,"Lalar","Lalar","–","–","–","KUR.la-la-ar","mountain","–","RGTC 5: 176" +618,"Larak","Larak, Tell Wilaya (?), Tell al-ḪayyÄd (?)",4,"32.31115954785168","45.66040975327528","–","city","Babylonia, Iraq","Helsinki Atlas: 12 (map 11 A4)" +619,"Larbusa","Larbusa, Larbusu, Tall Sitak, Tell Sitak, Tall SÄ«tak, ŘŞŮ„ سيتŮ","–","35.642","45.5028","URU.la-ar-bu-sa, URU.la-ar-bu-sa-a-a","fortified city","Zamua, Iraq","Bagg RGTC 7 3/1: 370, Radner (2017), A Neo-Assyrian Legal Document from Tell Sitak: 428–429" +620,"Laribda","Laribda, Gebb al-Qdeim (?), Ů‚ŘŻŮŠŮ…, aáą-Ṭajjibe (?), At Tayyibah (?), Al Taibah (?), ĘżUrd (?), Ourd Oriza (?), التيبة","–","35.08895","38.91597","URU.la-ri-ib-da","town, fortified water point","Syria","Bagg RGTC 7 1: 156" +621,"Larsa","Larsa, as-Sankara, Tulul Sinkara",1,"31.28473","45.85513","–","city","Babylonia","Helsinki Atlas: 12 (map 16 A2)" +622,"Latiḫu","Latiḫu, Latiḫi, Tell Baḥza (?), Tall Ĺ addÄda (?)",4,"36.05","40.73333","URU.la-ti-ḫi","town","Ĺ adikanni","Helsinki Atlas: 12 (map 3 D4), Bagg RGTC 7 1: 366" +613,"Laḫīru","Laḫīru, Eski Kifri",3,"34.63333","44.88333","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D2)" +623,"Lidir","Lidir, Ledroi",1,"35.16666","33.35","–","city","–","Helsinki Atlas: 12 (map 7 B1)" +624,"Luamma","Luamma, LuĘľama","–","–","–","URU.lu-a-ma","town","Assyria, Arrapḫa province","Bagg RGTC 7 2/1: 372 (Luamma 2)" +625,"Lubda","Lubda, TawĹ«q, Daquq",3,"35.13133","44.45683","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D1)" +626,"Luddi","Luddi, LĹ«du, LĂ»d, לוּד, Lydia","–","–","–","lu-ud-di, KUR.lu-ud-di, לוּד","country","Anatolia","Bagg RGTC 7 1: 158" +627,"Luddin-ilu","Luddin-ilu","–","–","–","–","town","Central Assyria (?), East Tigris area (?), Laḫīru (?)","RGTC 7 2/1: 373–374" +630,"LuĘľamma","LuĘľamma, Luamma","–","–","–","URU.lu-u-am-ma","town","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 2/1: 372 (Luamma 1)" +628,"Luḫutu","Luḫutu, LuĘżaš",3,"–","–","–","country","–","Helsinki Atlas: 12 (map 2 C5)" +616,"LÄqĂŞ","LÄqĂŞ, LaqĂŞ, LaqĂ»",2,"–","–","–","territory, country, province","–","Helsinki Atlas: 12 (map 9 C1)" +617,"LÄra...","LÄra...","–","–","–","URU.la-a-ra-x-x","town","Central Assyria (?)","Bagg RGTC 7 2/2: 365" +629,"LĹ«sanda","LĹ«sanda, Lawasantia, Lwsnd, Elbistan",4,"38.2065","37.20366","–","city","–","Helsinki Atlas: 12 (map 2 D2)" +633,"Madaktu","Madaktu, Tepe Patak, Badake",4,"32.5","47.76666","–","city","–","Helsinki Atlas: 12 (map 16 D1)" +634,"Madara","Madara, Matar",2,"37.71416","40.9505","–","city","–","Helsinki Atlas: 12 (map 3 D3)" +635,"Maganiṣi","Maganiṣi","–","–","–","–","town","Central Assyria, Nineveh province","RGTC 7 2/2: 380" +636,"Maganuba","Maganuba, Maganubba, Magganubba","–","–","–","URU.ma-ag-ga-nu-ub-ba, URU.ma-ga-ni-ib, URU.ma-ga-nu-ba","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province","Bagg RGTC 7 2/2: 380–381" +637,"MagidĂ»","MagidĂ», Megiddo, MegiddĂ´n, Tell al-Mutesellim, Tell el-Mutasallim",1,"32.58534","35.18437","–","prov. capital","–","Helsinki Atlas: 13 (map 7 D4), <a href=https://ochre.lib.uchicago.edu/Megiddo/ Megiddo III Digital Archive</a>" +638,"MagrÄ«su","MagrÄ«su, Magrisu, Magarisu, Magrisi, Magarisi, MakrisÄ, Magrus, Tell Haṣaka, Tell AbĹ«-Bakr, Tell Hasaka (?)",3,"36.49907","40.75183","URU.ma-ag-ri-su, URU.ma-ga-ri-si, URU.ma-ga-ri-su","city","ḪÄbĹ«r area","Helsinki Atlas: 13 (map 3 D4), Bagg RGTC 7 2: 381" +643,"MallanÄte","MallanÄte, Mallanate, MaĘľallanate, Mallanum","–","–","–","–","town","Balīḫ basin","Bagg RGTC 7 2/2: 386" +644,"Maltai","Maltai","–","36.84055","42.94502","–","monument","Iraq , Assyria","Helsinki Atlas: 13 (map 4 B5)" +640,"MalÄḫu","MalÄḫu, Malaḥ d'EzraĘża",3,"32.79999","36.33333","–","city","–","Helsinki Atlas: 13 (map 8 B4)" +645,"Mandiru","Mandiru","–","–","–","LĂš.man-di-ra-a-a, KUR.ma-di-ra-a-a, URU.man-di-ri-a-a","town","Elam","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +646,"Manisa","Manisa","–","–","–","KUR.ma-ni-sa-a-a, KUR.ma-ni-sa-a-a-u",",land","–","Parpola Toponyms: 236" +647,"Manna","Manna, Minni, Mannea",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 5 B4)" +648,"ManṣuÄti","ManṣuÄti, Manṣuati, ManṣuÄte, Manṣuate, Manṣuati, ManṣuÄtu, Manṣuatu, MaṣyÄf,MaṣyÄt, MaṣyÄáą, MaṣyÄd, Mnḏt, Masyaf",2,"35.06614671547394","36.34331897024435","–","prov. capital","–","Helsinki Atlas: 13 (map 8 B1)" +649,"ManṣuÄti (alt. loc.)","ManṣuÄti (alt. loc.), Massyas, al-BiqÄĘľ",3,"33.747","35.8945","–","prov. capital","–","–" +650,"Marad","Wanna wa SadĹ«m, Tell es-Sadum",1,"32.09186862054076","44.7833573553678","–","city","–","Helsinki Atlas: 13 (map 10 D4)" +651,"MardijanĂŞ","MardijanĂŞ, Maride, MardÄ«n",3,"37.31333","40.72083","–","town","–","Helsinki Atlas: 13 (map 3 D3)" +652,"Margu","Antiokia Margiana, Merv, Erk Kala, Gyaur Kala","–","37.66893324474648","62.19383087233302","–","–","–","–" +653,"Mari","Mari, Tell Hariri","–","34.55048884495861","40.8900285084387","–","–","–","–" +654,"Mariametu","Mariametu","–","–","–","–","town","ḪÄbĹ«r area","RGTC 7 2/2: 391" +655,"Marib","Marib","–","15.42575","45.33242","–","–","–","–" +656,"MarqÄsa","Gurgum, MarqÄsa, Marqasi, Marqas, Germanikeia, MarʿĚ, KahramanmaraĹź",1,"37.58709","36.92543","–","prov. capital","Gurgum, MarqÄsa","Helsinki Atlas: 13 (map 2 C3)" +657,"Marratu","Marratu, Persian Gulf",2,"–","–","–","sea","–","Helsinki Atlas: 13 (map 17 B4)" +658,"Marubištu","Marubištu, ḪorramÄbÄd",4,"33.48733","48.3585","–","capital","–","Helsinki Atlas: 13 (map 11 D3)" +660,"Maruri","Maruri, Maruru, MarĹ«ru","–","–","–","URU.ma-ru-ri, URU.ma-ru-ru","town","Southern Babylonia, BÄ«t-IakÄ«n (?)","Bagg RGTC 7 3/1: 396" +659,"MarĹ«m","MarĹ«m, Marum, Qarn ḤiáąáąÄ«n, MerĂ´m",3,"32.8","35.46667","–","town","Israel, Galilea","Helsinki Atlas: 13 (map 8 A4), Bagg RGTC 7/1: 171–172" +661,"MasÄka","MasÄka, Amasakku, Tell Muḥammad (2)",4,"36.9255","41.1835","–","town","–","Helsinki Atlas: 13 (map 3 E4)" +665,"MatiÄtu","MatiÄtu, Matiatu, MatiÄte, Matiate, MidyÄt",1,"37.41418721778389","41.37739487559983","–","city","–","Helsinki Atlas: 13 (map 3 E3)" +666,"Maturaba","Maturaba","–","–","–","–","town","Central Assyria, Arzūḫina province","RGTC 7 2/2: 420" +668,"Mazani","Mazani (?)","–","–","–","–","village","Assyria","Bagg RGTC 7 2/2: 420" +662,"Maškan-šapir","Maškan-šapir, Tell Abu Duwari H639","–","32.40508948708455","45.22069097667509","–","–","–","–" +663,"MašqÄ«te","MašqÄ«te, MašqÄ«tu, Mašqitu","–","–","–","URU.maš-qi-te","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 2: 396–397" +639,"Maḫalliba","Maḫalliba, MaḥÄlib",1,"33.35","35.48333","–","city","–","Helsinki Atlas: 13 (map 8 A3)" +673,"Meluḫḫa","KĹ«su, Kush, Cush, Kuš, Meluḫḫa, Emeluḫḫa, Nubia","–","–","–","me-luḫ-ḫa, KUR.me-luḫ, KUR.me-luḫ-ḫa, KUR.me-luḫ-ḫi, KUR.mi-luḫ-ḫa, KUR.me-luḫ-ḫe, KUR.me-luḫ-ḫe-e, KUR.me-luḫ-ḫe-e.KI, LĂš.me-luḫ-ḫe-e, KUR.eme-luḫ-ḫa, KUR.me-lu-ḫi, KUR.me-luḫ-x-ḫa","country, territory","Africa, Nubia, India","Bagg RGTC 7 2/2: 422–424" +672,"MelÄ«di","MelÄ«di, MelÄ«de, MelitÄ“nÄ“, Melid, Meliddu, KammÄnu, Kammanu, KammanĹ«ja, Malataya Plain",1,"–","–","KUR.me-li-di, KUR.me-li-i-di, KUR.me-lid-di, KUR.me-lid-du, KUR.ma-li-da-a-a, KUR.me-li-da-a-a, KUR.me-lid-a-a, KUR.me-lid-da-a-a, KUR.mĂ©-li-da-a-a, KUR.mi-li-da-a-a, KUR.mi-lid-da-a-a, LĂš.mi-li-da-a-a, KUR.kam-ma-ni, KUR.kam-ma-nu, KUR.kam-ma-nu-a-a","state, province","Anatolia, Kummuḫi (part of since 712?), Province of turtÄnu šumÄ“lu (since 708)","Helsinki Atlas: 13 (map 3 A2), Bagg RGTC 7/1: 132, 172–174, <a href=https://pleiades.stoa.org/places/319432673</a>, <a href=https://pleiades.stoa.org/places/629040>Pleiades: Melitene</a>" +674,"Mempi","Mempi, Memphis, Memfis","–","29.85544","31.25644","URU.me-em-pi, URU.me-in-pu, URU.me-im-pi, URU.mi-in-pu","city","Egypt","Bagg RGTC 7 2/2: 424–425" +677,"MezĂŞ","MezĂŞ","–","–","–","–","town","Assyria, GĹ«zÄna province","RGTC 7 2/2: 428" +675,"Mešta","Mešta, Hasanlu",2,"37.00458","45.45889","–","city","–","Helsinki Atlas: 13 (map 5 A3)" +671,"MeḫinĂ®","MeḫinĂ®","–","–","–","–","town","–","RGTC 7 2/2: 421" +678,"Mila Mergi","Ilimmer, Ilimeri, Ilimeru, Mila Mergi, Millet Mergi",1,"37.00583","42.9135","–","monument","Iraq, Birtu (province)","Helsinki Atlas: 10 (map 4 B4), <a href=https://pleiades.stoa.org/places/649834357>Pleiades: Mila Mergi</a>" +679,"Milawanda","Milawanda, Miletos, Miletus (?)",4,"37.532214329903","27.27993258015492","–","–","–","–" +680,"Milqia","Milqia, ĘżAin Kawa, mlqy",3,"36.22916","43.99166","–","town","–","Helsinki Atlas: 13 (map 4 D5)" +681,"MinĹ«Ęľ","MinĹ«Ęľ","–","–","–","URU.mi-nu-uĘľ, URU.mu-nu-uĘľ","town","Northern Babylonia","Bagg RGTC 7 3/1: 412" +682,"Missi","Missi",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 11 C1)" +683,"MubĂ® (town)","MubĂ®","–","–","–","URU.mu-bi-a-a, LĂš.mu-bi-a-a","town","Central Assyria","Bagg RGTC 7 2/2: 430" +684,"Mugdan","Mugdan, Umm el-Jir K97 (?)",4,"32.65043710008911","44.85026956964368","–","–","–","–" +686,"Mulu...","Mulu...","–","–","–","–","city, town","Assyria","–" +685,"MulĂ®","MulĂ®, Bolgar DaÄźlari",2,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 1 D3)" +690,"Musru","Musru, Äžabal MaqlĹ«b",1,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 4 C5)" +689,"MusÄ«na-aplu-iddina","MusÄ«na-aplu-iddina","–","–","–","URU.mu-si-na-A-AĹ ","town","Arpadda province","Bagg, RGTC 7 1: 178" +694,"MutkÄ«nu","MutkÄ«nu, Tell ĘżAbÄ«r",2,"36.692","38.09983","–","town","–","Helsinki Atlas: 13 (map 3 B4)" +693,"Mušku","Mušku, Musku, Muški, Muski, Phrygia","–","–","–","–","country","Turkey","–" +691,"Muṣur","Muṣur, Egypt, Miṣraim, Miṣir",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 13 A3)" +688,"MuṣÄṣir","MuṣÄṣir, Muṣaṣir",1,"36.80353","44.59303","–","city, capital","Uraráąu","Helsinki Atlas: 13 (map 4 D5)" +631,"MÄdaba","MÄdaba, Madaba, MÄ“deba","–","31.714700808822","35.79229526122018","–","–","–","–" +632,"MÄdÄia","MÄdÄia, MÄdai, MÄ“dia, Media",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 12 A1)" +641,"MÄliki","MÄliki","–","–","–","URU.ma-la-ki, URU.ma-lak, URU.ma-li-ki, URU.ma-lak-a-a","town","RÄši, Elam","Bagg RGTC 7 3/1: 386" +642,"MÄliku","MÄliku","–","–","–","URU.ma-li-ku, URU.ma-li-ki","town","ǦazÄ«ra (?), RÄši (?)","Bagg RGTC 7 2/2: 385 (MÄliku), Bagg RGTC 7 3/1: 386 (MÄliki) (?)" +664,"MÄt TÄmti","MÄt-tâmti, MÄt TÄmti, Sealand",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 16 B2)" +667,"MÄzamua","MÄzamua, Zamua, LullumĂ», Lullu, Lullubu, Lullubum",2,"–","–","KUR.lu-ul-lu","state, province","MÄzamua, LullumĂ»","Helsinki Atlas: 13 (map 11 A1), Radner (2006), RlA 11: 51–52" +669,"MÄĘľab","MÄĘľab, MĂ´ĘľÄb, Moab",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 7 D5)" +676,"MÄ“turna","MÄ“turna, MĂŞ-Turnat, MĂŞ-Turran, MĂŞ-Turan, MĂŞ-Turnu, Tell ḤaddÄd (?), Tell al-SÄ«b (?), es-Sib (?), Tulul Baradan (?), Tell Baradan (?), Haddad (?)",1,"34.18581","45.05152","–","city","–","Helsinki Atlas: 13 (map 10 D2), <a href=https://pleiades.stoa.org/places/894042>Pleiades: Me-Turnat</a>" +687,"MĹ«ru","MĹ«ru, Tibil",3,"36.692","37.01917","–","city","BÄ«t-AgĹ«si","Helsinki Atlas: 13 (map 2 D4)" +692,"Mūši","–",3,"36.53333","44.4","–","town","–","Helsinki Atlas: 13 (map 4 D5)" +695,"Nabada","Nabada, Tell Beidar","–","36.73816167702558","40.58730935539984","–","–","–","–" +696,"NabajÄti","NabajÄti, Nabâtu, NebaĘľÄti, nbyt, n<sup>e</sup>bÄyĂ´t, × Ö°×‘Ö¸×™×•Öą×Ş, nbyh, đˇŤđˇđˇ‰đˇ„","–","–","–","KUR.na-ba-a-a-te, KUR.na-ba-a-a-ti, LĂš.na-ba-a-a-ti, URU.na-ba-a-a-ti, KUR.na-ba-a-a-ta-a-a, KUR.na-ba-a-a-ti-a-a, LĂš.na-ba-a-a-ta-a-a, × Ö°×‘Ö¸×™×•Öą×Ş, đˇŤđˇđˇ‰đˇ„","tribe, territory","Arabian Peninsula","Bagg RGTC 7 2/2: 439–440" +698,"Nabula","Nabula, Nawali, Gir Nawas, Girnavaz",1,"37.10493","41.23044","–","town","–","Helsinki Atlas: 13 (map 3 E3)" +697,"NabĂ» Temple of Kalḫu","Ezida, NabĂ» Temple of Kalḫu","–","36.0970655912","43.3303415509","É.ZI.DA","temple","Central Assyria, Kalḫu province, Kalḫu","George 1993, House Most High: 160, <a href=https://pleiades.stoa.org/places/242008148>Pleiades: Ezida (Kalhu)</a>" +700,"NagiÄti","NagiÄti, Nagiati, NagiÄtu, Nagiatu",3,"34.50183","40.9165","URU.na-gi-a-te","town","–","Helsinki Atlas: 13, Bagg RGTC 7 2: 442 (map 9 C2)" +701,"Nagsu","Nagsu, U175 (?)",4,"31.69619309557163","45.7837152077515","–","–","–","–" +704,"Nahr el-Kelb","Nahr el-Kelb, Nahr al-Kalb","–","33.955434","35.597312","–","monument","Lebanon","<a href=https://pleiades.stoa.org/places/2970016>Pleiades: Nahr al-Kalb monuments</a>" +705,"Najafehabad","Najafehabad, NaÄźafabad, Najafabad","–","34.4295","47.86967","–","monument","Iran, Kišēsim","Helsinki Atlas: 28 (map 11 B2)" +706,"Nal","Nal",2,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 4 B5)" +707,"Nampigu","Nampigu, Nappigi, Nappigu, MenbiÄź, MembiÄź, BambykÄ“, Manbij","–","36.52828807598983","37.95515225576806","–","city","–","Helsinki Atlas: 13 (map 3 A4)" +708,"Namri","Namri",2,"–","–","–","country","–","Helsinki Atlas: 13 (map 11 B2)" +709,"NamrÄ«tu","NamrÄ«tu, NÄudÄr","–","–","–","–","river","–","Helsinki Atlas: 13 (map 11 B2)" +710,"Napata","Napata, Jebel Barkal","–","18.53531834028109","31.83062507955553","–","–","–","–" +711,"Napisina","Napisina","–","–","–","URU.na-pi-si-na","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2: 447" +712,"Napisu","Napisu","–","–","–","URU.na-pi-su, na-pi-šá-a-a, KUR.na-pi-sá-a-a","town","Assyria, Laḫīru","Bagg RGTC 7 2: 447, " +719,"Natḫu","Natḫu, Natḫû, NathĹŤ, LeontĹŤn Polis, Leontopolis, Tall al-MuqdÄm, Tell el-Moqdam","–","30.67955","31.35798","URU.na-at-ḫu-Ăş","city","Muṣur, Egypt","Bagg RGTC 7 2/2: 451 (Natḫû 2), <a href=https://pleiades.stoa.org/places/727147>Pleiades: Leontopolis</a>" +720,"Natḫû","Natḫû, NathĹŤ, LeontĹŤn Polis, Leontopolis, Tall al-YahĹ«dÄ«ya, Tell el-Yahudiya","–","30.2921","31.33083","URU.na-at-ḫu-Ăş","city","Muṣur, Egypt","Bagg RGTC 7 2/2: 451 (Natḫû 1), <a href=https://pleiades.stoa.org/places/727146>Pleiades: Leontopolis</a>" +721,"NaĘľiri","NaĘľiri, Nairi",2,"–","–","–","region","–","Helsinki Atlas: 14 (map 3 D3)" +702,"Naḫal Muṣur (alt. loc.)","Naḫal Muṣur (alt. loc.), WÄdÄ« Ä azza","–","–","–","–","river","–","–" +703,"Naḫal-Muṣur","Naḫal-Muṣur, Naḥal Mizraim, × ×”×ś מצרים, × ×”×¨ מצרים, River of Egypt, Brook of Egypt, WÄdÄ« al-ĘżArīš, Ůادي العريش",2,"–","–","na-ḫal KUR.mu-ṣur, na-ḫal KUR.mu-uṣ-ri","river","Egypt","Helsinki Atlas: 14 (map 13 C3), Bagg RGTC 7 1: 291" +718,"Naṣībina","Naṣībina, NaṣībÄ«na, NaṣībÄ«ni, Naṣipinu, Naṣipanu, Naṣibina, Nisibis, Nuṣaybin, Nisibin, Nisibis, Nusaybin",1,"37.06887","41.21395","na-ṣi-be-na, na-ṣi-pa-ni, na-ṣib-i-na, na-ṣib-na, URU.na-ṣa-pi-na, URU.na-ṣi-bi-na, URU.na-ṣi-pi-na, URU.na-ṣib-bi-na, URU.na-ṣib-na, URU.na-ṣib-i-na, URU.na-ṣi-pi-na-a-a","prov. capital","ḪÄbĹ«r area","Helsinki Atlas: 14 (map 3 E3), Bagg RGTC 7 2: 449–450" +726,"Nerebtum","Nerebtum, Ishchali","–","33.30358590414998","44.58274622287485","–","–","–","–" +727,"Nikippa","Nikippa",2,"–","–","–","mountain","–","Helsinki Atlas: 14 (map 11 B1)" +728,"Nikkur","Nikkur, RawÄnsÄ«r",4,"34.74983","46.631","–","prov. capital","–","Helsinki Atlas: 14 (map 11 B2)" +729,"Nilibši","Nilibši, Nilabšini, Nagar, Nawar, Tell BrÄk, Tell Brak, ŘŞŮ„ براŮ","–","36.6671","41.0585","–","town","–","Helsinki Atlas: 14 (map 3 E4)" +730,"Ninâ","Nina, Surġūl, TulĹ«l -az-Zurġūl, Surghul, Ishan Durghul",1,"31.37762560029498","46.49431484186504","–","town","–","Helsinki Atlas: 14 (map 16 B2)" +732,"Nippur","Nippur, Nuffar",1,"32.12623","45.23134","–","city, provincial capital","Babylonia","Helsinki Atlas: 14 (map 10 E4), <a href=https://oi.uchicago.edu/research/projects/nippur-expedition>Nippur Expedition</a>" +733,"Nipur","Nipur, Äžudi DaÄź",2,"37.39866","42.46366","–","mountain","–","Helsinki Atlas: 14 (map 4 B4)" +734,"Nirgi","Nirgi","–","–","–","URU.ni-ir-gi","town","Central Assyria (?)","Bagg RGTC 7 2/2: 468" +735,"Nisa","Nisa","–","37.95153","58.21157","–","–","–","–" +737,"NiĘľ","NiĘľ, Thebe, Thebes, Waset, Nut","–","25.70837095778625","32.64734464125721","–","–","–","–" +738,"NiĘľu","NiĘľu, Nihi, Niḫi, Niya, Apamea, QalĘżat Maḍīq, Qal'at el-Mudiq",2,"35.4198576713808","36.392271981049","–","town","–","Helsinki Atlas: 14 (map 8 B1)" +736,"Niṣir","Niṣir, NiMUĹ , Pir-i Mukurun, Pir Omar Gudrun, Pire MagrĹ«n",2,"35.77247","45.22961","–","mountain","–","Helsinki Atlas: 14 (map 10 E1), Bagg RGTC 7 3/1: 96 (in connection with BÄru)" +740,"Nulia","Nulia, Niara, Lulia (?), Niyara, NiyÄrah, نيارة, Ǧabal SemĘżan (?), جبل سمعان, Ǧabal Barakat (?), Ĺ eiḫ Bereket (?), Ř´ŮŠŘ® برŮات","–","36.27615","36.82203","URU.nu-li-a","town","Pattinu, Syria","Bagg RGTC 7 1: 183, <a href=https://pleiades.stoa.org/places/658546>Pleiades: Niara</a>" +741,"Nuniba","Nuniba","–","–","–","URU.nu-ni-ba","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 470" +739,"Nuḫubu","Nuḫubu, Nuḫbu, Nuḫba","–","–","–","–","town","–","RGTC 7 2/2: 469" +713,"NÄr Ĺ arri","NÄr-šarri, NÄr-Ĺ arri, Nahar MalkÄ",2,"–","–","–",",canal","–","Helsinki Atlas: 13 (map 10 D3)" +714,"NÄrtu","NÄrtu",3,"–","–","–","territory","–","Helsinki Atlas: 14 (map 11 D2)" +715,"NÄrtu elÄ«tu","NÄrtu elÄ«tu, NÄrtu-elÄ«tu","–","–","–","–","river","–","Helsinki Atlas: 14 (map 12 A2)" +716,"NÄrtu šaplÄ«tu","NÄrtu šaplÄ«tu, NÄrtu-šaplÄ«tu","–","–","–","–","river","–","Helsinki Atlas: 14 (map 11 D2)" +717,"NÄru ša BÄ«t-DÄ“rÄia","NÄru-ša-BÄ«t-DÄ“rÄia, NÄru-ša-BÄ«t-DÄ“rÄja, GalÄl Badra",2,"–","–","–","river","BÄ«t-DÄ“rÄja","Helsinki Atlas: 14 (map 11 A3)" +722,"NÄ“barti-Aššur","NÄ“barti-Aššur, Tall Graiye 3, Al QurayyÄ, El QraĂŻyĂ©, القŮرية, القريا","–","34.95629","40.54139","nĂ©-bar-ti-aš-šur","town","Middle Euphrates, Syria","Bagg RGTC 7 2/2: 451–452" +723,"NÄ“med-IssÄr","NÄ“med-IssÄr, NÄ“med-Ištar, Tell ĘżAfar",4,"36.37667","42.46583","URU.ne-med-<sup>d</sup>15, URU.nĂ©-med-15, URU.nĂ©-med-<sup>d</sup>15, URU.nĂ©-med-<sup>d</sup>INANNA, URU.nĂ©-med-<sup>d</sup>15-a-a","city","Assyria, North ǦazÄ«ra, Raṣappa","Helsinki Atlas: 14 (map 4 B5), Bagg RGTC 7 2/2: 452–453" +724,"NÄ“med-Laguda","NÄ“med-Laguda, NÄ“med-Lagudu","–","–","–","UĹ -dla-gu-du.KI, URU.nĂ©-med-dla-gu-da, URU.nĂ©-me-ed-la-gu-da, nĂ©-med-dla-gu-da.KI","town","Southern Babylonia","–" +725,"NÄ“rab","NÄ“rab, NÄ«rabu, Nereb, Nayrab, Neirab",1,"36.1775","37.22708","–","city","Arpadda province","Helsinki Atlas: 14 (map 2 D4), Bagg, RGTC 7 1: 178" +731,"NÄ«nuwa","NÄ«nuwa, NÄ«nevÄ“, NÄ«nuwÄ, NÄ«nua, Nineveh, Tell QĹ«yunÄźiq, Tell Nebi Yunus",1,"36.35929","43.15199","–","capital, city","Assyria","Helsinki Atlas: 14 (map 4 C5)" +742,"Padakku","Padakku, Ha'it","–","25.98033212387223","40.4744466279597","–","–","–","–" +743,"PadÄnu","PadÄnu, Paddanu, PadÄni, Padnu","–","–","–","URU.pa-da-a-ni, URU.pa-da-ni, URU.pa-ad-nu","town","Diyala Region","Bagg RGTC 7 2/2: 472 (Padnu), Parpola Toponyms: 271 (PadÄni)" +745,"PaiĂŞ","PaiĂŞ","–","–","–","–","town","North Assyria (?)","RGTC 7 2/2: 473" +746,"Palgu ša ḪabĹ«r","Palgu-ša-ḪabĹ«r, DawwarÄ«n Canal",2,"–","–","–","canal","–","Helsinki Atlas: 14 (map 9 C1)" +747,"PallĹ«kat","PallĹ«kat, al-FallĹ«Äźa, Pallakottas",1,"33.357","43.77583","–","town","–","Helsinki Atlas: 14 (map 10 C3)" +748,"Panziš","Panziš",4,"36.41666","47.08333","–","fortress","–","Helsinki Atlas: 14 (map 5 C4)" +749,"Pappa","Pappa, Paphos, PÄphos, Kouklia",1,"34.70773537188416","32.57386157169607","–","city","–","Helsinki Atlas: 14 (map 7 A2)" +750,"PaqarḫubĹ«ni","PaqarḫubĹ«ni, Gaziantep",3,"37.06618","37.38332","–","city","–","Helsinki Atlas: 14 (map 2 D3)" +752,"Paritakka","Partakka, ParÄ“takÄ“nÄ“, IsfanÄn",2,"–","–","–","territory","–","Helsinki Atlas: 14 (map 12 A3)" +753,"Parsua","see also Parsumaš",2,"–","–","–","state, province","–","Helsinki Atlas: 14 (map 11 B2)" +754,"Parsumaš","Fars, Persis, see also Parsua",2,"–","–","–","territory","–","Helsinki Atlas: 14 (map 17 C2)" +756,"PatibÄ«ri","PatibÄ«ri, Bad-tibira, Bad-Tibira, Tell Madain, Tell Medinah, Madain",1,"31.38134980866285","46.00364502667787","–","town","–","Helsinki Atlas: 14 (map 16 A2)" +757,"Patiškun","Patiškun, Phathakon (?), Istilil (?)","–","–","–","URU.pa-ti-iš-kun (?)","town","BÄ«t-ZamÄni","Bagg RGTC 7 2: 476" +758,"Patti-Illil","Patti-Illil, Patti-Enlil",2,"–","–","–",",canal","Northern Babylonia","Helsinki Atlas: 14 (map 10 C3)" +759,"Pattinu","KullanÄ«a, Kunulua, KinalĹ«a, Kullania, KunalÄ«a, Pattinu, Patina, Patinu, Pattina, Ḫattina","–","–","–","–","state, territory, province","KullanÄ«a, Pattinu, Syria","Helsinki Atlas: 14 (map 2 C4)" +760,"Patušarra","Patušarra, Padašvar, Pateischoreis",3,"–","–","–","country","–","Helsinki Atlas: 14 (map 6 D5)" +755,"Pašime","Pašime, Tell Abu Sheeja","–","32.39476517362748","47.14907362172696","–","–","–","–" +744,"Paḫri","Paḫri, Misis",3,"36.96183","35.61333","–","city","–","Helsinki Atlas: 14 (map 2 B4)" +761,"Penzâ","Penzâ, Genç","–","38.75056","40.55417","URU.pe-en-za-a ","city","Ĺ ubria, Turkey ","Helsinki Atlas: 14 (map 3 D2), Bagg RGTC 7 2/2: 477, <a href=https://www.geonames.org/314649/genc.html>Geonames: Genç</a>" +762,"Persepolis","Persepolis, Parsa, Persai, Sat Setun, Takht-i Jamshid","–","29.9353403333","52.889437","–","–","Iran, Anšan, Elam","<a href=https://pleiades.stoa.org/places/922695>Pleiades: Persepolis/Parsa/Persai/Sat Setun</a>" +763,"Pilistu","Pilistu, Philistia, PelištĂ®",1,"–","–","–","country","–","Helsinki Atlas: 14 (map 7 C5)" +765,"Province of masennu","Province of masennu, MÄt masenni",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt masenni, map 4 B4)" +766,"Province of nÄgir ekalli","Province of nÄgir ekalli, MÄt nÄgir ekalli, MÄt-nÄgir-ekalli",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt nÄgir ekalli, map 4 D5)" +767,"Province of rab šÄqĂŞ","MÄt rab šÄqĂŞ, Province of rab šÄqĂŞ",3,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt rab šÄqĂŞ, map 4 A4)" +768,"Province of turtÄnu","TurtÄnu, MÄt turtÄni, Province of turtÄnu",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt turtÄni, map 3 B3)" +769,"Pulua","Pulua, Palu",4,"38.70239","39.9535","–","city","–","Helsinki Atlas: 14 (map 3 C2)" +770,"PuqĹ«du","PuqĹ«du, PeqĂ´d",3,"–","–","–","tribe","–","Helsinki Atlas: 14 (map 16 B2)" +771,"Purattu","Purattu, Euphrates, al-FurÄt",1,"–","–","–","river","–","Helsinki Atlas: 14 (map 10 B3)" +772,"Puzriš-Dagan","Puzriš-Dagan, Drehem H1001","–","32.05966976844359","45.29229603804436","–","–","–","–" +751,"PÄra","unknown, PÄra, Para, BÄra, BÄrah, بارة","–","36.3757","41.4852","–","monument","Iraq","Helsinki Atlas: 14 (map 4 A5)" +764,"PÄ«ru","PÄ«ru","–","–","–","URU.pi-i-ru","town","–","Bagg RGTC 7 2: 480" +773,"Qablit","Qablit","–","–","–","URU.qab-lit","town","Izalla","Bagg RGTC 7 2/2: 484" +774,"QadinĂŞ","QadinĂŞ, Qatnu, QaáąáąunÄn, Gudadanum, QattunÄn, Tell FadġÄmi",3,"35.918","40.88483","URU.qa-di-nĂ©-e","town","mid-ḪabĹ«r","Helsinki Atlas: 14 (map 3 D5), Bagg RGTC 7 2: 489–491" +776,"Qadumu","Qadumu, Qatma (?)","?","36.58475767424099","36.96524084139543","–","–","–","–" +775,"QadÄ«su","QadÄ«su, Qadeš, Kadeš, QÄdēš, Tell NebÄ« Mend, Tell Nebi Mendo",1,"34.5530600329926","36.51879036532772","–","town","–","Helsinki Atlas: 14 (map 8 B2)" +778,"Qallania","Qallania, Berdesur çay","–","–","–","–","river","–","Helsinki Atlas: 14 (map 4 E4)" +777,"Qal’eh-i Imam","Qal’eh-i Imam, Imam Fortress, Marivan Fortress, Qal’eh-i Marivan","–","35.49134","46.17588","–","–","Iran, Kurdistan, Marivan District","<a href=https://pleiades.stoa.org/places/858969850>Pleiades: Qal’eh-i Imam</a>" +780,"QanĂ»","QanĂ», Qanawat","–","32.7550572637493","36.61859072108363","–","–","–","–" +781,"Qarena","Qarena, Qarenabis","–","–","–","URU.qar-e-na","town","Izalla","Bagg RGTC 7 2/2: 487–488" +782,"QarnÄ«na","Qarnina, Qarnaim, Ĺ eiḫ SaĘżd, Shaykh Sa'ad?",1,"32.836875092298","36.03687665155054","–","prov. capital","–","Helsinki Atlas: 14 (map 8 B4)" +783,"Qarqar","Qarqar, Tell Qarqur",3,"35.74210088217787","36.33069731154433","–","city","–","Helsinki Atlas: 14 (map 2 C5)" +785,"Qarti-Ḫaldi","Qarti-Ḫaldi","–","–","–","URU.qar-ti—ḫal-di","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 488" +784,"Qarti-ḫadasti","Qarti-ḫadasti, Kition, Larnaca, Larnaka",1,"34.91971","33.63384","–","city","–","Helsinki Atlas: 14 (map 7 B2), <a href=https://pleiades.stoa.org/places/707556>Pleiades: Larnaka</a>" +787,"Qatna","Qatna, Qatnu, QatnĂ», Tell AšamšÄni, Tall AšamšÄnÄ«, Tell Ašamsani (?)",3,"35.8779","40.87166","KUR.qat-ni, URU.qa-at-ni, URU.qat-ni, URU.qa-at-na-a-ia, URU.qat-na-a-ia, URU.qat-ta-na-ia","town","mid-ḪabĹ«r","Helsinki Atlas: 14 (map 3 D5), Bagg RGTC 7 2: 489–491" +786,"Qaštu","Qaštu","–","–","–","URU.BAN, URU.BAN-a-a","town","Assyria","Bagg RGTC 7 2/2: 489" +788,"Qaáąna","Qaáąna, Tell Mishrifeh, Tall Mašrafa","–","34.83448","36.86609","–","–","North Levant","Bagg RGTC 7 2: 490 (under Qatna / Tall AšamšÄnÄ«), <a href=http://www.qatna.org/en-index.html>Qatna / Tell Mishrifeh Website</a>" +789,"Qedeš","Qedeš, Tel Qedesh","–","33.11314","35.52853","–","–","–","<a href=https://daily.jstor.org/the-archaeological-mystery-of-tel-kedesh/>The Archaeological Mystery of Tel Kedesh</a>" +790,"Qidru","Qidru, QÄ“dÄr, Cedrei",3,"–","–","–","country","–","Helsinki Atlas: 14 (map 15 D3)" +791,"Qilissa","Qilissa, Khlisi, Silvan",3,"38.14883","41.01266","–","town","–","Helsinki Atlas: 14 (map 3 D2)" +792,"QinnasrÄ«na","QinnasrÄ«na, QinnasrÄ«n, NebÄ«Ęľ ʿĪs, Chalcis ad Belum",2,"35.98932","37.00383","–","town","–","Helsinki Atlas: 15 (map 2 D5)" +793,"QipÄnu","QipÄnu",2,"–","–","–","district","–","Helsinki Atlas: 15 (map 3 C3)" +794,"Qirbit","Qirbit, Qirbutu, Kirbit, Ilam, IlÄm",4,"33.63497","46.41528","URU.qir-bi-it, URU.qir-bi-ti, URU.qir-bit, URU.qir-bĂt, URU.qir-bu-tu","city","East Babylonia, Ḫalēḫasta","Helsinki Atlas: 15 (map 11 B3), Bagg RGTC 7 2/2: 494–495" +795,"QubbÄte","QubbÄte","–","–","–","–","town","East ǦazÄ«ra, Raṣappa (?)","Bagg RGTC 7 2/2: 495–496" +796,"QudÄru","QudÄru","–","–","–","URU.qu-da-ru","town","Central Assyria (?)","Bagg RGTC 7 2/2: 496" +797,"Qumbuna","Qumbuna, Qunbuna","–","–","–","URU.qu-um-bu-na, URU.qu-un-bu-na","town","MÄzamua","–" +798,"QumÄ“ni","QumÄ“ni, QumanĂ®, QumÄnu, QumÄ“nu, QumanĂ», Plain of Silopi",3,"–","–","–","territory","–","Helsinki Atlas: 15 (map 4 B4), RGTC 7 2/2: 497" +799,"Quruba","Quruba","–","–","–","–","territory","North Assyria (?)","RGTC 7 2/2: 499" +800,"Qurubi","Qurubi, Qurrubu","–","–","–","–","town","–","RGTC 7 2/2: 499" +801,"QutĂ»","QutĂ», Guti, Gutium","–","–","–","–","territory","Iran","Parpola Toponyms: 138 (Gutium)" +802,"QuwĂŞ (capital)","QuwĂŞ, Que, Adana, Coa",4,"36.99333","35.34233","–","prov. capital","–","Helsinki Atlas: 15 (map 2 B4)" +803,"QuwĂŞ (country)","QuwĂŞ, Que, Coa, QewÄ“",2,"–","–","–","province","–","Helsinki Atlas: 15 (map 2 B4)" +779,"QÄna","QÄna, Ḫirbat QÄnÄ",3,"37.5",42,"–","town","–","Helsinki Atlas: 15 (map 4 B4)" +804,"RablÄ","RablÄ, RablĂŞ, RiblÄh, Tell Zira'at, Ribla",1,"34.45954691757429","36.57262261969346","–","city","–","Helsinki Atlas: 15 (map 8 B2)" +805,"RadÄnu","RadÄnu, Nahr al-ĘżUzaim, Physkos",2,"–","–","–","river","–","Helsinki Atlas: 15 (map 10 D2)" +810,"Rappâ","Rappâ","–","–","–","ĂŤD.rap-pa-a","river","–","Parpola Toponyms: 292" +807,"Rapâ (town)","Rapâ","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/2: 503" +808,"Rapīḫu","Rapihu, Raphia, Rafaḥ, Rafah",1,"31.30152961251805","34.24261667132028","–","town","–","Helsinki Atlas: 15 (map 7 C5)" +806,"Raḫimmu","Raḫimmu",3,"33.37866","43.50316","–","town","–","Helsinki Atlas: 15 (map 10 C3)" +811,"Raṣappa","Raṣappa, Sergiopolis, Resafa, Rezef, Reṣep, (al-)RuṣÄfa",3,"35.62908419489116","38.75819320314854","–","prov. capital","–","Helsinki Atlas: 15 (map 3 B5)" +812,"Reḫōv","Reḫōv, Rehob, Tel Rehov, Tell es-Sarem","–","32.45681300656256","35.49778333702537","–","–","–","–" +814,"Rummunidu","Rummunidu, Rummunina, Tell Mašīḥ (?)",3,"35.20317","40.52517","URU.ru-um-mu-ni-na","town","LÄqĂŞ","Helsinki Atlas: 15 (map 9 C1), Bagg RGTC 7 2: 511" +817,"Rusai URU.TUR","Rusai URU.TUR, Bastam","–","38.88592314900662","44.94843769009853","–","–","–","–" +815,"Rusaḫinili Eidurukai","Rusahinili Eidurukai, Ayanis, AÄźartı",1,"38.70805567683607","43.21146686196357","–","city","–","Helsinki Atlas: 15 (map 4 C3)" +816,"Rusaḫinili Qilbanikai","Rusaḫinili Qilbanikai, Rusaḫinili, Rusahinili, Toprakkale",1,"38.50998328968381","43.40639519418901","–","city","–","Helsinki Atlas: 15 (map 4 C3)" +809,"RÄpiqu","RÄpiqu, Rapiqu, Raphaka, Tell al-AnbÄr",2,"33.46666","43.25833","–","town","–","Helsinki Atlas: 15 (map 10 C3)" +813,"Rēš-Ä“ni","Rēš-Ä“ni, Rus al-ĘżAin",2,"36.54999","43.21666","–","village","–","Helsinki Atlas: 15 (map 4 C5)" +818,"Sa","Sa, Sais, Sa el-Hagar","–","30.96246207693751","30.76838085331379","–","–","–","–" +820,"SabḫÄnu","SabḫÄnu",3,"32.46666","44.3","–","fortress","–","Helsinki Atlas: 15 (map 10 D4)" +821,"SagĹ«ru","SagĹ«ru, Sagurri, SÄğūr, Nahr as-SÄğūr",1,"–","–","–","river","–","Helsinki Atlas: 15 (map 3 A4)" +825,"Sairi","Sairi, Sairu","–","–","–","URU.sa-i-ri","town","Assyria","Bagg RGTC 7 2/2: 518" +826,"SalammĂŞ","SalammĂŞ","–","–","–","–","town","Central Assyria (?), East Tigris area (?), Laḫīru (?)","RGTC 7 2/2: 519" +827,"SalimÄni","SalimÄni","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/2: 520" +828,"Sallat","Sallat, Salatu",3,"33.16667","43.91667","URU.sa-la-te","town","Northern Babylonia","Helsinki Atlas: 15 (map 10 C3)" +829,"Saluara","Saluara, Labotas, Kara su",1,"–","–","–","river","–","Helsinki Atlas: 15 (map 2 C4)" +830,"Samakku","Samakku","–","–","–","URU.sa-ma-ak-ka, URU.sa-ma-ku","town","Central Assyria","Bagg RGTC 7 2/2: 521" +831,"Samarra","Samarra","–","34.206","43.88002","–","–","–","–" +833,"SamsimurĹ«na","SamsimurĹ«na, Ğūniya","–","33.97783","35.62816","–","capital","–","Helsinki Atlas: 16 (map 8 A3)" +1058,"SamÄnu","SamÄnu","–","–","–","URU.sa-ma-na, URU.sa-ma-ni, URU.sa-ma-nu, URU.sa-am-ma-na-a-a, URU.sa-ma-na-a-a","town","Assyria, Ĺ ibanÄ«ba","Bagg, RGTC 7/2–2: 521" +834,"SamĘľalla","SamĘľalla, SamĘľal, šmĘżl, Zencirli, Zincirli, Zinçirli",1,"37.10332","36.67788","–","prov. capital","Sam'al, SamĘľalla, BÄ«t-GabbÄri","Helsinki Atlas: 15 (map 2 C3), <a href=https://zincirli.uchicago.edu>Zincirli HöyĂĽk</a>" +835,"SangarÄ«tu","SangarÄ«tu, Saggaratum, Tell AbĹ« ḤÄĘľit, Tell Abu Ha'it",3,"35.25119717279915","40.55705303323461","–","town","–","Helsinki Atlas: 16 (map 9 C1)" +836,"SangibĹ«tu","SangibĹ«tu, BÄ«t-Sangibuti, BÄ«t-SangibĹ«ti, Plain of Ḫoy, Plain of Khoy, Khowy, Ḫōy, Ř®ŮŰŚ",2,"38.5503","44.9521","KUR.É-sa-an-gi-bu-ti, KUR.sa-an-gi-bu-te, KUR.sa-an-gi-bu-ti","district, Uraráąian province","Uraráąu, Iran, West Azerbaijan","Zimansky (1990), <i>Urartian Geography and Sargon's Eighth Campaign</i>, JANES 49/1: 15, Parpola Toponyms: 88, 303, Bagg RGTC 7 3/1: 149 (BÄ«t-SangibĹ«ti 2), Helsinki Atlas: 16, 29 (SangibĹ«tu (1), map 4 D3)" +837,"SanÄ«ru","SanÄ«ru, SenĂ®r, SanÄ«r, Hermon",2,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 8 A3)" +838,"SapalÄte","SapalÄte","–","–","–","–","town","–","RGTC 7 2/2: 522" +839,"Sapirrutu","Sapirrutu, Saburutu, Sabiritu, Sapiratum, SapĂ®ratum, ÄžazÄ«rat BÄ“ÄźÄn, Bijan",3,"34.30701","42.12688","URU.sa-bi-re-te, URU.sa-bi-ru-tu, URU.sa-pi-ri-te, sa-pi-rit","town","mid-Euphrates, Sūḫu","Helsinki Atlas: 16, Bagg RGTC 7 2: 516" +842,"Sardes","Sardes, Sartmustafa","–","38.48488020937479","28.04362609584273","–","–","–","–" +843,"Sarduriḫinili","Sarduriḫinili, Sardurihinili, Chavushtepe, ÇavuĹźtepe",2,"38.35299780346134","43.46128741722196","–","city","–","Helsinki Atlas: 16 (map 4 C3)" +846,"SarrabÄnu","SarrabÄnu","–","–","–","URU.sa-rab-na-a.a, URU.sa-ar-rab-a-ni, URU.sa-ar-rab-a-nu, URU.sa-ar-ra-ba-nu, URU.sar-ra-ba-ni, URU.sa-ar-ra-ba-a-nu","city","Southern Babylonia, BÄ«t-Ĺ ilÄni","–" +847,"Sarragitu","Sarragitu, SarragÄ«tu, Ĺ arragitu","–","–","–","URU.šá-ra-gi-ti, URU.sa-ar-ra-gi-tu, sa-ra-gi-ti, sa-ar-ra-gi-ti, URU.sar-gi-te (?)","fortified city","Babylonia","<a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +844,"SarĂŞ","SarĂŞ, AltĹ«n KĹ«brÄ«",4,"35.7455","44.13983","–","town","–","Helsinki Atlas: 16 (map 10 D1)" +848,"SarĹ«gu","SarĹ«gu, Suruṣ, SarĹ«Äź","–","36.97366","38.41883","–","town","–","Helsinki Atlas: 16 (map 3 B4)" +849,"SasiqÄni","SasiqÄni, SalÄmÄ«ya",4,"36.13733","43.3195","–","town","–","Helsinki Atlas: 16 (map 4 C5)" +850,"Sazabu","Sazabu, Ĺ azabĂŞ, Tell ĘżAmarna, Ĺ aḏabu",1,"36.74532","38.01371","–","town","–","Helsinki Atlas: 16 (map 3 B4)" +851,"Sazanâ","Sazanâ, Ĺ aezana",3,"34.14366","36.75333","–","town","–","Helsinki Atlas: 16 (map 8 B2)" +852,"SaĘľarru","SaĘľarru, Ĺ aĘżÄra",1,"33.11433","36.35499","–","town","–","Helsinki Atlas: 16 (map 8 B3)" +822,"SaḫlÄla","SaḫlÄla, Tell SahlÄn",3,"36.5",39,"–","town","–","Helsinki Atlas: 16 (map 3 B4)" +823,"SaḫrÄ«na","SaḫrÄ«na",3,"32.41666","44.41666","–","town","–","Helsinki Atlas: 16 (map 10 D4)" +853,"Siannu","Siannu, Siyannu, Tell SiyÄnu, Tell Siyanu",1,"35.36539543015847","36.00295594215738","–","city","–","Helsinki Atlas: 16 (map 8 A1)" +857,"Sikiri","Sikiri, Kisiri, Kisiru, Tell Ĺ addÄda",1,"36.0325","40.76433","URU.ki-si-ri, URU.si-ki-ri","town","ḪÄbĹ«r area","Helsinki Atlas: 16 (map 3 D4), Bagg RGTC 7 1: 345 (Kisiri 1)" +856,"SikÄni","SikÄni, Sikani, SikÄnu, Sikanu, Wašukanni, Tell FaḫÄrÄ«ya, Tell Fekheriye, Tell Fekherye",1,"36.84261","40.06983","–","town","–","Helsinki Atlas: 16 (map 3 D4), <a href=https://pleiades.stoa.org/places/572048102>Pleiades: Sikani</a>" +859,"Sillu","Sillu, Soloi",1,"35.1415","32.81266","–","city","–","Helsinki Atlas: 16 (map 7 A1)" +860,"Silluwa","Silluwa, Salamis, Konstanteia",1,"35.18558206858346","33.89933423453447","–","city","–","Helsinki Atlas: 16 (map 7 B1)" +858,"Silḫazi","Silḫazi, KĹ«h-i Alwand",3,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 11 D2)" +862,"Simirria","Simirria, KĹ«h-i Ĺ aiḫ MÄret",2,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 11 B1)" +863,"Sinabir","Sinabir","–","–","–","KUR.si-na-bi-ir","mount","–","Parpola Toponyms: 310" +867,"SinaĘľini","SinaĘľini","–","–","–","URU.si-na-Ęľi-i-ni","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 532" +866,"Sinaḫulzi","Sinaḫulzi","–","–","–","KUR.si-na-ḫul-zi","mount","–","Parpola Toponyms: 310" +868,"SingÄra (mountain)","SingÄra, Singara, Äžabal SinÄźÄr, Singara",1,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 4 A5)" +869,"SingÄra (town)","SingÄra, Singara, Balad SinÄźÄr, Balad Sinjar",1,"36.32755273132588","41.85724480938713","–","town","–","Helsinki Atlas: 16 (map 4 A5)" +870,"Sinnu","Sinnu, as-Sinn",3,"35.33333","43.5","–","town","–","Helsinki Atlas: 16 (map 10 C1)" +871,"Sinzi","Sinzi, Göksu, Singas",1,"–","–","–","river","–","Helsinki Atlas: 16 (map 3 A3)" +864,"SinÄbu (1)","SinÄbu, Sinabu, Aktepe",4,"37.72451603785152","40.56932833730519","–","prov. capital","–","Helsinki Atlas: 16 (map 3 D3)" +865,"SinÄbu (2)","SinÄbu, Sinabu, MurattaĹź, Pornak",4,"37.79679781783449","40.38033037771094","–","–","–","–" +872,"Sippar","Sippar, Sippar-ṣērim, Tell AbĹ« Ḥabba, Abu Habba",1,"33.06","44.25466","–","prov. capital","–","Helsinki Atlas: 16 (map 10 D3)" +873,"Sippar-ArĹ«ru","Sippar-ArĹ«ru, Sippar-dĹ«rim, Tell ed-DÄ“r, Tell ed-Der",2,"33.09812236862174","44.29948761295098","–","town","–","Helsinki Atlas: 16 (map 10 C3)" +875,"Sirdakka","Sirdakka, Zirdiakka",4,"35.1","47.16666","–","fortress","–","Helsinki Atlas: 16 (map 11 C1)" +876,"Sirqu","Sirqu, Terqa, Tell ĘżAšÄra, Ashara, ŘŞŮ„ الأشارة",1,"34.92225","40.56841","–","city","–","Helsinki Atlas: 16 (map 9 C2)" +874,"SirÄra","SirÄra, Anti-Lebanon",3,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 8 B3)" +877,"SissĂ»","SissĂ», SÄ«s, Kozan, Sission",1,"37.4475","35.82666","–","city","–","Helsinki Atlas: 16 (map 2 B3)" +878,"SiĘľimmĂŞ","SiĘľimmĂŞ, Tell ǦilÄga",4,"36.96666","41.83333","–","prov. capital","–","Helsinki Atlas: 16 (map 4 A5)" +879,"Subartu","Subartu, Ĺ ubartu, North Mesopotamia","–","–","–","su-bar-tum, su-bar-tum.KI, SU.BIR<sub>4</sub>, SU.BIR<sub>4</sub>.KI, SU.KI, šu-bar-ti, KUR.su-bar-ti, KUR.SU.BIR<sub>4</sub>","territory","North Assyria","Bagg RGTC 7 2: 538–539" +880,"Sueia","Sueia","–","–","–","KUR.su-e-ia (?)","mount","Nairi","Bagg RGTC 7 2: 539" +883,"Sumbu","Sumbu, Sumbi, Plain of SulaimÄnÄ«ya",2,"–","–","–","district","–","Helsinki Atlas: 16 (map 11 A1)" +884,"Sumurzu","Sumurzu, Plain of Dehra/Sar-i-PĹ«l ZuhÄb",3,"–","–","–","territory","–","Helsinki Atlas: 16 (map 11 A2)" +885,"SumuĘľil","SumuĘľil, SumuĘľel","–","–","–","KUR.su-mu-ìl, LĂš.su-mu-uĘľ-ìl","tribe","desert to the west of Babylonia","Bagg RGTC 7 2/2: 543–544" +887,"Supnat","Supnat, Subnat, Sufan çay",2,"–","–","ĂŤD.su-ub-na-at, ĂŤD.su-ub-nat","river","–","Helsinki Atlas: 16 (map 4 B4), Bagg RGTC 7 2: 687–688" +889,"Sura","Sura, Suriya","–","35.89692739079189","38.77896278946255","–","–","–","–" +890,"Surappu","Surappu, RĹ«dḫÄne-ye CangĹ«le",2,"–","–","–","river","–","Helsinki Atlas: 16 (map 11 B4)" +891,"Surikaš","Ĺ urikaš, Surikaš",3,"–","–","KUR.su-ri-ka-áš","district","Mannea","Helsinki Atlas: 16 (map 11 B1), Parpola Toponyms: 319" +892,"SurmarrÄti","SĹ«r-marrati, SurmarrÄti, SÄmarÄĘľ, Surra-man-rÄĘľ, Sur-marrati, Gurmarriti, Samarra",1,"34.20983","43.89167","–","town","–","Helsinki Atlas: 16 (map 10 C2), <a href=https://pleiades.stoa.org/places/894082>Pleiades: Samarra/â€Sumere’</a>" +832,"SÄmerÄ«na","SÄmerÄ«na, Samerina, Samaria, Ĺ omerĂ´n, Shomron",1,"32.27663","35.18862","–","prov. capital","–","Helsinki Atlas: 16 (map 7 D4), <a href=https://www.telshimronexcavations.com>Tel Shimron Excavations</a>" +841,"SÄqi","SÄqi","–","–","–","URU.sa-a-qi","town","–","–" +882,"SĹ«ia","SĹ«ia, SĹ«ja, SĹ«ya, SĂ», SĹ«a","–","–","–","KUR.su-Ăş-ia, KUR.su-Ăş, KUR.su-Ăş-a","mount","MÄzamua","Parpola Toponyms: 316" +894,"SĹ«ru (1)","SĹ«ru, Suru, Tell FidÄ“n",1,"35.35883","40.53217","URU.su-Ăş-ri, URU.su-ru","town","BÄ«t-ḪalupĂŞ","Helsinki Atlas: 16 (map 9 C1), Bagg RGTC 7 2: 546 (SĹ«ru 1)" +895,"SĹ«ru (2)","SĹ«ru, Suru, SĹ«r, Sur Telbis, SĹ«r TelbÄ«s",3,"34.36899","42.05814","URU.su-ru, URU.su-Ăş-ru, URU.su-Ăş-ri","town","Sūḫu","Helsinki Atlas: 16 (map 10 B2), Bagg RGTC 7 2: 547" +896,"SĹ«runu","SĹ«runu, Tell ṢūrÄn, Ĺ ewirin",3,"36.56643","37.21078","–","town","–","Helsinki Atlas: 16 (map 2 D4)" +881,"Sūḫu","Sūḫu, Sūḫi, Ĺ oaĘż",1,"–","–","–","country, province","–","Helsinki Atlas: 16 (map 9 D2)" +929,"Tabite","Tabite, Tabitu, Thebeta (2), Tell AbĹ« Arzala, Tall AbĹ« Arzala",3,"36.634","41.04133","URU.ta-bi-te, URU.ta-bi-ti","town","Ḫarmiš","Helsinki Atlas: 16 (map 3 E4), Bagg RGTC 7 2: 581" +927,"TabÄl","TabÄl, Tubal, Cappadocia",2,"–","–","–","region","–","Helsinki Atlas: 16 (map 1 D3)" +930,"Tadmar","Tadmar, Tadmur, Palmyra, Tadmor",2,"34.54724142003493","38.27402120752187","–","city","–","Helsinki Atlas: 16 (map 8 D2)" +933,"Taidu","Taidu, Tell ḤamidÄ«ya, Tell Hamidiya",3,"36.81577174902419","41.16411788377453","–","city","–","Helsinki Atlas: 16 (map 3 E4)" +934,"Tajâ","Tajâ, Taiâ, Kefr Tai, KÉ™far Ṭai, Kafr TÄyÄ, ŮŮر تايا, Kafr NÄyÄ, ŮŮر نايا, Ṭaáąaya (?), طاطية (?)","–","36.4201","37.07461","URU.ta-ia-a","city","Pattinu, Syria","Bagg RGTC 7 1: 247, Astour (1963), JNES 22, Place-Names from the Kingdom of Alalaḫ...: 237, no. 153" +935,"Takritain","Takritain, TagaritejÄni, Birta, Tikrit, Takrit, TakrÄ«t, TikrÄ«t, ṬrÄ«hÄn",4,"34.6012","43.6925","–","–","–","–" +936,"Talbiš","Talbiš, Talmiš, Thilutha, Telbis, Thilabous",1,"34.34466","42.08483","–","town","–","Helsinki Atlas: 17 (map 10 B2)" +937,"Tall ZirÄâ€a","Tall ZirÄâ€a, Tell ZirÄâ€a","–","32.6206","35.65588","–","city","Southern Levant","<a href=http://www.tallziraa.de/Tall-Zira'a/1_106.html>The Gadara Region Project</a>" +938,"TalmĹ«sa","TalmĹ«sa, Gir-e pan",4,"36.776","42.9355","–","prov. capital","–","Helsinki Atlas: 17 (map 4 B5)" +939,"Tamarana","Tamarana, Talid...","–","–","–","–","town","ḪarrÄnu area (?), Central Assyria (?)","RGTC 7 2/2: 585" +940,"Tamessu","Tamesu, Tamassos, Politikou",1,"35.02935209404931","33.24632521688231","–","city","–","Helsinki Atlas: 17 (map 7 B1)" +941,"Tamna","Tamna, Timnah, TimnÄh, Tel Baáąaš, Tel Batash",2,"31.78414897289624","34.91169775911752","–","town","–","Helsinki Atlas: 17 (map 7 C5)" +942,"TamnĹ«na","TamnĹ«na, Tell ǦikÄn",3,"36.61666","42.83333","–","prov. capital","–","Helsinki Atlas: 17 (map 4 B5)" +948,"Tang-i Var","Tang-i Var, TangÄ« Var, تنگي Ůر‎","–","34.9962","46.6183","–","monument","Iran, Karalla (?), Parsua (?)","Helsinki Atlas: 17 (map 11 B2)" +949,"Tanis","Tanis, San el-Hagar","–","30.97589714736804","31.88377780122345","–","–","–","–" +950,"Tapigga","Tapigga, MaĹźat HöyĂĽk","–","40.14831086580463","35.76242077279552","–","–","–","–" +951,"Tarbiṣu","Tarbiṣu, Tarbiṣi, Tell Ĺ arÄ«f ḪÄn, Sharif Khan",1,"36.40915","43.08089","–","city","–","Helsinki Atlas: 17 (map 4 C5)" +953,"Tarmanazi","Tarmanazi, Tarmanaše, TurmÄnÄ«n",3,"36.232","36.82183","–","town","–","Helsinki Atlas: 17 (map 2 C4)" +954,"Tarninu","Tarninu","–","–","–","URU.tar-ni-nu, URU.tar-NINA","town","Central Assyria (?)","Bagg RGTC 7 2/2: 589" +955,"TartÄra","TartÄra, Tartaru, Tharthar, Nahr aṯ-áą®arṯÄr, WÄdÄ« ath TharthÄr, Ůادي الثرثار, الثرثار",1,"34.97575","43.07063","ĂŤD.tar-ta-ri, ĂŤD.tar-ta-ra","river","Iraq","Helsinki Atlas: 17 (map 10 C2), <a href=https://pleiades.stoa.org/places/897854>Pleiades: Tartaru/Tharthar</a>, <a href=https://www.geonames.org/90169/buhayrat-ath-tharthar.html>Geonames: Buḩayrat ath TharthÄr</a>, <a href=https://www.geonames.org/90167/wadi-ath-tharthar.html>Geonames: WÄdÄ« ath TharthÄr</a>, <a href=https://www.geonames.org/90157/wadi-tharthar.html>Geonames: WÄdÄ« TharthÄr</a>" +956,"Tarzi","Tarzi, Tarsa, Tarsus, Tarsos, GözlĂĽ Kule",1,"36.91268346363448","34.89736190801483","–","city","–","Helsinki Atlas: 17 (map 1 D4)" +952,"Tarḫuntašša","Tarḫuntašša, Tarhuntašša, KızıldaÄź (?)",4,"37.49241267862221","33.0758453490096","–","–","–","–" +957,"Tas","Tas, BÄwiyÄn, Bavian",2,"36.78133","43.4075","–","mountain","–","Helsinki Atlas: 17 (map 4 C5)" +959,"TastiÄti","TastiÄti",4,"36.46416","42.95466","–","town","–","Helsinki Atlas: 17 (map 4 B5)" +960,"TaĘżnak","TaĘżnak, TaĘżannach","–","32.52160394899919","35.21993788223087","–","–","–","–" +932,"Taḫazimuna","Tahazimuna, Dazimon, Tokat",4,"40.31747950970083","36.54935398805887","–","–","–","–" +961,"Tebiltu","Negub Tunnel","–","36.022095","43.405813","–","monument, canal","Assyria, Iraq","Helsinki Atlas: 17 (map 4 C5), <a href=https://pleiades.stoa.org/places/413309737>Pleiades: Negub tunnel</a>" +962,"Teišebai URU","Teišebai URU, Karmir-blur","–","40.15358685587648","44.45269887985066","–","–","–","–" +1068,"Tel Motza","Tel Motza, Tel Moza, Khirbet Mizza, Motza, Mozah, Motsa, מֹּצָה, מוֹצָ×‎, Ammaous, Kolonia, Qaluniya, قالŮنيا‎","–","31.79445","35.16378","מֹּצָה, מוֹצָ×","village, temple","Iaʾūdu, Israel","Joshua 18:26, <a href=https://pleiades.stoa.org/places/687979>Pleiades: Moza/Ammaous/Kolonia</a>, <a href=https://www.geonames.org/294148/moza.html>Geonames: Moáş•a</a>" +964,"Tell Razzuq","Tell Razzuq","–","–","–","–","–","Sūḫu, Iraq, ḤadÄ«tha area, ḤamrÄ«n area","RIMB 2: 328" +963,"Tell al-Hawa","Tell al-Hawa","–","36.763329","42.319867","–","–","Iraq, Assyria","<a href=https://pleiades.stoa.org/places/874728>Pleiades: Tell al-Hawa</a>" +965,"TemaĘľ","TemaĘľ, Tayma","–","27.62679170802305","38.54894299042446","–","–","–","–" +967,"Tigris Tunnel","Tigris Tunnel, Birkleyn, Berkilin, Berkilin Çay, Birklin","–","38.52966","40.54764","–","monument","Turkey","Helsinki Atlas: 17 (map 3 D2)" +968,"Til-Abnu","Til-Abnu, Tell Qitar (?)",4,"36.38339418330214","38.18058176413058","–","–","–","–" +969,"Til-Barsib","Til-Barsib, Til-Barsip, TarbusÄ«bi, KÄr-SalmÄnu-ašarÄ“d, KÄr-Salmaneser, KÄr-Ĺ ulmÄnu-ašarÄ“d, Masuwari, Tell Aḥmar, Tell Ahmar",1,"36.67443","38.12095","–","prov. capital","–","Helsinki Atlas: 17 (map 3 B4)" +970,"Til-BaserĂŞ","Til-BašerĂŞ, Tell Bašir, TilbeĹźar",2,"36.8724936391149","37.56017941010104","–","town","–","Helsinki Atlas: 17 (map 2 D4)" +977,"Til-TĹ«ri","Til-TĹ«ri, ĘżAǧÄmÄ«, Tell TĹ«rin, Thiltauri",1,"36.426","37.671","–","city","–","Helsinki Atlas: 17 (map 2 D4)" +973,"Til-lÄ«ni","Til-lÄ«ni","–","–","–","URU.DU₆-li-i-ni (URU.DU₆!-li!-i-ni!), URU.DU₆-li-ni","town","ḪarrÄnu area","Bagg RGTC 7 2/2: 601" +974,"Til-naḫīri","Til-naḫīri","–","–","–","–","town","Assyria, ḪÄbĹ«r territory","RGTC 7 2/2: 603-604" +975,"Til-raḫajÄte","Til-raḫajÄte","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/2: 605" +976,"Til-ša-AbtÄni","Til-ša-AbtÄni, Tell as-Sulaima",3,"34.08333",45,"–","town","–","Helsinki Atlas: 17 (map 10 E2)" +971,"Til-ḫarrapina","Til-ḫarrapina, Til-ḫardušina","–","–","–","–","town","Assyria","RGTC 7 2/2: 598" +972,"Til-ḫauar","Til-ḫauar, Til-ḫawar, Bad-ḫawar, Badḫawar","–","–","–","URU.til-ḫa-Ăş-ar","town","Central Assyria","Bagg RGTC 7 2/2: 599" +978,"Tilgarimmu","Tilgarimmu, TÄ«l-Garimme, GĂĽrĂĽn, TĂ´garmÄh/Tagarama",3,"38.7175","37.27683","–","city","–","Helsinki Atlas: 17 (map 2 D2)" +979,"TillĂŞ","TillĂŞ, Tell RumailÄn",4,"36.94837","41.96987","–","prov. capital","–","Helsinki Atlas: 17 (map 4 A5)" +980,"Tilmun","Tilmun, Dilmun, Failaka, al-Baḥrain,Tylos",2,"–","–","–","territory","–","Helsinki Atlas: 17 (map 17 A4)" +981,"TimnaĘľ","TimnaĘľ","–","15.01919","45.80467","–","–","–","–" +982,"Timur","Timur","–","–","–","–","fortress","QuwĂŞ (country)","–" +983,"Tirza","Tirza, Tirzah, Tell el-Far'ah, Tell el-Far'ah (north)","–","32.287387","35.337803","תִּרְצָה","royal city","Israel, BÄ«t-ḪumrĂ®","–" +984,"TiĘľi","TiĘľi","–","–","–","URU.ti-Ęľi-i","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province","Bagg RGTC 7 2/2: 596" +986,"Tubliaš","Tubliaš, Tupliaš, TupliĘľaš, Tubuliaš, TubliĘľaš, Nahr aáą-Ṭīb, RĹ«dkhÄneh-ye Meymeh",2,"–","–","ĂŤD.tu-bu-li-Ęľa-áš","river, territory","East Babylonia","Helsinki Atlas: 17 (map 11 C4)" +987,"Tugliš","Tugliš, Tubliš",2,"34.31316","46.17383","–","region","–","Helsinki Atlas: 17 (map 11 B2)" +989,"Tulul al-Lak","Tulul al-Lak, Qaryat al-Lak","–","36.299303","43.263063","–","–","Iraq, Assyria","<a href=https://pleiades.stoa.org/places/741318296>Pleiades: Qaryat al-Lak</a>" +990,"Tumme","Tumme",2,"–","–","–","territory","–","Helsinki Atlas: 17 (map 4 D5)" +991,"Tunip","Tunip, Asharneh, al-AšÄrina, Ašarne, Tell Ašarne, Tell Asharneh, Qarqar (alt. loc.), Tell Acharneh, â€Acharneh, Acharneh",4,"35.2839","36.39936","–","–","–","Helsinki Atlas: 17 (map 8 B1), <a href=http://www.acharneh.hst.ulaval.ca/english/frameInter.html>Tell Acharneh Project</a>" +992,"Tunna","Tunna, Dunna, Aladaǧ",2,"–","–","–","mountain","–","Helsinki Atlas: 17 (map 2 B3)" +993,"Turlu HöyĂĽk","Turlu HöyĂĽk, Tell Turlu","–","37.75892","37.06912","–","–","Turkey","<a href=https://pleiades.stoa.org/places/201144661>Pleiades: Turlu HöyĂĽk</a>" +994,"Turna","Turna, DiyÄla",1,"–","–","–","river","–","Helsinki Atlas: 17 (map 10 D3)" +995,"TurnĂ»","TurnĂ»","–","–","–","URU.tur-nu-a-a","town","Central Assyria","Bagg RGTC 7 2/2: 614" +996,"TursÄna","TursÄna, TuršÄ, TuršÄn, Tell MÄḥūz",2,"35.49155","43.83659","–","town","–","Helsinki Atlas: 17 (map 10 C1)" +999,"Tuttul","Tuttul, Tell Bi'a","–","35.95769717739928","39.04765257021229","–","–","–","–" +1000,"Tutub","Tutub, Khafaja","–","33.35566","44.55556","–","–","–","–" +998,"Tušḫan","Tušḫan, Tušhan, ZiyÄret Tepe, Ziyaret Tepe",3,"37.79324242090923","40.79327286803895","–","prov. capital","–","Helsinki Atlas: 17 (map 3 D3)" +1001,"TuĘľammu","TuĘľammu, Tuwwama (?)",4,"36.19342674839879","36.81142717481402","–","–","–","–" +988,"Tuḫana","Tuḫana, Tuhana, Tuwanuwa, Kemerhisar, Tyana, Tuwan",2,"37.82544537714595","34.5646292998379","–","city","–","Helsinki Atlas: 17 (map 1 D3)" +943,"TÄmtu elÄ«tu","TÄmtu elÄ«tu, TÄmtu rabÄ«tu, Mediterranean Sea",2,"–","–","–","sea","–","–" +944,"TÄmtu elÄ«tu ša NaĘľiri","TÄmtu elÄ«tu ša NaĘľiri, TÄmtu ša NaĘľiri, Lake Van",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 4 B3)" +945,"TÄmtu ša Kaldi","TÄmtu ša Kaldi, Persian Gulf",2,"–","–","–","sea","–","Helsinki Atlas: 17 (map 17 B4)" +946,"TÄmtu ša Zamua","TÄmtu ša Zamua, Lake Zeribor",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 11 B1)" +947,"TÄmtu šaplÄ«tu ša NaĘľiri","TÄmtu šaplÄ«tu ša NaĘľiri, TÄmtu ša NaĘľiri, Lake Urmia",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 5 A3)" +958,"TÄsa","TÄsa, Taṣdelen, Taše",4,"38.83333","38.5","–","town","–","Helsinki Atlas: 17 (map 3 B2)" +966,"TÄ«du","TÄ«du, Tidu, Kerh, Charcha, Üç Tepe, Kurkh",2,"37.82591","40.54008","–","fortress","–","Helsinki Atlas: 17 (map 3 D3)" +1002,"TĹ«Ęľimmu","TĹ«Ęľimmu, TaĘľum",3,"35.97983","36.75816","–","town","–","Helsinki Atlas: 17 (map 2 C5)" +1072,"Uatzunza","Uatzunza","–","–","–","URU.Ăş-at-zu-un-za, 𒌷𒌑𒀜𒍪𒌦𒍝","fortified city","SangibĹ«tu, Iran","Bagg RGTC 7 3/2: 579" +1073,"Ubabara","Ubabara","–","–","–","URU.Ăş-ba-ba-ra, đ’Ś·đ’Ś‘đ’€đ’€đ’ŠŹ","fortified city","AukanĂŞ, Iran","Bagg RGTC 7 3/2: 581" +1003,"UbasĂŞ","UbasĂŞ, Tell Ḥuwaiš",3,"35.58733","43.25516","–","town","–","Helsinki Atlas: 17 (map 10 C1)" +1004,"Udu","Udu, Arpatepe (?)",4,"37.14136","40.79761","URU.Ăş-da, URU.Ăş-di","town, fortress","Nirdun","Bagg RGTC 7 2: 621–622" +1005,"UdĹ«mu","UdĹ«mu, Edom, EdĂ´m",1,"–","–","–","country","–","Helsinki Atlas: 17 (map 14 C3)" +1006,"Ugarit","Ugarit, Ras Shamra","–","35.60212","35.78557","–","–","–","<a href=https://ochre.lib.uchicago.edu/RSTI>Ras Shamra Tablet Inventory (RSTI)</a>, <a href=https://www.ras-shamra.ougarit.mom.fr>Ugarit Website</a>" +1007,"Ukku","Ukku, Sirnak",4,"37.51666","42.46816","–","city","–","Helsinki Atlas: 17 (map 4 B4)" +1009,"Ulluba","Ulluba, Birtu, Plain of ZÄḫū","–","–","–","–","district, province","–","Helsinki Atlas: 17 (map 4 B4), RGTC 7 2/1: 105–106 (Birtu 2)." +1010,"Uluruš","Uluruš","–","–","–","–","mountain","–","Helsinki Atlas: 18 (map 3 C2)" +1011,"Umma","Umma, Tell Jokha","–","31.66743001625768","45.88767609164621","–","–","–","–" +1012,"Unniga","Unniga, Unchae, Onchae",3,"36.26666","36.58333","–","town","–","Helsinki Atlas: 18 (map 2 C4)" +1013,"Unqi","Unqi, Ężmg, al-ĘżAmq, ĘżAmuq","–","–","–","–","territory","–","Helsinki Atlas: 18 (map 2 C4)" +1014,"Upâ","Upâ, KĹ«h-i-Ḫiplak",2,"–","–","–","mountain","–","Helsinki Atlas: 18 (map 11 B1)" +1015,"UpĂ®","Ă”pis, Tell al-MuǧailÄt, Tulul Mujaili'",1,"33.18443235498685","44.7019290937689","–","city","–","Helsinki Atlas: 18 (map 10 D3)" +1016,"UpĹ«mu","UpĹ«mu, FĹ«m",3,"38.3685","40.74067","–","prov. capital","–","Helsinki Atlas: 18 (map 3 D2)" +1017,"UqnĂ»","UqnĂ»",2,"–","–","–","river","–","Helsinki Atlas: 18 (map 11 B4)" +1018,"Urakka","Urakka, Urkeš, Urkiš, Tell MĹ«zÄn, Tell Mozan",2,"37.05770819862687","40.99640254169595","–","city","–","Helsinki Atlas: 18 (map 3 D3)" +1019,"Uraráąu","Uraráąu, Uruaáąri, Uraáąru, Urartu, Ararat",2,"–","–","–","country, state","Turkey, Armenia","Helsinki Atlas: 18 (map 4 B3)" +1021,"Urrubnu","Urrubnu","–","–","–","KUR.ur-ru-ub-nu","mount","–","–" +1022,"Urrus","Urrus, Orossus, Arsuz, Uluçinar, Rhosos",2,"36.40516","35.89133","–","town","–","Helsinki Atlas: 18 (map 2 B4)" +1023,"Ursalimmu","Ursalimmu, Jerusalem, Yerūšalaim",1,"31.77461","35.23595","–","capital","Iaʾūdu","Helsinki Atlas: 18 (map 7 D5)" +1025,"Uruk","Uruk, Warka, Erech",1,"31.32263","45.63961","–","prov. capital","–","Helsinki Atlas: 18 (map 16 A2)" +1027,"Urzunapi","Urzunapi","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/2: 635" +1026,"Urzâ","Urzâ","–","–","–","URU.ur-za, URU.ur-za-a","town","Central Assyria (?)","Bagg RGTC 7 2/2: 634" +1028,"Usalâ","Usalâ, Tell Ṣuwwar, Tell Suwwar",3,"35.50987","40.66151","URU.Ăş-sa-la-a","town","LÄqĂŞ","Helsinki Atlas: 18 (map 9 C1), Bagg RGTC 7 2: 635" +1029,"UsnĂ»","UsnĂ», Paltos",1,"35.29316","35.95","–","city","–","Helsinki Atlas: 18 (map 8 A1)" +1033,"UzuoÄźlan Tepe","UzuoÄźlan Tepe, Ferhatli, Ferhatlı, Uzunuglantepe","–","37.60767","35.96467","–","monument","Turkey, Cilicia, Ḫilakku (?), QuwĂŞ (country) (?)","Helsinki Atlas: 18 (map 2 B3), O. AytuÄź TaĹźyĂĽrek, Some New Assyrian Rock-Reliefs in Turkey: 169" +1030,"Ušiši","Ušiši","–","–","–","URU.Ăş-ši-ši","town","Iran, Media (?)","–" +1031,"Ušqaia","Ušqaia, Uski",3,"37.91666","46.16666","–","fortress","–","Helsinki Atlas: 18 (map 5 B3)" +1032,"Ušû","Ušû, Tell RašīdÄ«ya, Palaityros",1,"33.23673","35.21616","–","city","–","Helsinki Atlas: 18 (map 8 A3)" +1034,"Wadi Bastura Tunnel","Wadi Bastura Tunnel, Qala Mortka","–","36.35169","44.11584","–",",canal, monument","Iraq, Assyria","Helsinki Atlas: 18 (map 4 D5), <a href=https://pleiades.stoa.org/places/359792984>Wadi Bastura Tunnel Inscription</a>" +1035,"Waisi","Waisi, Qalatgah",3,"37.0354","45.2209","–","prov. capital","–","Helsinki Atlas: 18 (map 4 E4)" +1036,"Wauš","Wauš, Uauš, KĹ«h-e Sahand",2,"–","–","–","mountain","–","Helsinki Atlas: 18 (map 5 B3)" +1037,"Wilusa","Wilusa, Wiluša, Troy, Hisarlik","–","39.95751754939872","26.23830411661108","–","–","–","–" +1038,"Wišdiš","Wišdiš, Uišdiš, Plain of Marand",3,"–","–","–","district","–","Helsinki Atlas: 18 (map 5 A3)" +1041,"Zabalam","Zabalam, Tulul Ibzaikh","–","31.74472924832169","45.87575461093312","–","–","–","–" +1042,"Zabannu","Zabannu, SabaĘľa, Tell Umm ĘżAqrubba",4,"35.66165","41.19707","–","town, monument","–","Helsinki Atlas: 18 (map 9 D1)" +1043,"Zabban","Zabban",3,"34.5","44.83333","–","city","–","Helsinki Atlas: 18 (map 10 D2)" +1044,"ZadidÄni","ZadidÄni, ZadidÄnu, ruins al-Mḥddâde (?)","–","–","–","URU.za-di-da-a-ni","town","mid-Euphrates","Bagg RGTC 7 2: 641" +1045,"ZakrĹ«ti","ZakrĹ«ti","–","–","–","–","district","–","Helsinki Atlas: 18 (map 12 A2)" +1046,"Zamaḫâ","Zamaḫâ, Qatara, Qattara, Qaáąáąara, Zamahe, Karana (?), Tell al-RimÄḥ, Tell Rimah, Tell al-Rimah",2,"36.25677","42.45019","–","town","–","Helsinki Atlas: 18 (map 4 B5), <a href=https://pleiades.stoa.org/places/356369838>Pleiades: Qattara?/Karana?</a>" +1047,"ZanbÄja","ZanbÄja, Zanba","–","–","–","URU.za-an-ba-a-a","town","Central Assyria, Nineveh province (?)","Bagg RGTC 7 2/2: 643" +1048,"Zaralulu","Zaralulu, Tell ed-Diba'i","–","33.322758019531","44.48194432052211","–","–","–","–" +1049,"Zaranda","Zaranda, Plain of EvoġlÄ«",3,"–","–","–","region","–","Helsinki Atlas: 18 (map 4 E3)" +1050,"Zawiyeh","Zawiyeh, ZawiyyÄ, Zawiyah, ZÄwiyah","–","34.29263"," 42.1725","–","–","Sūḫu, Iraq","RIMB 2: 323" +1051,"Zikirtu","Zikirtu",2,"–","–","–","country","–","Helsinki Atlas: 18 (map 5 A3)" +1052,"ZikkĂ»","ZikkĂ», YÄramǧa, Yaremjeh, يارمجة",4,"36.3005","43.19083","URU.zi-ik-ku-u, URU.zi-ik-ku-Ăş","town","Central Assyria","Helsinki Atlas: 18 (map 4 C5), Bagg RGTC 7 2/2: 645–646" +1053,"ZitÄnu","ZitÄnu, ZaytÄn",1,"36.05839","37.01205","–","town","–","Helsinki Atlas: 18 (map 2 D4)" +1054,"Zuqarru","Zuqarru",3,"37.06133","37.8645","–","town","–","Helsinki Atlas: 18 (map 3 A3)" +1039,"ZÄba elĂ»","ZÄba-elĂ», Upper Zab, az-ZÄb al-aĘżlÄ",1,"–","–","–","river","–","Helsinki Atlas: 18 (map 4 C5)" +1040,"ZÄba šaplĂ»","ZÄba-šaplĂ», az-ZÄb al-asfal, Lower Zab",1,"–","–","–","river","–","Helsinki Atlas: 18 (map 10 C1)" +32,"Ä€l-Adad","Ä€l-Adad","–","–","–","URU-<sup>d</sup>IM","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 14 (Ä€l-Adad 2)" +34,"Ä€l-DaiÄn-Adad","Ä€l-DaiÄn-Adad, Äl DaiÄn-Adad, BÄ«t-DaiÄn-Adad, DaiÄn-Adad",4,"36.16667","37.16667","–","town, village, city","Ḫatti","Helsinki Atlas: 5 (map 2 D4)" +35,"Ä€l-DannÄia","Ä€l-DannÄia, Ä€l-DannÄja","–","–","–","URU.da-na-a-a","town","Central Assyria (?), Nineveh province (?)","Bagg RGTC 7 2/1: 19" +36,"Ä€l-Naḫal-Muṣur","Ä€l-Naḫal-Muṣur, Äl Naḫal Muṣur, City of the Brook of Egypt, Ężngrn, al-ĘżArīš, العريش‎, Rhinocolura, Rhinokoloura, ῬινοκόĎουĎα",3,"31.1285","33.8075","URU.na-ḫal-mu-ṣur, URU.na-ḫal-mu-uṣ-ri","town","Muṣur, Egypt","Helsinki Atlas: 5 (map 13 C2), Bagg RGTC 7 1: 5–6, <a href=https://pleiades.stoa.org/places/688016>Pleiades: Rhinocolura</a>" +33,"Ä€l-ašlÄkÄni","Ä€l-ašlÄkÄni, Town of the washers, Fuller Town","–","–","–","–","town","Central Assyria, Nineveh province (?)","RGTC 7 2/1: 16" +37,"Ä€l-rÄdi-imÄri","Ä€l-rÄdi-imÄri, RÄdi-emÄri, Town of the Donkey Drivers, Donkey-Driver Town","–","–","–","URU-UĹ -ANĹ E","town","Central Assyria","RGTC 7 2/1: 24–25" +40,"Ä€l-sirÄšî","Ä€l-sirÄšî, Brewers' village, Brewers' town","–","–","–","URU-LUNGA.MEĹ , URU-LĂšNGA.MEĹ , URU-LĂš.LĂšNGA.MEĹ ","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province (?), Kalḫu province (?)","Bagg RGTC 7 2/1: 25–26" +41,"Ä€l-sĹ«sÄnÄ«","Ä€l-sĹ«sÄnÄ«, Horse Trainer Town, Horse-Trainer Town‏‎","–","–","–","–","town","Assyria, Arbail (province)","Bagg, RGTC 7 2/1: 26" +39,"Ä€l-ṢÄṣi","Ä€l-ṢÄṣi, ṢÄṣu","–","–","–","URU.2-ṣa-a-ṣi","town","Central Assyria","Bagg RGTC 7 2/1: 27" +38,"Ä€l-ṣarrÄpÄ«","Ä€l-ṣarrÄpÄ«, Town of the Goldsmiths, Goldsmith Town","–","–","–","URU-SIMUG.KUG.GI","town","Central Assyria","RGTC 7 2/1: 26–27" +50,"Ä€lu-ša-LibbÄlÄja","Ä€lu-ša-LibbÄlÄja, Ä€lu-ša-LibbÄlÄia, Ä€lu-ša-Libbi-ÄlÄja, YÄramǧa, Yaremjeh, يارمجة","–","36.3031","43.17633","URU-šá-ŠÀ-URU-a-a, URU-šá-LĂš.ŠÀ-URU-a-a","town","Central Assyria","Bagg RGTC 7 2/1: 35" +1070,"Ä€lu-ša-Lulûʾa","Ä€lu-ša-Lulûʾa","–","–","–","URU.ša-mlu-lu-Ăş-a","town","Central Assyria (?), Iraq (?)","Bagg RGTC 7 3/2: 957 (add. to 7/2)" +51,"Ä€lu-ša-rÄáąÄtīšu","Ä€lu-ša-rÄáąÄtīšu, Plumbers' Town, Maláąeh Naṣara, MÄláąah NaṣÄrÄ, مالطة نصارى","–","36.85276","42.93362","URU-ša-ra-áąa-áąi-šú","town","Central Assyria, Kurbail","Bagg RGTC 7 2/1: 38" +52,"Ä€lu-ša-rēšÄni","Ä€lu-ša-rēšÄni, Eunuch Town","–","–","–","URU.2.LĂš.SAG.MEĹ , URU.LĂš.SAG.MEĹ ","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 38–39" +49,"Ä€lu-ša-ḪarÄni","Ä€lu-ša-ḪarÄni, Älu ša ḪarÄni, Ĺ a-ḪarÄni, Tall Ḫanḏal, Tall AbĹ« ḤÄĘľit (?)",2,"35.25","40.51667","URU.šá-<sup>m</sup>ḫa-ra-a-ni","village","BÄ«t-ḪalupĂŞ, LÄqĂŞ (?)","Helsinki Atlas: 5 (map 9 C1), Bagg RGTC 7 2/1: 32–33, <a href=https://pleiades.stoa.org/places/894106>Pleiades: Tell Abu Hait/Sangarite?/Sachare?</a>" +55,"Ä€midu","Ä€midu, AmÄ“du, Amidu, Amidi, Amida, Amedu, Ä€mid, Diyarbakir, Diyarbakır",1,"37.9101","40.23852","URU.a-me-di, a-me-di, a-me-du, URU.a-me-du, URU.a-mi-di, URU.a-med-a-a","city, capital, province","Ä€midu (province), BÄ«t-ZamÄni, Turkey, BÄ«t-ZamÄni","Helsinki Atlas: 5 (map 3 D3), Bagg RGTC 7 2/1: 43–44 (AmÄ“du)" +63,"Ä€mul","Ä€mul, Amul, Ä€mol",4,"36.47083","52.34933","URU.a-mul","city","Zagros mountains, Iran","Helsinki Atlas: 5 (map 6 D4)" +67,"Ä€nat","Ä€nat, Anat, Anatu, Ḫanat, Ana, Ä€natha, Ä€natho, Qal'at 'Ana, Anah, ʾĀna, عانة‎",1,"34.46761","41.97943","URU.a-na-at, URU.an-at, LĂš.an-at-a-a, URU.ana-te","city, island","Sūḫu, Iraq","Helsinki Atlas: 5 (map 10 B1), Bagg RGTC 7 2/1: 46–47 (Anat), <a href=https://pleiades.stoa.org/places/893936>Pleiades: Anatho</a>, <a href=https://books.openedition.org/cdf/4564#tocfrom2n39>MTT I/2 (HIGEOMES Nr. 196)</a>" +503,"ÄŞtu","ÄŞtu, ÄŞdu, Idu, Ida, Is, Idi, Hit, HÄ«t, هيت",1,"33.64391811933405","42.82314138727005","URU.i-te, URU.itu5 (= URU.ĂŤD)","town","Sūḫu, Iraq","Bagg RGTC 7 2/1: 259, Helsinki Atlas: 10 (ÄŞdu, map 10 B3), Parpola Toponyms: 179" +897,"Ĺ abirēšu","Ĺ abirēšu, Basorin",4,"37.15179","42.34429","–","city","–","Helsinki Atlas: 15 (map 4 B4)" +898,"Ĺ abuqu","Ĺ abuqu","–","–","–","KUR.šá-bu-qa-a.a, LĂš.šá-bu-qa-a.a","territory (?), tribe (?)","–","<a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +899,"Ĺ adikanni","Ĺ adikanni, Ĺ adikannu, ĘżArbÄn, Arabana, Tell ĘżAÄźÄÄźa, Tell 'Ajaja",1,"36.2081","40.72067","šá-URU.di-kan-ni, URU.šá-di-kan-ni, di-ka-ni-a, KUR.di-ka-na-a-ia, URU.di-kan-a-a, URU.šá-di-kan-a-a, URU.še-di-kan-a-a","city","ḪÄbĹ«r area","Helsinki Atlas: 15 (map 3 D4), Bagg RGTC 7 2: 559" +900,"Ĺ aduppĂ»m","Ĺ aduppĂ»m, Tell Harmal","–","33.30978245280799","44.46657571197006","–","–","–","–" +902,"Ĺ akmu","Ĺ akmu, Shechem, Ĺ ekem, Tell Balata","–","32.2135081628689","35.28222003429811","–","–","–","–" +903,"Ĺ apinuwa","Ĺ apinuwa, Ortaköy","–","40.25443121418439","35.23660208437604","–","–","–","–" +905,"Ĺ arišša","Ĺ arišša, KuĹźaklı","–","39.30842871867329","36.90967428160425","–","–","–","–" +906,"Ĺ arru-iddina (city)","Ĺ arru-iddina","–","–","–","–","city","Central Assyria, Aššur province","RGTC 7 2/2: 564" +904,"Ĺ arēši","Ĺ arēši, Tell Ĺ arÄ«sÄ«",4,"36.83333","41.33333","–","town","–","Helsinki Atlas: 15 (map 3 E4)" +901,"Ĺ aḫuppa","Ĺ aḫuppa, Saḫuppa, Ĺ uḫuppa, Katmuḫi, Katmuḫu, Kadmuḫi","–","–","–","URU.šá-ḫu-up-pa, URU.sa-ḫu-up-pa, ša-ḫup-pa, URU.šá-ḫu-pa, URU.šá-ḫup-pa, URU.šú-ḫu-pa","city, province","Assyria","Bagg RGTC 7 2/2: 560–561, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +907,"Ĺ ibanÄ«ba","Ĺ ibanÄ«ba, Ĺ ibaniba, Tell Billa",1,"36.43376","43.34825","–","prov. capital","–","Helsinki Atlas: 15 (map 4 C5)" +908,"Ĺ iddi nÄri","Ĺ iddi nÄri, Ĺ iddi-nÄri, Parapotamia","–","–","–","–","district","–","Helsinki Atlas: 15 (map 3 B5)" +909,"Ĺ iddi-asika","Ĺ iddi-asika","–","–","–","–","town","Assyria","Bagg RGTC 7 2/2: 568" +910,"Ĺ iddi-ḫirÄ«ti","Ĺ iddi-ḫirÄ«ti, Ušḫiriti","–","–","–","URU.UĹ -ḫi-ri-ti","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province (?)","Bagg RGTC 7 2/2: 568–569" +913,"Ĺ ingiša","Ĺ ingiša","–","37.6","40.88","–","town","–","Helsinki Atlas: 15 (map 3 D3)" +914,"Ĺ inuḫtu","Ĺ inuḫtu, NiÄźde",3,"37.97583","34.69516","–","city","–","Helsinki Atlas: 15 (map 1 D3)" +915,"Ĺ iru Malikta","Ĺ iru-Malikta, Ĺ iru Malikta","–","36.74466","43.06116","–","monument","Central Assyria, TalmĹ«sa province","–" +916,"Ĺ išlu","Ĺ išil, Ĺ išlu, Ĺ išda, Ĺ ašilĹ«, Ĺ ilšil, Ĺ ašillÄnu, al-QayyÄra, QayyÄra, القيارة",4,"35.8025","43.29133","URU.ši-iš-li, URU.ši-iš-lu, URU.ši-šil, URU.ši-šil-a-a","town","Iraq","Helsinki Atlas: 15 (map 4 C6), Bagg RGTC 7 2/2: 572–573 (Ĺ išil)" +918,"Ĺ ubarĂ»","Ĺ ubarĂ», Ĺ ubarĂ»m, SubarĂ», Subaru, Ĺ ubaru, Subir, Ĺ ubartum","–","–","–","KUR.šu-ba-re-e, KUR.šu-ba-ri-i, KUR.šu-pa-re-e","territory","–","Bagg RGTC 7 2: 573" +919,"Ĺ ubat-Enlil","Ĺ ubat-Enlil, Ĺ eḫna, Tell Leilan","–","36.9585300465899","41.5062658743722","–","–","–","–" +920,"Ĺ ubria","Ĺ ubria",1,"–","–","–","country","–","Helsinki Atlas: 15 (map 2 D2)" +921,"Ĺ uksu","Ĺ uksu, Tell Sukas","–","35.30587310836101","35.92274244299347","–","–","–","–" +922,"Ĺ urda","Ĺ urda","–","–","–","–","country, region","Iran, Zagros Mountains","–" +924,"Ĺ uruppak","Ĺ uruppak, Fara","–","31.7776323654228","45.50974801317648","–","–","–","–" +926,"Ĺ ušarra","Ĺ ušarra, Tell Shemshara","–","36.20064","44.93869","–","–","–","–" +911,"Ĺ Ä«mu","Ĺ Ä«mu, SiĘľimĂŞ","–","–","–","–","city","Central Assyria, Province of Ĺ Ä«mu","RGTC 7 2/2: 569–570" +912,"Ĺ Ä«mu (province)","Ĺ Ä«mu, SiĘľimĂŞ","–","–","–","–","province","Central Assyria","RGTC 7 2/2: 569–570" +917,"Ĺ Ä«tamrat","Ĺ Ä«tamrat",2,"–","–","–","mountain","–","Helsinki Atlas: 15 (map 3 B4)" +923,"Ĺ Ĺ«ru","Ĺ Ĺ«ru, Sauras, Tzauras",1,"–","–","–","town","–","Helsinki Atlas: 15 (map 3 D3)" +925,"Šūšan","Susa, Šūš, SĹ«sa, Šûšan",1,"32.18977297421221","48.25205205147439","–","capital","–","Helsinki Atlas: 15 (map 17 Al)" +1008,"ĹŞlÄia","Ulai, Eulaios, Karḫe, Karkhe",2,"–","–","–","river","–","Helsinki Atlas: 17 (map 17 A2)" +1024,"ĹŞru","ĹŞru, Ă›r, Ur, Tell al-Muqayyar, Tell Muqayyar",1,"30.9618","46.10512","–","prov. capital","Babylonia","Helsinki Atlas: 18 (map 16 B3)" +1055,"ĘľAtaroth","Khirbet 'Ataruz (?), Khirbat Ataruz, עֲ×ָרוֹת, ĘżÄáąÄrĂ´t",4,"31.57431","35.66511","עֲ×ָרוֹת","city","MÄĘľab, Transjordania, Israel","<a href=http://www.ataruz.org>Khirbat Ataruz Project</a>, <a href=https://www.thetorah.com/article/ataroth-and-the-inscribed-altar-who-won-the-war-between-moab-and-israel>Ataroth and the Inscribed Altar</a>" +1056,"ĘżAqaba","Aqaba, ĘżAqaba, Al-ĘżAkĹ«ba (?), Aqabah (?), العŮŮبة, BaĘľqĹ«ba (?), Baqubah (?), بعقŮبة",3,"33.52954","42.91286","URU.a-qa-ba","town","Babylonia, MÄt-tâmti (?), Iraq","Helsinki Atlas: 6 (map 10 B3), Bagg RGTC 7 3/1: 46–47" +383,"ḪabrĹ«ri","ḪabrĹ«ri (province), ḤerÄ«r Plain",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 4 D5)" +384,"ḪabĹ«r","ḪabĹ«r, ḪÄbĹ«r, Khabur",1,"–","–","–","river","–","Helsinki Atlas: 9 (map 9 C1)" +379,"Ḫabḫu","Ḫabḫu",3,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 5 A4)" +380,"Ḫabḫu ša bÄ“tÄni (1)","Ḫabḫu ša bÄ“tÄni",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 4 B4)" +381,"Ḫabḫu ša bÄ“tÄni (2)","Ḫabḫu ša bÄ“tÄni_(1)",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 4 D5)" +382,"Ḫabḫu ša pÄn Ḫatti","Ḫabḫu ša pÄn Ḫatti",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 3 C3)" +385,"Ḫadattu","Ḫadatu, Ḫadattu, Hadatu, Hadattu, ArslÄn ṬÄš, Arslan Tash",1,"36.84938","38.40774","–","city","–","Helsinki Atlas: 9 (map 3 B4)" +386,"Ḫadina","Ḫadina",4,"–","–","–","river","–","Helsinki Atlas: 9 (map 8 B2)" +387,"Ḫalab","Ḫalab, Ḫalman, Halab, Aleppo, Ḥalab",1,"36.19911","37.16416","–","city","–","Helsinki Atlas: 9 (map 2 D4), Bagg RGTC 7 1: 84 (Ḫalman 1)" +388,"Ḫalaḫḫu","Ḫalaḫḫu, חֲלַח",2,"–","–","–","district","–","Helsinki Atlas: 9 (map 4 C5), Bagg RGTC 7 2/1: 194–195" +389,"Ḫaldini Ziuquni","Haldini Ziuquni, Kef Kalesi (?)",4,"38.8305","42.72728","–","–","–","–" +391,"ḪalmÄn","ArmÄn, Ḥolwa, ḤulwÄn",1,"34.45983","45.86266","–","city","–","Helsinki Atlas: 9 (map 11 A2)" +392,"Ḫalpi","Ḫalpi, Gölbasi",2,"–","–","–","district","–","Helsinki Atlas: 9 (map 2 D3)" +393,"ḪalulĂŞ","ḪalulĂŞ",3,"34.16666","43.86666","–","town","–","Helsinki Atlas: 9 (map 10 C2)" +394,"Ḫalzi-atbÄri","Ḫalzi-atbÄri",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 4 B4), RGTC 7 2/1: 201–202." +395,"Ḫalziluḫa","Ḫalziluḫa","–","–","–","URU.ḫal-zi-lu-ḫa","town","Turkey","Bagg RGTC 7 2/1: 202" +396,"Ḫalzu","Ḫalzu, Ḫalzi",2,"–","–","–","city","Central Assyria, Province of Ḫalzu","Helsinki Atlas: 9 (map 4 C5), RGTC 7 2/1: 200" +397,"Ḫalzu (province)","Ḫalzu, Ḫalzi",2,"–","–","–","province","Central Assyria","Helsinki Atlas: 9 (map 4 C5), RGTC 7 2/1: 200" +390,"Ḫalēḫasta","Ḫalēḫasta, Ḫarēḫasta","–","–","–","KUR.ḫa-le-e-ḫa-as-ta, URU.ḫa-le-e-ḫa-as-ta, URU.ḫa-re-e-ḫa-as-ta, URU.ḫa-re-ḫa-as-ta","mount, territory","East Babylonia","Bagg RGTC 7 2/1: 196–197" +398,"Ḫamanu","Ḫamanu, ḪamÄnu, Amanus",2,"–","–","KUR.ḫa-ma-na, KUR.ḫa-ma-ni, KUR.ḫa-ma-nim, KUR.ḫa-ma-nu, KUR.ḫa-ma-a-ni, KUR.ḫa-ma-a-nu, ḫa-ma-ni","mountain","–","Helsinki Atlas: 9 (ḪamÄnu, map 2 C4), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +399,"ḪamÄnu","ḪamÄnu","–","–","–","URU.ḫa-ma-a-nu, KUR.ḫa-ma-nu, URU.ḫa-ma-nu","city","Elam","–" +400,"ḪamÄt","ḪamÄt, Amattu, Amatu, ḤamÄt, ḤamÄ, Hama, Hamath",1,"35.13589896027996","36.74949783765234","–","city, capital, state","Syria, ḪamÄt","Helsinki Atlas: 9 (map 8 B1)" +401,"ḪamĹ«ru","ḪamĹ«ru","–","–","–","–","tribe in Babylonia, living near Borsippa","–","PNA 2/2: 256; PNA 2/2: 728; PNA 3/2: 1283; Vera Chamaza (2002): ''Die Omnipotenz Aššurs'' (AOAT 295): 30–31" +402,"Ḫanigalbat","Ḫanigalbat",2,"–","–","–","territory, Middle Assyrian province","Turkey, Syria, territory of the KÄšijÄ“ri mountains","Helsinki Atlas: 9 (map 3 D4), Bagg RGTC 7 2/1: 206" +403,"ḪanqÄti","ḪanqÄti","–","–","–","URU.ḫa-an-qa-a-ti","town","Central Assyria (?)","Bagg RGTC 7 2/1: 207" +404,"Ḫanusa","Ḫinnis, Khinis, Hinnis",2,"36.75617","43.41486","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +405,"Ḫappati","Ḫappati","–","–","–","URU.ḫa-ap-pa-ti","town","Central Assyria (?), Nineveh province","Bagg RGTC 7 2/1: 208" +407,"Ḫarbe","Harbe, Tell Huera","–","36.64698549413157","39.49853194903646","–","–","–","–" +408,"ḪarbĂŞ","ḪarbĂŞ, ḪarbĂ»","–","–","–","URU.ḫar-bĂ©-e","town","mid-Euphrates, Sūḫu, al-Koáąbijje (?)","Bagg RGTC 7 1: 210" +410,"Ḫariḫumba","Ḫariḫumba","–","–","–","URU.ḫa-ri-ḫum-ba, URU.ḫar-ḫum-ba","town","Central Assyria, Kalḫu province","Bagg RGTC 7 1: 211–212" +411,"Ḫariṣû","Ḫariṣû, Ḥariṣṣa",2,"33.97816","35.67416","–","town","–","Helsinki Atlas: 9 (map 8 A3)" +413,"Ḫarmiš","Ḫarmiš, ÄžaġğÄġ, HarmÄs",2,"–","–","–","river","–","Helsinki Atlas: 9 (map 3 E4)" +412,"ḪarmÄsu","ḪarmÄsu, ḪarmÄše",4,"36.79999","43.5","–","town","–","Helsinki Atlas: 9 (map 4 C5)" +414,"ḪarrÄnia","ḪarrÄnia, RÄniya",3,"36.25817","44.90183","–","town","–","Helsinki Atlas: 9 (map 4 D5)" +415,"ḪarrÄnu","ḪarrÄnu, Harran, ḤarrÄn, Carrhae",1,"36.8666","39.03039","–","prov. capital","–","Helsinki Atlas: 9 (map 3 C4)" +409,"ḪarḫÄr","ḪarḫÄr, Ḫarḫar, KÄr-Ĺ arrukÄ«n, Malayer, Tepe Giyan",4,"34.18139","48.24361","–","prov. capital","–","Helsinki Atlas: 9 (map 12 A2), Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +416,"Ḫasamu","Ḫasamu, ḤasmÄ« ṬūrÄ, Teke DaÄźi",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 3 C3)" +420,"Ḫatallu","Ḫatallu, Ḫaáąallu, Ḫadallu","–","–","–","KUR.ḫa-da-lu, KUR.ḫa-tal-li, KUR.ḫa-ta-li, KUR.ḫa-ta-lim, LĂš.ḫa-tal-la-a-a, LĂš.ḫa-tal-a-a, LĂš.ḫa-tal-la, LĂš.ḫa-tal-li, LĂš.ḫa-tal-lu, LĂš.ḫa-tal-lum",",Aramean tribe, territory","Iraq, Raṣappa province (?)","Bagg RGTC 7 2/1: 220–221" +421,"Ḫatarikka","Hatarikka, ḪadrÄk, ḥzrk, ĘżAḏrÄ, Hadra",3,"33.60616","36.51216","–","prov. capital","–","Helsinki Atlas: 10 (map 8 B3)" +424,"Ḫatti","Ḫatti",2,"–","–","–","territory","–","Helsinki Atlas: 10 (map 2 C4)" +425,"Ḫattuša","Hattuša, BoÄźazköy","–","40.01438533090195","34.6140544346557","–","–","–","–" +423,"Ḫattâ","Ḫattâ, Ḫatâ","–","–","–","URU.ḫat-ta-a, URU.ḫa-ta-a","town","Central Assyria, TalmĹ«sa province (?)","PNA 1/1: 4, Bagg RGTC 7 2/1: 222, SAA 6 268" +426,"ḪaurÄni","ḪaurÄni, ḤawÄr an-Nahr",3,"36.51433","37.25233","–","town","–","Helsinki Atlas: 10 (map 2 D4)" +429,"Ḫazi","Hazi, Tell Hizzin (?)",4,"33.96514007015759","36.10399255635561","–","–","–","–" +431,"Ḫazzat","Hazzat, Gaza, Ä azza, Ężazza, Tell Harube, Tell 'Azza",1,"31.54755980011124","34.51377704279476","–","capital","–","Helsinki Atlas: 10 (map 7 C5)" +428,"ḪazÄzu","ḪazÄzu, Hazazu, ĘżAzÄz, 'Azaz",1,"36.58626410781966","37.04525182513137","–","city","–","Helsinki Atlas: 10 (map 2 D4)" +419,"Ḫašmar","Ḫašmar, Darband-e ḪÄn",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 11 A1)" +417,"Ḫaṣōr","Ḫaṣōr, Hazor","–","33.01724381534079","35.56794736461505","–","–","–","–" +433,"ḪešbĹŤn","ḪešbĹŤn, Heshbon, Tell Hesban","–","31.80133725149214","35.809734682461","–","–","–","–" +435,"Ḫilakku","Ḫilakku, Cilicia",2,"–","–","–","country","–","Helsinki Atlas: 10 (map 1 C4)" +436,"Ḫildua","Hildua, ḪÄn el-Ḫulda, ḪuldÄ, Ḫalde, Khalda",1,"33.78912076105539","35.47415191117009","–","town","–","Helsinki Atlas: 10 (map 8 A3)" +439,"Ḫindaru","Ḫindaru, Ḫindiru","–","–","–","–",",Aramean tribe","Babylonia","–" +438,"ḪindÄnu","Hindanu, Giddan, 'Eddana, al-ÄžÄbirÄ«ya, Karable",2,"34.38484","41.06521","–","city, country, province","–","Helsinki Atlas: 10 (map 9 D2)" +440,"ḪinnatĹ«na","ḪinnatĹ«na, Ḫinatuna, Hinatuna, Hinnatuna, Hannaton, Tell al-BadawÄ«ya, ḤannatĂ´n, Tel Hannaton, Tell el-Badawiya, ḤinnÄtĂ´n, AsĹŤchis, Tel Ḥanaton",1,"32.78574","35.25794","–","town","Israel","Helsinki Atlas: 10 (map 8 A4), Bagg RGTC 7/1: 107–108" +441,"Ḫinnis Monuments","Ḫinnis Monuments, Kharusa Monuments, Hinnis Monuments, Bavian Monuments, Khinis Monuments, Bawian Monuments, Khinnis Monuments","–","36.76156","43.41999","–","monument","Iraq, Assyria","Helsinki Atlas: 10 (map 4 C5)" +442,"ḪiptĹ«nu","ḪiptĹ«nu, Hefton, Tell ḤaftĹ«n",3,"36.65","44.25","–","town","–","Helsinki Atlas: 10 (map 4 D5)" +443,"ḪirÄ«tu","ḪirÄ«tu","–","–","–","–","river","BabyloĂ©nia, GambĹ«lu","–" +445,"Ḫubišna","Ḫubišna, Ḫupišna, Ḫubušna, Hubišna, Hupišna, Hubušnu, Kybistra, Cybistra, KarahĂĽyĂĽk,'Eregli",1,"37.66234693212137","34.22669200769285","–","city","–","Helsinki Atlas: 10 (map 1 D3)" +446,"Ḫubuškia","Ḫubuškia, Ḫubušku, ḪÄne Plain",2,"–","–","–","country","–","Helsinki Atlas: 10 (map 4 E5)" +444,"ḪubÄba","ḪubÄba","–","–","–","–","town","Central Assyria, Province of Ĺ Ä«mu","RGTC 7 2/1: 235" +447,"Ḫudubili","Ḫudubili, Ḫudubilu","–","–","–","URU.ḫu-du-bi-li","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 1: 236" +448,"ḪukkurĹ«na","ḪukkurĹ«na, al-LaÄźÄ",2,"–","–","–","region","–","Helsinki Atlas: 10 (map 8 B4)" +449,"ḪulbĹ«nu","ḪulbĹ«nu, ḤelbĂ´n, ḤalbĹ«n",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 8 B3)" +450,"ḪulḫulÄ«tu","ḪulḫulÄ«tu, Ḫalḫala, ḤulḥulÄ“",2,"33.06133","36.53316","–","town","–","Helsinki Atlas: 10 (map 8 B3)" +451,"Ḫundur","Ḫundur, Ḫundiru","–","–","–","URU.ḫu-un-dĂr-a-a, LĂš.ḫu-un-du-ru-a-a, URU.ḫu-un-du-ur, URU.ḫu-un-du-ur-a-a","city","Iran","Parpola Toponyms: 169 (Ḫundiru and Ḫundur)" +452,"Ḫupšana","Ḫupšana, Hupšana, Deh-e Now","–","32.06884773403157","48.57295649754241","–","–","–","–" +453,"Ḫuri-ṣubuĘľi","Huri-ṣubuĘľi, Khraṣbo?","–","35.61418771815032","35.87285278541339","–","–","–","–" +454,"Ḫurmu","Ḫurmu, ḤÄrim",3,"36.20724","36.51909","–","town","–","Helsinki Atlas: 10 (map 2 C4)" +455,"Ḫursagkalama","Ḫursagkalama, Hursagkalama, Inġarra, Ingharra, see also Kiš","–","32.54463","44.613","–","city","–","Helsinki Atlas: 10 (map 10 D4)" +456,"Ḫusur","Ḫusur, Ḫosr",1,"–","–","–","river","–","Helsinki Atlas: 10 (map 4 C5)" +457,"Ḫuzarra","Ḫuzarra, Ḥazra al-ĘżAtÄ«qa",3,"36.244","36.79333","–","town","–","Helsinki Atlas: 10 (map 2 C4)" +459,"Ḫuzirina","ḪuzirÄ«na, Ḫuzirina, Ḫaziri, ḪuzÄ«rÄnu, ʿĀmĹ«dÄ",3,"37.10333","40.87867","URU.ḫu-zi-ri-na","town","Ḫanigalbat","Helsinki Atlas: 10 (map 3 D3), Bagg RGTC 7 1: 238–239, Postgate, RlA 4: 535–536" +460,"ḪuzirÄ«na","ḪuzirÄ«na, Huzirina, Huzarad, HuzariĘľum, Hostra, Sultantepe",1,"37.05035","38.90587","URU.ḫu, URU.ḫu-zir-na, URU.ḫu-zir-i-na, URU.ḫu-zir-ri-na","city","Balīḫ basin","Helsinki Atlas: 10 (map 3 B3), Bagg RGTC 7 1: 238–239, Postgate, RlA 4: 535–536" +458,"ḪuzÄza","ḪuzÄza, Ḥuzaiz, ḤuzÄ“z",3,"34.5","36.76666","–","town","–","Helsinki Atlas: 10 (map 8 B2)" +378,"ḪÄba","ḪÄba","–","–","–","URU.ḫa-a-ba","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 244" +406,"ḪÄradu","Ḫaradu, Ḫarada, Haradu, Ḫirbat ad-DÄ«nÄ«ya, Ḫirbat ad-DÄ«nÄ«yah, Khirbet ed-Diniye",3,"34.46176","41.59212","–","town","–","Helsinki Atlas: 10 (map 9 D2)" +427,"ḪÄurÄ«na","ḪÄurÄ«na, ḤawÄrÄ«n",2,"34.2695","37.08433","–","prov. capital","–","Helsinki Atlas: 10 (map 8 C2)" +430,"ḪÄzur","ḪÄzur, ḪÄzir",1,"–","–","–","river","–","Helsinki Atlas: 10 (map 4 C5)" +432,"Ḫēsa","Ḫēsa, ḪasÄ«ya, Hasya, Hassia",3,"34.41333","36.76433","–","town","–","Helsinki Atlas: 10 (map 8 B2)" +434,"ḪīdÄlu","ḪīdÄlu, Ḫaidalu, ArdjÄn",1,"30.96666",50,"–","capital","–","Helsinki Atlas: 10 (map 17 C3)" +824,"Ṣaidinu","Ṣaidinu, Ṣaidini, Ṣaidina, Ṣaidi, Zaidinu","–","–","–","–","town","ḪarrÄnu area","RGTC 7 2/2: 550" +840,"Ṣapuna","Ṣapuna, Ṣafon, Tell es-Sa'idiyeh","–","32.26772147669001","35.5771886219876","–","–","–","–" +845,"Ṣariptu","Ṣariptu, Sarephtha, aṣ-Ṣarafand, Sarepta, Ras el-Qantara",1,"33.46443052775337","35.29507077977482","–","city","–","Helsinki Atlas: 15 (map 8 A3)" +854,"Ṣibur","Ṣibur, Ṣibar, Ṣimaš, Ṣibara, Ṣiburaja","–","–","–","URU.ṣi-bu-ur, URU.ṣi-bar, URU.ṣi-ba-ra-a-a, URU.ṣi-ba-ra","city","Media, Western Iran, Gizilbunda","PNA B–G: 270, Parpola Toponyms: 321" +861,"Ṣimirra","Ṣimirra, Ṣumur, Simyra, Tell Kazel, Ṣumra",1,"34.70849380585606","35.9861363536706","–","prov. capital","–","Helsinki Atlas: 15 (map 8 A2)" +888,"Ṣupru","Ṣupru, Tell Abu Hasan (?)",4,"34.65467","40.88574","–","–","–","–" +893,"Ṣurru","Ṣurru, Tyros, Tyre, Ṣūr, Ṣôr, Sur",1,"33.27028907957312","35.19597034995852","–","prov. capital","–","Helsinki Atlas: 15 (map 8 A3)" +855,"ṢīdĹ«nu","ṢīdĹ«nu, Sidon, ṢīdĂ´n, ṢaidÄ",1,"33.56243","35.36933","–","city","–","Helsinki Atlas: 15 (map 8 A3)" +886,"Ṣūpat","Ṣūpat, Ṣupat, Ṣubat, Ḥoms, Zobah/ṢôbÄ",4,"34.7205","36.717","–","prov. capital","–","Helsinki Atlas: 15 (map 8 B2), Bagg RGTC 7 1: 233–234" +985,"Ṭuba","Ṭuba, Umm el-Marra (?)",4,"36.13471","37.69422","–","–","–","<a href=https://web.archive.org/web/20051124034827/http://www.jhu.edu/neareast/uem/index.html>Umm el-Marra Website</a>" +997,"Ṭurušpâ","Ṭušpa, Tušpa, Ṭurušpâ, Turušpa, Van, Thospia",1,"38.50114487332675","43.33814728564371","–","capital","–","Helsinki Atlas: 17 (map 4 C3)" +928,"ṬÄbÄ“te","ṬÄbÄ“te, ṬabÄ“te, ṬÄbÄtu, Ṭabatu, Ṭabitu, Ṭabatun, Tell TÄbÄn, Tall TÄbÄn, Thebeta (1), Tell Ta'ban",2,"36.33621","40.78773","URU.DĂ™G.GA-e-te, URU.DĂ™G.GA-ta-ia, URU.áąa-bĂ©-te","city","ḪÄbĹ«r area","Helsinki Atlas: 17 (map 3 D4), Bagg RGTC 7 2: 617" diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ca048f269a6b211bb1fbcdc189581d7710fa409e --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,6 @@ +FROM adoptopenjdk/openjdk11:jdk-11.0.2.9-slim +WORKDIR /opt +ENV PORT 8080 +EXPOSE 8080 +COPY target/*.jar /opt/app.jar +ENTRYPOINT exec java $JAVA_OPTS -jar app.jar \ No newline at end of file diff --git a/backend/HELP.md b/backend/HELP.md new file mode 100644 index 0000000000000000000000000000000000000000..2e1bba69df0c73f692f1223f30c76da1659f08f9 --- /dev/null +++ b/backend/HELP.md @@ -0,0 +1,22 @@ +# Read Me First +The following was discovered as part of building this project: + +* The original package name 'cz.zcu.kiv.backend-api' is invalid and this project uses 'cz.zcu.kiv.backendapi' instead. + +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.6.4/maven-plugin/reference/html/) +* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.6.4/maven-plugin/reference/html/#build-image) +* [Spring Web](https://docs.spring.io/spring-boot/docs/2.6.4/reference/htmlsingle/#boot-features-developing-web-applications) + +### Guides +The following guides illustrate how to use some features concretely: + +* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) +* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) +* [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/) + diff --git a/backend/app-deployment.yaml b/backend/app-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..24011a9631481f451fb37a54c54453ba40631aa6 --- /dev/null +++ b/backend/app-deployment.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: app + name: app +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: app + strategy: {} + template: + metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: app + spec: + containers: + - env: + - name: SPRING_DATASOURCE_URL + value: jdbc:postgresql://db:5432/test + image: schwobik/backend-app:1.2 + name: app-backend + ports: + - containerPort: 8080 + resources: {} + restartPolicy: Always +status: {} diff --git a/backend/app-service.yaml b/backend/app-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..26a34bcda0025e18b986e9d0687708c3763aa3fb --- /dev/null +++ b/backend/app-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: app + name: app +spec: + ports: + - name: "8080" + port: 8080 + targetPort: 8080 + selector: + io.kompose.service: app +status: + loadBalancer: {} diff --git a/backend/db-data-persistentvolumeclaim.yaml b/backend/db-data-persistentvolumeclaim.yaml new file mode 100644 index 0000000000000000000000000000000000000000..803a5b98bc1b461ad090a07e88e3724e6a97ea9b --- /dev/null +++ b/backend/db-data-persistentvolumeclaim.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: db-data + name: db-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +status: {} diff --git a/backend/db-deployment.yaml b/backend/db-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7503bf27a5eba002c02d49a00f28b19e3f53c6f2 --- /dev/null +++ b/backend/db-deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: db + name: db +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: db + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: db + spec: + containers: + - env: + - name: POSTGRES_DB + value: test + - name: POSTGRES_PASSWORD + value: Password.123 + - name: POSTGRES_USER + value: test + image: postgres:14.2 + name: postgres-db + ports: + - containerPort: 5432 + resources: {} + restartPolicy: Always +status: {} diff --git a/backend/db-service.yaml b/backend/db-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c96ee07371e1f9eb253a62b4046ec94386bdfb4f --- /dev/null +++ b/backend/db-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: db + name: db +spec: + ports: + - name: "5432" + port: 5432 + targetPort: 5432 + selector: + io.kompose.service: db +status: + loadBalancer: {} diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..f9b11668c4e55d5a11c47dc6e0165e12f400e118 --- /dev/null +++ b/backend/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.8' + +services: + db: # PostgreSQL database + image: postgres:14.2 + container_name: postgres-db + environment: + - POSTGRES_DB=test # database name + - POSTGRES_USER=test # database user + - POSTGRES_PASSWORD=Password.123 # database password + expose: + - 5432 + ports: + - "5432:5432" # expose port 5432 (PostgreSQL) out of the docker container to the local machine + volumes: + - db-data:/var/lib/postgresql/data + + + app: # Spring boot application + build: . + container_name: app-backend # name of the container + image: schwobik/backend-app:1.2 + ports: + - "8080:8080" # expose port 8080 out of the docker container do the local machine + depends_on: + - db + environment: + - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/test # overwrites application.properties datasource url to connect to the database + + frontend: + # Since our Dockerfile for web-server is located in react-app foler, our build context is ./react-app + build: ../frontend + container_name: frontend + image: schwobik/frontend-app:1.2 + ports: + - "80:80" + +volumes: + db-data: \ No newline at end of file diff --git a/backend/frontend-deployment.yaml b/backend/frontend-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..735ea3284b53614c331ff0d7f74c49fb9398a9a6 --- /dev/null +++ b/backend/frontend-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: frontend + name: frontend +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: frontend + strategy: {} + template: + metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: frontend + spec: + containers: + - image: schwobik/frontend-app:1.2 + name: frontend + ports: + - containerPort: 80 + resources: {} + restartPolicy: Always +status: {} diff --git a/backend/frontend-service.yaml b/backend/frontend-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..98b0f6137ff37d8317e4640b5c507bcda31509c9 --- /dev/null +++ b/backend/frontend-service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: D:\Skola\5_leto\ASWI\Semestralka\aswi2022code-of-duty\kompose.exe convert + kompose.version: 1.26.0 (40646f47) + creationTimestamp: null + labels: + io.kompose.service: frontend + name: frontend +spec: + ports: + - name: "80" + port: 80 + targetPort: 80 + selector: + io.kompose.service: frontend + type: LoadBalancer +status: + loadBalancer: {} diff --git a/backend/mvnw b/backend/mvnw new file mode 100644 index 0000000000000000000000000000000000000000..8a8fb2282df5b8f7263470a5a2dc0e196f35f35f --- /dev/null +++ b/backend/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/backend/mvnw.cmd b/backend/mvnw.cmd new file mode 100644 index 0000000000000000000000000000000000000000..1d8ab018eaf11d9b3a4a90e7818ace373dfbb380 --- /dev/null +++ b/backend/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..1cd1d4cb0a8446de67374977f794edeb1ecf99b6 --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-parent</artifactId> + <version>2.6.4</version> + <relativePath/> + </parent> + <groupId>cz.zcu.kiv</groupId> + <artifactId>backend-api</artifactId> + <version>0.0.1-SNAPSHOT</version> + <name>backend-api</name> + <description>Backend API for Neo-assyrian web application</description> + <properties> + <java.version>11</java.version> + </properties> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-validation</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-security</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-test</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-csv</artifactId> + <version>1.9.0</version> + </dependency> + + <dependency> + <groupId>com.auth0</groupId> + <artifactId>java-jwt</artifactId> + <version>3.19.0</version> + </dependency> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>31.1-jre</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <version>2.6.5</version> + <optional>true</optional> + </dependency> + + <dependency> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-ui</artifactId> + <version>1.6.6</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <excludes> + <exclude> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/BackendApiApplication.java b/backend/src/main/java/cz/zcu/kiv/backendapi/BackendApiApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..5a69f5ec0a7fc2c01235e8512d88ea19cdcb2832 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/BackendApiApplication.java @@ -0,0 +1,19 @@ +package cz.zcu.kiv.backendapi; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import java.util.logging.Logger; + +@SpringBootApplication +public class BackendApiApplication { + + // TODO replace with log4j? + public static final Logger LOGGER = Logger.getLogger(BackendApiApplication.class.getName()); + + public static void main(String[] args) { + SpringApplication.run(BackendApiApplication.class, args); + LOGGER.info("Swagger is running at: http://localhost:8080/swagger-ui.html"); + } + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeName.java b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeName.java new file mode 100644 index 0000000000000000000000000000000000000000..9ccd5eb3c2100e04c278c7ee6e4065ca27cf2afa --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeName.java @@ -0,0 +1,34 @@ +package cz.zcu.kiv.backendapi.alternativename; + +import cz.zcu.kiv.backendapi.catalog.CatalogItem; +import lombok.*; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Alternative name entity representing alternative name of catalog item + */ +@Data +@EqualsAndHashCode(exclude = "catalogItem") +@ToString(exclude = "catalogItem") +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "alternative_names") +@IdClass(AlternativeName.class) +public class AlternativeName implements Serializable { + /** + * Name, serves as ID + */ + @Id + private String name; + + /** + * Catalog entity + */ + @ManyToOne + @JoinColumn(name = "catalog_item_id") + @Id + private CatalogItem catalogItem; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..bbb7cf3e31c0837cf9bc2ba9189b1fd81902d1b0 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameRepository.java @@ -0,0 +1,11 @@ +package cz.zcu.kiv.backendapi.alternativename; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * Alternative name repository + */ +@Repository +public interface AlternativeNameRepository extends JpaRepository<AlternativeName, AlternativeName> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..bb1abf114dc0a2acbaa5b117224d571a562caf3d --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/AlternativeNameServiceImpl.java @@ -0,0 +1,19 @@ +package cz.zcu.kiv.backendapi.alternativename; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Alternative name service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +public class AlternativeNameServiceImpl implements IAlternativeNameService { + + /** + * Alternative name repository + */ + private final AlternativeNameRepository alternativeNameRepository; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/IAlternativeNameService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/IAlternativeNameService.java new file mode 100644 index 0000000000000000000000000000000000000000..9e7a7d06cba1255ba34e1409158c3132d32f888c --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/alternativename/IAlternativeNameService.java @@ -0,0 +1,7 @@ +package cz.zcu.kiv.backendapi.alternativename; + +/** + * Alternative name service interface + */ +public interface IAlternativeNameService { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/Bibliography.java b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/Bibliography.java new file mode 100644 index 0000000000000000000000000000000000000000..7b345663335a4fc39af63d1b94721cdeda594d9a --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/Bibliography.java @@ -0,0 +1,30 @@ +package cz.zcu.kiv.backendapi.bibliography; + +import cz.zcu.kiv.backendapi.catalog.CatalogItem; +import lombok.*; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Bibliography entity representing bibliography + */ +@Data +@EqualsAndHashCode(exclude = "catalogItem") +@ToString(exclude = "catalogItem") +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "bibliography") +@IdClass(Bibliography.class) +public class Bibliography implements Serializable { + /** + * Source, serves as ID + */ + @Id + private String source; + + @ManyToOne + @JoinColumn(name = "catalog_item_id") + private CatalogItem catalogItem; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..cebbae075e65a849f4143f80a3a2242751a12be0 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyRepository.java @@ -0,0 +1,11 @@ +package cz.zcu.kiv.backendapi.bibliography; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * Bibliography repository + */ +@Repository +public interface BibliographyRepository extends JpaRepository<Bibliography, Bibliography> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d3964b41418b7bccee13ae69bcf8851a5e85678f --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/BibliographyServiceImpl.java @@ -0,0 +1,18 @@ +package cz.zcu.kiv.backendapi.bibliography; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Bibliography service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +public class BibliographyServiceImpl implements IBibliographyService { + /** + * Bibliography repository + */ + private final BibliographyRepository bibliographyRepository; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/IBibliographyService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/IBibliographyService.java new file mode 100644 index 0000000000000000000000000000000000000000..c29c80287050ddeb36244dbce0938599037a0adc --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/bibliography/IBibliographyService.java @@ -0,0 +1,7 @@ +package cz.zcu.kiv.backendapi.bibliography; + +/** + * Bibliography service interface + */ +public interface IBibliographyService { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogController.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogController.java new file mode 100644 index 0000000000000000000000000000000000000000..5f6fa019f8a7db27bc1e64e126a56ce2f5c4fb3f --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogController.java @@ -0,0 +1,84 @@ +package cz.zcu.kiv.backendapi.catalog; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.UUID; + +/** + * Controller for catalog + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/catalog-items") +public class CatalogController { + + /** + * Catalog service + */ + private final ICatalogItemService catalogService; + + /** + * Saves new catalog item + * + * @param catalogItemDto catalog item DTO + */ + @PostMapping("") + @Operation(summary = "creates new catalog item") + public void addCatalogItem(@RequestBody CatalogItemDto catalogItemDto) { + catalogService.saveCatalogItem(catalogItemDto); + } + + /** + * Returns catalog items satisfying given filter + * + * @param name name - optional + * @param country country - optional + * @param type type - optional + * @return list of catalog items satisfying given filter + */ + @GetMapping("") + @Operation(summary = "returns catalog items based on filter") + public ResponseEntity<List<CatalogItemDto>> getCatalog(@RequestParam(defaultValue = "") String name, @RequestParam(defaultValue = "") String country, @RequestParam(defaultValue = "") String type) { + return new ResponseEntity<>(catalogService.getCatalog(name, country, type), HttpStatus.OK); + } + + /** + * Updates catalog item with given ID + * + * @param id ID + * @param catalogItemDto catalog item DTO + */ + @PutMapping("/{id}") + @Operation(summary = "updates catalog item with given ID") + public void updateCatalogItem(@PathVariable UUID id, @RequestBody CatalogItemDto catalogItemDto) { + catalogService.updateCatalogItem(id, catalogItemDto); + } + + /** + * Deletes catalog item with given ID + * + * @param id ID + */ + @DeleteMapping("/{id}") + @Operation(summary = "deletes catalog item with given ID") + public void deleteCatalogItem(@PathVariable UUID id) { + catalogService.deleteCatalogItem(id); + } + + /** + * Returns catalog item with given ID + * + * @param id ID + * @return catalog item with given ID + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = "application/json") + @Operation(summary = "returns catalog item with given ID") + public CatalogItemDto getCatalogItem(@PathVariable UUID id) { + return catalogService.getCatalogItem(id); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItem.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItem.java new file mode 100644 index 0000000000000000000000000000000000000000..d5db4d0e0b3aa9a6eaefd570daed5c53f1392d1c --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItem.java @@ -0,0 +1,161 @@ +package cz.zcu.kiv.backendapi.catalog; + +import cz.zcu.kiv.backendapi.alternativename.AlternativeName; +import cz.zcu.kiv.backendapi.bibliography.Bibliography; +import cz.zcu.kiv.backendapi.country.Country; +import cz.zcu.kiv.backendapi.type.Type; +import cz.zcu.kiv.backendapi.writtenform.WrittenForm; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; + +import javax.persistence.*; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * Catalog entity representing catalog item + */ +@Data +@NoArgsConstructor +@Entity +@Table(name = "catalog_item") +//@NamedEntityGraph(name = "graph", attributeNodes = { +// @NamedAttributeNode("bibliography"), +// @NamedAttributeNode("alternativeNames"), +// @NamedAttributeNode("countries"), +// @NamedAttributeNode("writtenForms"), +// @NamedAttributeNode("types"), +//}) +public class CatalogItem { + private static final String INTEGER_PATTERN = "\\d+"; + private static final String DOUBLE_PATTERN = "(\\d+[.]\\d+)|(\\d+)"; + private static final String EMPTY_ENTRY = "–"; + /** + * Catalog item id + */ + @Id + @GeneratedValue + private UUID id; + + /** + * Name of geographic item + */ + private String name; + + /** + * Certainty + */ + private int certainty; + + /** + * Longitude + */ + private double longitude; + + /** + * Latitude + */ + private double latitude; + + /** + * Bibliography + */ + @OneToMany(mappedBy = "catalogItem", cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + @Fetch(FetchMode.SUBSELECT) + private Set<Bibliography> bibliography = Collections.emptySet(); + + /** + * Countries + */ + @OneToMany(mappedBy = "catalogItem", cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + @Fetch(FetchMode.SUBSELECT) + private Set<Country> countries = Collections.emptySet(); + + /** + * Written forms + */ + @OneToMany(mappedBy = "catalogItem", cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + @Fetch(FetchMode.SUBSELECT) + private Set<WrittenForm> writtenForms = Collections.emptySet(); + + /** + * Alternative names + */ + @OneToMany(mappedBy = "catalogItem", cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + @Fetch(FetchMode.SUBSELECT) + private Set<AlternativeName> alternativeNames = Collections.emptySet(); + + /** + * Set of user roles - many-to-many relationship + */ + @ManyToMany(fetch = FetchType.EAGER) + @Fetch(FetchMode.SUBSELECT) + @JoinTable( + name = "catalog_item_type", + joinColumns = { + @JoinColumn(name = "catalog_item_id", referencedColumnName = "id") + }, + inverseJoinColumns = { + @JoinColumn(name = "type", referencedColumnName = "type") + } + ) + private Set<Type> types = Collections.emptySet(); + + public CatalogItem(final List<String> csvFields) { + + this.name = csvFields.get(1); + List<String> stringList = processListField(csvFields.get(2)); + this.alternativeNames = stringList.stream().map(s -> new AlternativeName(s, this)).collect(Collectors.toSet()); + + this.certainty = processIntField(csvFields.get(3)); + this.latitude = processDoubleField(csvFields.get(4)); + this.longitude = processDoubleField(csvFields.get(5)); + + stringList = processListField(csvFields.get(6)); + this.writtenForms = stringList.stream().map(s -> new WrittenForm(s, this)).collect(Collectors.toSet()); + + stringList = processListField(csvFields.get(7)); + this.types = stringList.stream().map(Type::new).collect(Collectors.toSet()); + + stringList = processListField(csvFields.get(8)); + this.countries = stringList.stream().map(s -> new Country(s, this)).collect(Collectors.toSet()); + + stringList = processListField(csvFields.get(9)); + this.bibliography = stringList.stream().map(s -> new Bibliography(s, this)).collect(Collectors.toSet()); + } + + private int processIntField(String field) { + Matcher matcher = Pattern.compile(INTEGER_PATTERN).matcher(field); + if (matcher.find()) { + return Integer.parseInt(matcher.group()); + } else { + return 0; + } + } + + private double processDoubleField(String field) { + Matcher matcher = Pattern.compile(DOUBLE_PATTERN).matcher(field); + if (matcher.find()) { + return Double.parseDouble(matcher.group()); + } else { + return 0.0; + } + } + + private List<String> processListField(String field) { + if (field.isEmpty() || field.equals(EMPTY_ENTRY)) { + return new ArrayList<>(); + } + return Arrays.stream(field.split(",")).map(String::trim).filter(item -> !item.isEmpty()).collect(Collectors.toList()); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemDto.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemDto.java new file mode 100644 index 0000000000000000000000000000000000000000..0977be4be08bbc29b5cc27aea8bff7a0f8637dbe --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemDto.java @@ -0,0 +1,70 @@ +package cz.zcu.kiv.backendapi.catalog; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collections; +import java.util.Set; +import java.util.UUID; + +/** + * Class representing catalog item DTO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CatalogItemDto { + /** + * Id + */ + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + private UUID id; + + /** + * Name of catalog item + */ + private String name; + + /** + * Certainty + */ + private int certainty; + + /** + * Longitude + */ + private double longitude; + + /** + * Latitude + */ + private double latitude; + + /** + * Bibliography + */ + private Set<String> bibliography = Collections.emptySet(); + + /** + * Countries + */ + private Set<String> countries = Collections.emptySet(); + + /** + * Written forms + */ + private Set<String> writtenForms = Collections.emptySet(); + + /** + * Alternative names + */ + private Set<String> alternativeNames = Collections.emptySet(); + + /** + * Types + */ + private Set<String> types = Collections.emptySet(); + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..8aa72cbd37c148088457ec6fba24d68e70134284 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepository.java @@ -0,0 +1,32 @@ +package cz.zcu.kiv.backendapi.catalog; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.Set; +import java.util.UUID; + +/** + * Catalog repository + */ +@Repository +public interface CatalogItemRepository extends JpaRepository<CatalogItem, UUID> { + + /** + * Returns all catalog items containing specific values + * + * @param name name - optional + * @param country country - optional + * @param type type - optional + * @return set of catalog items satisfying filter conditions + */ + @Query("SELECT DISTINCT e FROM CatalogItem e " + + "LEFT JOIN FETCH AlternativeName a ON e = a.catalogItem " + + "LEFT JOIN FETCH Country c ON e = c.catalogItem " + + "LEFT JOIN FETCH e.types t " + + "WHERE (?1 = '' OR UPPER(e.name) LIKE UPPER(?1) OR UPPER(a.name) LIKE UPPER(?1)) " + + "AND (?2 = '' OR UPPER(c.name) LIKE UPPER(?2)) " + + "AND (?3 = '' OR UPPER(t.type) LIKE UPPER(?3))") + Set<CatalogItem> filterCatalog(String name, String country, String type); +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..4df5713e09ab432ea2ed139b25a5a4e8c99b8c2a --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImpl.java @@ -0,0 +1,185 @@ +package cz.zcu.kiv.backendapi.catalog; + +import cz.zcu.kiv.backendapi.alternativename.AlternativeName; +import cz.zcu.kiv.backendapi.bibliography.Bibliography; +import cz.zcu.kiv.backendapi.country.Country; +import cz.zcu.kiv.backendapi.exception.ApiRequestException; +import cz.zcu.kiv.backendapi.type.ITypeService; +import cz.zcu.kiv.backendapi.type.Type; +import cz.zcu.kiv.backendapi.writtenform.WrittenForm; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * Catalog item service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +@Slf4j +public class CatalogItemServiceImpl implements ICatalogItemService { + /** + * Regex for one arbitrary character in string + */ + private static final String WILDCARD_CHARACTER_REGEX = "\\?"; + + /** + * Regex for one arbitrary character in string used in SQL language + */ + private static final String WILDCARD_CHARACTER_REGEX_SQL = "_"; + + /** + * Regex for any number of arbitrary characters in string + */ + private static final String WILDCARD_CHARACTERS_REGEX = "\\*"; + + /** + * Regex for any number of arbitrary characters in string used in SQL language + */ + private static final String WILDCARD_CHARACTERS_REGEX_SQL = "%"; + + /** + * Message for exception when catalog item is not found by id + */ + private static final String CATALOG_ITEM_NOT_FOUND = "Catalog item not found"; + + /** + * Catalog repository + */ + private final CatalogItemRepository catalogItemRepository; + + /** + * Type service + */ + private final ITypeService typeService; + + @Override + public void saveCatalog(List<CatalogItem> catalogItems) { + log.info("Saving catalog"); + catalogItems.forEach(this::saveCatalogEntity); + } + + @Override + public void saveCatalogItem(CatalogItemDto catalogItemDto) { + log.info("Saving catalog item"); + CatalogItem catalogItem = new CatalogItem(); + convertDtoToEntity(catalogItemDto, catalogItem); + saveCatalogEntity(catalogItem); + } + + @Override + public void updateCatalogItem(UUID id, CatalogItemDto catalogItemDto) { + CatalogItem catalogItem = catalogItemRepository.findById(id).orElseThrow(() -> { + log.error(CATALOG_ITEM_NOT_FOUND); + throw new ApiRequestException(CATALOG_ITEM_NOT_FOUND, HttpStatus.NOT_FOUND); + }); + convertDtoToEntity(catalogItemDto, catalogItem); + saveCatalogEntity(catalogItem); + log.info("Catalog item updated"); + } + + @Override + public void deleteCatalogItem(UUID id) { + if (!catalogItemRepository.existsById(id)) { + log.error(CATALOG_ITEM_NOT_FOUND); + throw new ApiRequestException(CATALOG_ITEM_NOT_FOUND, HttpStatus.NOT_FOUND); + } + catalogItemRepository.deleteById(id); + log.info("Catalog item deleted"); + } + + @Override + public List<CatalogItemDto> getCatalog(String name, String country, String type) { + log.info("Retrieving catalog"); + name = name.replaceAll(WILDCARD_CHARACTER_REGEX, WILDCARD_CHARACTER_REGEX_SQL); + name = name.replaceAll(WILDCARD_CHARACTERS_REGEX, WILDCARD_CHARACTERS_REGEX_SQL); + country = country.replaceAll(WILDCARD_CHARACTER_REGEX, WILDCARD_CHARACTER_REGEX_SQL); + country = country.replaceAll(WILDCARD_CHARACTERS_REGEX, WILDCARD_CHARACTERS_REGEX_SQL); + type = type.replaceAll(WILDCARD_CHARACTER_REGEX, WILDCARD_CHARACTER_REGEX_SQL); + type = type.replaceAll(WILDCARD_CHARACTERS_REGEX, WILDCARD_CHARACTERS_REGEX_SQL); + Set<CatalogItem> entities = catalogItemRepository.filterCatalog(name, country, type); + return entities.stream().map(this::convertEntityToDto).collect(Collectors.toList()); + } + + @Override + public CatalogItemDto getCatalogItem(UUID id) { + var catalogItem = catalogItemRepository.findById(id).orElseThrow(() -> { + log.error(CATALOG_ITEM_NOT_FOUND); + throw new ApiRequestException(CATALOG_ITEM_NOT_FOUND, HttpStatus.NOT_FOUND); + }); + + return convertEntityToDto(catalogItem); + } + + /** + * Saves catalog entity to database + * + * @param catalogItem catalog entity + */ + private void saveCatalogEntity(CatalogItem catalogItem) { + for (Type type : catalogItem.getTypes()) { + if (typeService.getTypeByName(type.getType()).isEmpty()) { + typeService.saveType(type); + } + } + catalogItemRepository.save(catalogItem); + } + + /** + * Converts catalog DTO to catalog entity + * + * @param catalogItemDto catalog DTO + * @param catalogItem catalog entity + */ + private void convertDtoToEntity(CatalogItemDto catalogItemDto, CatalogItem catalogItem) { + catalogItem.setName(catalogItemDto.getName()); + catalogItem.setCertainty(catalogItemDto.getCertainty()); + catalogItem.setLatitude(catalogItemDto.getLatitude()); + catalogItem.setLongitude(catalogItemDto.getLongitude()); + catalogItem.setBibliography(catalogItemDto.getBibliography() + .stream().map(s -> new Bibliography(s, catalogItem)).collect(Collectors.toSet())); + catalogItem.setTypes(catalogItemDto.getTypes() + .stream().map(Type::new).collect(Collectors.toSet())); + catalogItem.setCountries(catalogItemDto.getCountries() + .stream().map(s -> new Country(s, catalogItem)).collect(Collectors.toSet())); + catalogItem.setAlternativeNames(catalogItemDto.getAlternativeNames() + .stream().map(s -> new AlternativeName(s, catalogItem)).collect(Collectors.toSet())); + catalogItem.setWrittenForms(catalogItemDto.getWrittenForms() + .stream().map(s -> new WrittenForm(s, catalogItem)).collect(Collectors.toSet())); + } + + /** + * Converts catalog entity to catalog DTO + * + * @param entity catalog entity + * @return catalog DTO + */ + private CatalogItemDto convertEntityToDto(CatalogItem entity) { + CatalogItemDto catalogItemDto = new CatalogItemDto(); + catalogItemDto.setId(entity.getId()); + catalogItemDto.setName(entity.getName()); + catalogItemDto.setLatitude(entity.getLatitude()); + catalogItemDto.setLongitude(entity.getLongitude()); + catalogItemDto.setCertainty(entity.getCertainty()); + catalogItemDto.setBibliography(entity.getBibliography() + .stream().map(Bibliography::getSource).collect(Collectors.toSet())); + catalogItemDto.setTypes(entity.getTypes() + .stream().map(Type::getType).collect(Collectors.toSet())); + catalogItemDto.setCountries(entity.getCountries() + .stream().map(Country::getName).collect(Collectors.toSet())); + catalogItemDto.setAlternativeNames(entity.getAlternativeNames() + .stream().map(AlternativeName::getName).collect(Collectors.toSet())); + catalogItemDto.setWrittenForms(entity.getWrittenForms() + .stream().map(WrittenForm::getForm).collect(Collectors.toSet())); + return catalogItemDto; + } + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/ICatalogItemService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/ICatalogItemService.java new file mode 100644 index 0000000000000000000000000000000000000000..62079e19913980a21965abcc24c4953abb0ed2b1 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/catalog/ICatalogItemService.java @@ -0,0 +1,57 @@ +package cz.zcu.kiv.backendapi.catalog; + +import java.util.List; +import java.util.UUID; + +/** + * Catalog service interface + */ +public interface ICatalogItemService { + /** + * Saves list of catalog items + * + * @param catalogItems catalog items + */ + void saveCatalog(List<CatalogItem> catalogItems); + + /** + * Saves one catalog item + * + * @param catalogItemDto catalog item DTO + */ + void saveCatalogItem(CatalogItemDto catalogItemDto); + + /** + * Updates catalog item with given ID + * + * @param id ID + * @param catalogItemDto catalog item DTO + */ + void updateCatalogItem(UUID id, CatalogItemDto catalogItemDto); + + /** + * Deletes catalog item with given ID + * + * @param id ID + */ + void deleteCatalogItem(UUID id); + + /** + * Returns catalog items satisfying given filter + * + * @param name name - optional + * @param country country - optional + * @param type type - optional + * @return list of catalog items satisfying given filter + */ + List<CatalogItemDto> getCatalog(String name, String country, String type); + + /** + * Returns catalog item with given ID + * + * @param id ID + * @return catalog item with given ID + */ + CatalogItemDto getCatalogItem(UUID id); + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/config/CorsConfig.java b/backend/src/main/java/cz/zcu/kiv/backendapi/config/CorsConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..7746785d91284fc04f7ecff84ec246d0a001c361 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/config/CorsConfig.java @@ -0,0 +1,19 @@ +package cz.zcu.kiv.backendapi.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +// TODO this needs to be configured for production and localhost development! +@Configuration +@EnableWebMvc +public class CorsConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS"); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/config/DataInitiator.java b/backend/src/main/java/cz/zcu/kiv/backendapi/config/DataInitiator.java new file mode 100644 index 0000000000000000000000000000000000000000..b9947662d18c3a88f2653a88289f433565dd9f04 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/config/DataInitiator.java @@ -0,0 +1,102 @@ +package cz.zcu.kiv.backendapi.config; + +import cz.zcu.kiv.backendapi.catalog.CatalogItem; +import cz.zcu.kiv.backendapi.catalog.CatalogItemRepository; +import cz.zcu.kiv.backendapi.catalog.ICatalogItemService; +import cz.zcu.kiv.backendapi.titlepage.ITitlePageService; +import cz.zcu.kiv.backendapi.titlepage.TitlePage; +import cz.zcu.kiv.backendapi.type.ITypeService; +import cz.zcu.kiv.backendapi.type.Type; +import cz.zcu.kiv.backendapi.user.UserEntity; +import cz.zcu.kiv.backendapi.user.UserRepository; +import lombok.RequiredArgsConstructor; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +//TODO comment or delete +@Component +@RequiredArgsConstructor +public class DataInitiator implements ApplicationListener<ContextRefreshedEvent> { + + private final ICatalogItemService catalogService; + + private final ITypeService typeService; + + private final CatalogItemRepository catalogItemRepository; + + private final UserRepository userRepository; + + private final ITitlePageService titlePageService; + + private final BCryptPasswordEncoder encoder; + + @Override + @Transactional + public void onApplicationEvent(ContextRefreshedEvent event) { + List<Type> types = loadTypes(); + for (Type type : types) { + typeService.saveType(type); + } + List<CatalogItem> catalog = loadCatalog(); + catalogService.saveCatalog(catalog); + + titlePageService.updateTitlePage(new TitlePage(1L, "", "")); + + UserEntity user1 = new UserEntity("admin", "admin", encoder.encode("password"), (byte) 7, true); + userRepository.save(user1); + + UserEntity user2 = new UserEntity("normal", "normal", encoder.encode("password"), (byte) 1, false); + userRepository.save(user2); + + } + + private List<CatalogItem> loadCatalog() { + List<CatalogItem> catalogEntities = new ArrayList<>(); + var csvData = getClass().getClassLoader().getResourceAsStream("AssyrianProject-AllNoDupl-22-03-28.csv"); +// File csvData = new File("AssyrianProject-AllNoDupl-22-03-28.csv"); + CSVParser parser; + try { + parser = CSVParser.parse(csvData, StandardCharsets.UTF_8, CSVFormat.Builder.create(CSVFormat.DEFAULT) + .setHeader() + .setSkipHeaderRecord(true) + .build()); + for (CSVRecord csvRecord : parser) { + catalogEntities.add(new CatalogItem(csvRecord.toList())); + } + } catch (IOException e) { + e.printStackTrace(); + } + return catalogEntities; + + } + + private List<Type> loadTypes() { + List<Type> types = new ArrayList<>(); + CSVParser parser; + File csvData = new File("AssyrianProject-All.csv"); + try { + parser = CSVParser.parse(csvData, Charset.defaultCharset(), CSVFormat.DEFAULT.builder().setSkipHeaderRecord(true).build()); + for (CSVRecord csvRecord : parser) { + if (csvRecord.get(0).equals("10000")) { + types.add(new Type(csvRecord.get(2))); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return types; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/country/Country.java b/backend/src/main/java/cz/zcu/kiv/backendapi/country/Country.java new file mode 100644 index 0000000000000000000000000000000000000000..8960ee619f1d723104b7be32f5fd4c1f94b780e8 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/country/Country.java @@ -0,0 +1,31 @@ +package cz.zcu.kiv.backendapi.country; + +import cz.zcu.kiv.backendapi.catalog.CatalogItem; +import lombok.*; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Country entity representing country of catalog item + */ +@Data +@EqualsAndHashCode(exclude = "catalogItem") +@ToString(exclude = "catalogItem") +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "countries") +@IdClass(Country.class) +public class Country implements Serializable { + /** + * Name of country, serves as ID + */ + @Id + private String name; + + @ManyToOne + @JoinColumn(name = "catalog_item_id") + @Id + private CatalogItem catalogItem; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..408b3818b24494726f9653395ec6136f075c2d07 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryRepository.java @@ -0,0 +1,11 @@ +package cz.zcu.kiv.backendapi.country; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * Country repository + */ +@Repository +public interface CountryRepository extends JpaRepository<Country, Country> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d007f299da116445fda2ba39782d5e943855fe87 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/country/CountryServiceImpl.java @@ -0,0 +1,19 @@ +package cz.zcu.kiv.backendapi.country; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Country service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +public class CountryServiceImpl implements ICountryService { + + /** + * Country repository + */ + private final CountryRepository countryRepository; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/country/ICountryService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/country/ICountryService.java new file mode 100644 index 0000000000000000000000000000000000000000..70fda7b7ffe619fcde25ea6002b831b28d18638b --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/country/ICountryService.java @@ -0,0 +1,7 @@ +package cz.zcu.kiv.backendapi.country; + +/** + * Country service interface + */ +public interface ICountryService { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiExceptionHandler.java b/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiExceptionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..81303e80535aa10809441929608af7a7f331e2fe --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiExceptionHandler.java @@ -0,0 +1,57 @@ +package cz.zcu.kiv.backendapi.exception; + + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.validation.BindException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class ApiExceptionHandler { + + /** + * Handles bind exception + * + * @param exception bind exception + * @return response entity with message and status + */ + @ExceptionHandler(value = {BindException.class}) + public ResponseEntity<Object> handleBindException(BindException exception) { + return new ResponseEntity<>(exception.getBindingResult().getAllErrors(), HttpStatus.BAD_REQUEST); + } + + /** + * Handles username not found exception + * + * @param exception username not found exception + * @return response entity with message and status + */ + @ExceptionHandler(value = {UsernameNotFoundException.class}) + public ResponseEntity<Object> handleUsernameNotFoundException(UsernameNotFoundException exception) { + return new ResponseEntity<>(exception.getMessage(), HttpStatus.NOT_FOUND); + } + + /** + * Handles api request exception + * + * @param exception api request found exception + * @return response entity with message and status + */ + @ExceptionHandler(value = {ApiRequestException.class}) + public ResponseEntity<Object> handleApiRequestException(ApiRequestException exception) { + return new ResponseEntity<>(exception.getMessage(), exception.getHttpStatus()); + } + + /** + * Handles illegal argument exception + * + * @param exception illegal argument exception + * @return response entity with message and status + */ + @ExceptionHandler(value = {IllegalArgumentException.class}) + public ResponseEntity<Object> handleIllegalArgumentException(IllegalArgumentException exception) { + return new ResponseEntity<>(exception.getMessage(), HttpStatus.BAD_REQUEST); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiRequestException.java b/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiRequestException.java new file mode 100644 index 0000000000000000000000000000000000000000..d43df3d21659b80f52c5cdd11577e5289c86d886 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/exception/ApiRequestException.java @@ -0,0 +1,15 @@ +package cz.zcu.kiv.backendapi.exception; + +import lombok.Getter; +import org.springframework.http.HttpStatus; + +@Getter +public class ApiRequestException extends RuntimeException { + private final HttpStatus httpStatus; + + public ApiRequestException(String message, HttpStatus httpStatus) { + super(message); + this.httpStatus = httpStatus; + } + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/PasswordEncoder.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/PasswordEncoder.java new file mode 100644 index 0000000000000000000000000000000000000000..759d2d0f23d61a9ec3308e6195ba9de3273ced56 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/PasswordEncoder.java @@ -0,0 +1,23 @@ +package cz.zcu.kiv.backendapi.security; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +/** + * Class representing password encoder + */ +@Configuration +public class PasswordEncoder { + + /** + * Returns password encoder + * + * @return password encoder + */ + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/SecurityConfig.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/SecurityConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..d6883d7112d7735d636cd61ff022a6f5acd61f2c --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/SecurityConfig.java @@ -0,0 +1,108 @@ +package cz.zcu.kiv.backendapi.security; + +import cz.zcu.kiv.backendapi.security.jwt.JwtTokenVerifier; +import cz.zcu.kiv.backendapi.security.jwt.JwtUsernameAndPasswordAuthenticationFilter; +import cz.zcu.kiv.backendapi.security.jwt.JwtUtils; +import cz.zcu.kiv.backendapi.user.Role; +import cz.zcu.kiv.backendapi.user.permission.Permission; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +/** + * Security config class + */ +@Configuration +@EnableWebSecurity +@RequiredArgsConstructor +public class SecurityConfig extends WebSecurityConfigurerAdapter { + /** + * User detail service + */ + private final UserDetailsService userDetailsService; + + /** + * Password encoder + */ + private final BCryptPasswordEncoder bCryptPasswordEncoder; + + /** + * JWT utils + */ + private final JwtUtils jwtUtils; + + /** + * List of permitted pages without login + */ + private final String[] permittedUrls = new String[]{"/login", "/users/token", "/swagger-ui/**", + "/swagger-ui.html", "/v3/api-docs", "/v3/api-docs/swagger-config"}; + + /** + * Security configuration + * + * @param http http security + * @throws Exception exception + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf().disable() + .cors() + .and() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .addFilter(new JwtUsernameAndPasswordAuthenticationFilter(authenticationManager(), jwtUtils)) + .addFilterAfter(new JwtTokenVerifier(jwtUtils, permittedUrls), JwtUsernameAndPasswordAuthenticationFilter.class) + .authorizeRequests() + .antMatchers(permittedUrls).permitAll() + .antMatchers("/user/update-permissions/**", "/user/reset-password/**").hasRole(Role.ADMIN.name()) + .antMatchers(HttpMethod.DELETE, "/user/**").hasRole(Role.ADMIN.name()) + .antMatchers("/write/**").hasAuthority(Permission.WRITE.name()) + .antMatchers("/read/**").hasAuthority(Permission.READ.name()) + .antMatchers("/delete/**").hasAuthority(Permission.DELETE.name()) + .anyRequest() + .authenticated(); + } + + /** + * Sets authentication provider to authentication manager + * + * @param auth authentication manager builder + */ + @Override + protected void configure(final AuthenticationManagerBuilder auth) { + auth.authenticationProvider(authenticationProvider()); + } + + + /** + * Returns authentication provider + * + * @return authentication provider + */ + @Bean + public DaoAuthenticationProvider authenticationProvider() { + final DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); + provider.setUserDetailsService(userDetailsService); + provider.setPasswordEncoder(bCryptPasswordEncoder); + return provider; + } + + @Bean + CorsConfigurationSource corsConfigurationSource() { + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues()); + return source; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtTokenVerifier.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtTokenVerifier.java new file mode 100644 index 0000000000000000000000000000000000000000..fed29b1a71b79b0eb909526da2b3286fadaa01ec --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtTokenVerifier.java @@ -0,0 +1,92 @@ +package cz.zcu.kiv.backendapi.security.jwt; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.google.common.base.Strings; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * Class that verifies JWT per request + */ +@Slf4j +@RequiredArgsConstructor +public class JwtTokenVerifier extends OncePerRequestFilter { + + /** + * JWT utils + */ + private final JwtUtils jwtUtils; + + /** + * Array or urls with this filter (JWT not needed for them) + */ + private final String[] skipFilterUrls; + + /** + * Filters request - checks for JWT token and validates it + * + * @param request request + * @param response response + * @param filterChain filter chain + * @throws ServletException servlet exception + * @throws IOException I/O exception + */ + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String authorizationHeader = request.getHeader(HttpHeaders.AUTHORIZATION); + if (Strings.isNullOrEmpty(authorizationHeader) || !authorizationHeader.startsWith(jwtUtils.getTokenPrefix())) { + filterChain.doFilter(request, response); + return; + } + + try { + String token = authorizationHeader.substring(jwtUtils.getTokenPrefix().length()); + Algorithm algorithm = jwtUtils.getAlgorithm(); //TODO secure + JWTVerifier verifier = JWT.require(algorithm).build(); + DecodedJWT decodedJWT = verifier.verify(token); + String username = decodedJWT.getSubject(); + List<String> authorities = decodedJWT.getClaim(jwtUtils.getClaimAuthoritiesName()).asList(String.class); + Collection<SimpleGrantedAuthority> simpleGrantedAuthorities = authorities.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toSet()); + + UsernamePasswordAuthenticationToken authenticationToken = + new UsernamePasswordAuthenticationToken(username, null, simpleGrantedAuthorities); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + } catch (Exception e) { + log.error("Error logging in: " + e.getMessage()); + jwtUtils.writeErrorToResponse(response, e); + } + filterChain.doFilter(request, response); + } + + /** + * Tells filter whether given request should not be scanned for JWT + * + * @param request request + * @return true if given request should not be scanned for JWT, false otherwise + * @throws ServletException servlet exception + */ + @Override + protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { + return Arrays.stream(skipFilterUrls).anyMatch(url -> new AntPathRequestMatcher(url).matches(request)); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUsernameAndPasswordAuthenticationFilter.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUsernameAndPasswordAuthenticationFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..b2944929a585ef6f327c402547e1020351d9615a --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUsernameAndPasswordAuthenticationFilter.java @@ -0,0 +1,99 @@ +package cz.zcu.kiv.backendapi.security.jwt; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; +import com.fasterxml.jackson.databind.ObjectMapper; +import cz.zcu.kiv.backendapi.user.UserEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +import javax.servlet.FilterChain; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.stream.Collectors; + +/** + * Class that checks login and provides user with tokens after successful login + */ +@Slf4j +@RequiredArgsConstructor +public class JwtUsernameAndPasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter { + /** + * Authentication manager + */ + private final AuthenticationManager authenticationManager; + + /** + * JWT utils + */ + private final JwtUtils jwtUtils; + + /** + * Attempts authentication - checks username and password + * + * @param request request (contains username and password) + * @param response response + * @return authentication manager + * @throws AuthenticationException authentication exception + */ + @Override + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { + try { + UsernameAndPasswordAuthenticationRequest authenticationRequest = new ObjectMapper() + .readValue(request.getInputStream(), UsernameAndPasswordAuthenticationRequest.class); + log.info("Username is: " + authenticationRequest.getUsername()); + log.info("Password is: " + authenticationRequest.getPassword()); + Authentication authentication = new UsernamePasswordAuthenticationToken( + authenticationRequest.getUsername(), + authenticationRequest.getPassword() + ); + return authenticationManager.authenticate(authentication); + } catch (IOException e) { + log.error("Error getting authentication request from request: " + e.getMessage()); + throw new AuthenticationCredentialsNotFoundException(e.getMessage()); + } + } + + /** + * Handles successful authentication - sends tokens to client + * + * @param request request + * @param response response + * @param chain filter chain + * @param authentication authentication + * @throws IOException I/O exception + */ + @Override + protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authentication) throws IOException { + UserEntity user = (UserEntity) authentication.getPrincipal(); + + Algorithm algorithm = jwtUtils.getAlgorithm(); //TODO secure + + String access_token = JWT.create() + .withSubject(user.getUsername()) + .withExpiresAt(Date.from((LocalDateTime.now().plusMinutes(jwtUtils.getTokenExpirationAfterMinutes())).atZone(ZoneId.systemDefault()).toInstant())) + .withIssuer(request.getRequestURL().toString()) + .withClaim(jwtUtils.getClaimAuthoritiesName(), user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList())) + .sign(algorithm); + + String refresh_token = JWT.create() + .withSubject(user.getUsername()) + .withExpiresAt(Date.from((LocalDate.now().plusMonths(jwtUtils.getRefreshTokenExpirationAfterMonths())).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())) + .withIssuer(request.getRequestURL().toString()) + .sign(algorithm); + + jwtUtils.writeTokensToResponse(response, access_token, refresh_token); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUtils.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..fb61bbc66b62559fcf604691dddfcd1f338737bb --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/JwtUtils.java @@ -0,0 +1,106 @@ +package cz.zcu.kiv.backendapi.security.jwt; + +import com.auth0.jwt.algorithms.Algorithm; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + + +/** + * Util class with configurations and methods for JWT + */ +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = "application.jwt") +public class JwtUtils { + + /** + * Secret key + */ + private String secretKey; + + /** + * Token prefix + */ + private String tokenPrefix; + + /** + * Access token expiration time in minutes + */ + private Integer tokenExpirationAfterMinutes; + + /** + * Refresh token expiration time in months + */ + private Integer refreshTokenExpirationAfterMonths; + + /** + * Access token name + */ + private String accessTokenName; + + /** + * Refresh token name + */ + private String refreshTokenName; + + /** + * Claim authorities name + */ + private String claimAuthoritiesName; + + + /** + * Returns algorithm for JWT + * + * @return algorithm for JWT + */ + @Bean + public Algorithm getAlgorithm() { + return Algorithm.HMAC512(secretKey.getBytes()); + } + + /** + * Writes tokens to response + * + * @param response response + * @param accessToken access token + * @param refreshToken refresh token + * @throws IOException I/O exception + */ + public void writeTokensToResponse(HttpServletResponse response, String accessToken, String refreshToken) throws IOException { + Map<String, String> tokens = new HashMap<>(); + tokens.put(this.getAccessTokenName(), this.getTokenPrefix() + accessToken); + tokens.put(this.getRefreshTokenName(), this.getTokenPrefix() + refreshToken); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + new ObjectMapper().writeValue(response.getOutputStream(), tokens); + } + + /** + * Writes error to response + * + * @param response response + * @param e error with message + * @throws IOException I/O exception + */ + public void writeErrorToResponse(HttpServletResponse response, Exception e) throws IOException { + response.setStatus(HttpStatus.UNAUTHORIZED.value()); + Map<String, String> error = new HashMap<>(); + error.put("error_message", e.getMessage()); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + new ObjectMapper().writeValue(response.getOutputStream(), error); + } + +} + diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/UsernameAndPasswordAuthenticationRequest.java b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/UsernameAndPasswordAuthenticationRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..daba82578c863d5dd8fd7e51d39968ebcee318bb --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/security/jwt/UsernameAndPasswordAuthenticationRequest.java @@ -0,0 +1,24 @@ +package cz.zcu.kiv.backendapi.security.jwt; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * Class representing the username and password authentication request + */ +@Getter +@Setter +@NoArgsConstructor +public class UsernameAndPasswordAuthenticationRequest { + /** + * Username + */ + private String username; + + /** + * Password + */ + private String password; + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/ITitlePageService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/ITitlePageService.java new file mode 100644 index 0000000000000000000000000000000000000000..5539794534ba8d69fc8ee0fff56a97731f72c0fe --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/ITitlePageService.java @@ -0,0 +1,21 @@ +package cz.zcu.kiv.backendapi.titlepage; + +/** + * Title page service interface + */ +public interface ITitlePageService { + /** + * Returns title page + * + * @return title page + */ + TitlePage getTitlePage(); + + /** + * Adds or updates title page with given ID + * + * @param titlePage title page + */ + void updateTitlePage(TitlePage titlePage); + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePage.java b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePage.java new file mode 100644 index 0000000000000000000000000000000000000000..0c6e685e970302fc4f6c35434a82b5217b3820b3 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePage.java @@ -0,0 +1,41 @@ +package cz.zcu.kiv.backendapi.titlepage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * Class representing title page + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "title_page") +@Schema(name = "TitlePageDto") +public class TitlePage { + /** + * ID + */ + @Id + @JsonIgnore + private Long id; + + /** + * Title + */ + private String title; + + /** + * Content of the title page + */ + @Column(length = 100000) + private String content; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageController.java b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageController.java new file mode 100644 index 0000000000000000000000000000000000000000..dd65ea25fa3638367abf694687a9a4d3e0e0632b --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageController.java @@ -0,0 +1,43 @@ +package cz.zcu.kiv.backendapi.titlepage; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + * Controller for title page + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/title-page") +public class TitlePageController { + /** + * Title page service + */ + private final ITitlePageService titlePageService; + + /** + * Returns title page + * + * @return title page + */ + @GetMapping("") + @Operation(summary = "returns title page") + public ResponseEntity<TitlePage> getTitlePage() { + return new ResponseEntity<>(titlePageService.getTitlePage(), HttpStatus.OK); + } + + /** + * Updates title page + * + * @param titlePage title page + */ + @PostMapping("") + @Operation(summary = "updates/creates title page") + public void updateTitlePage(@RequestBody TitlePage titlePage) { + titlePageService.updateTitlePage(titlePage); + } + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..5497d6d1f9d201fc868753fb5631433e9850b12a --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageRepository.java @@ -0,0 +1,11 @@ +package cz.zcu.kiv.backendapi.titlepage; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * Title page repository + */ +@Repository +public interface TitlePageRepository extends JpaRepository<TitlePage, Long> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementation.java b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementation.java new file mode 100644 index 0000000000000000000000000000000000000000..3c86c0aa10864a0d815bffdfbecd1fb379301502 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementation.java @@ -0,0 +1,43 @@ +package cz.zcu.kiv.backendapi.titlepage; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; + +/** + * Title page service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +@Slf4j +public class TitlePageServiceImplementation implements ITitlePageService { + /** + * ID of the title page + */ + private static final long TITLE_PAGE_ID = 1; + + /** + * Title page repository + */ + private final TitlePageRepository titlePageRepository; + + @Override + public TitlePage getTitlePage() { + Optional<TitlePage> optionalTitlePage = titlePageRepository.findById(TITLE_PAGE_ID); + if (optionalTitlePage.isEmpty()) { + TitlePage titlePage = new TitlePage(TITLE_PAGE_ID, "", ""); + return titlePageRepository.save(titlePage); + } + return optionalTitlePage.get(); + } + + @Override + public void updateTitlePage(TitlePage titlePage) { + titlePage.setId(TITLE_PAGE_ID); + titlePageRepository.save(titlePage); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/type/ITypeService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/type/ITypeService.java new file mode 100644 index 0000000000000000000000000000000000000000..c8a921f667b6f5dfcb2fbfea4108f4990372dafa --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/type/ITypeService.java @@ -0,0 +1,24 @@ +package cz.zcu.kiv.backendapi.type; + +import java.util.Optional; + +/** + * Type service interface + */ +public interface ITypeService { + + /** + * Saves on type + * + * @param type type + */ + void saveType(Type type); + + /** + * Returns type by name (optional) + * + * @param type type name + * @return type by name (optional) + */ + Optional<Type> getTypeByName(String type); +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/type/Type.java b/backend/src/main/java/cz/zcu/kiv/backendapi/type/Type.java new file mode 100644 index 0000000000000000000000000000000000000000..8bf3d415c5b2fa5e9ca35148bc32f7284c25f9e8 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/type/Type.java @@ -0,0 +1,25 @@ +package cz.zcu.kiv.backendapi.type; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * Type entity representing type of catalog item + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "types") +public class Type { + /** + * Type (e.g. river), serves as ID + */ + @Id + private String type; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..9cd64bd8cc8935352913daea5f201939492a15b4 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeRepository.java @@ -0,0 +1,12 @@ +package cz.zcu.kiv.backendapi.type; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +/** + * Type repository + */ +@Repository +public interface TypeRepository extends JpaRepository<Type, String> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..2cc599869d29f0c166711dff6b31b6934fe14588 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/type/TypeServiceImpl.java @@ -0,0 +1,32 @@ +package cz.zcu.kiv.backendapi.type; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; + +/** + * Type service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +public class TypeServiceImpl implements ITypeService { + /** + * Type repository + */ + private final TypeRepository typeRepository; + + @Override + public void saveType(Type type) { + typeRepository.save(type); + } + + @Override + public Optional<Type> getTypeByName(String type) { + return typeRepository.findById(type); + } + + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/IUserService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/IUserService.java new file mode 100644 index 0000000000000000000000000000000000000000..c75699850265e18ddcca3f909f99c7ec0beef79c --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/IUserService.java @@ -0,0 +1,64 @@ +package cz.zcu.kiv.backendapi.user; + +import cz.zcu.kiv.backendapi.user.permission.PermissionDto; + +import java.util.List; + +/** + * User service interface + */ +public interface IUserService { + + /** + * Returns user by username + * + * @param username username + * @return user by username + */ + UserEntity getUserByName(String username); + + /** + * Registers new user + * + * @param userDto user DTO + */ + void registerNewUser(UserDto userDto); + + /** + * Deletes user with given username + * + * @param username username + */ + void deleteUser(String username); + + /** + * Returns list of all users + * + * @return list of all users + */ + List<UserDto> getAllUsers(); + + /** + * Changes password of the user + * + * @param oldPassword old password + * @param newPassword new password + */ + void changePassword(String oldPassword, String newPassword); + + /** + * Updates permissions to given user + * + * @param username username + * @param permissionDto permissions + */ + void updatePermissions(String username, PermissionDto permissionDto); + + /** + * Resets password to given user + * + * @param username username + * @param newPassword new password + */ + void resetPassword(String username, String newPassword); +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/Role.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/Role.java new file mode 100644 index 0000000000000000000000000000000000000000..8936643f1e84b2284359f0f0756d3da2ee9498dc --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/Role.java @@ -0,0 +1,26 @@ +package cz.zcu.kiv.backendapi.user; + +import lombok.Getter; + +/** + * Enum for user roles + */ +@Getter +public enum Role { + ADMIN("ROLE_ADMIN"), + USER("ROLE_USER"); + + /** + * Role + */ + private final String role; + + /** + * Creates role + * + * @param role role + */ + Role(final String role) { + this.role = role; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserController.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserController.java new file mode 100644 index 0000000000000000000000000000000000000000..ba1bab6821a3514f1856ed538f109fa3ff4e6946 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserController.java @@ -0,0 +1,152 @@ +package cz.zcu.kiv.backendapi.user; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.google.common.base.Strings; +import cz.zcu.kiv.backendapi.exception.ApiRequestException; +import cz.zcu.kiv.backendapi.security.jwt.JwtUtils; +import cz.zcu.kiv.backendapi.user.password.PasswordDto; +import cz.zcu.kiv.backendapi.user.permission.PermissionDto; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Controller for users + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/users") +@Slf4j +public class UserController { + + /** + * User service + */ + private final IUserService userService; + + /** + * JWT utils + */ + private final JwtUtils jwtUtils; + + + /** + * Registers new user + * + * @param userDto user DTO + */ + @PostMapping("") + @Operation(summary = "registers new user") + public void registerNewUser(@RequestBody @Valid UserDto userDto) { + userService.registerNewUser(userDto); + } + + + /** + * Changes password to logged-in user + * + * @param oldPassword old password + * @param passwordDto password DTO + */ + @PatchMapping("/password") + @Operation(summary = "changes password to logged-in user") + public void changePassword(@Valid @NotNull(message = "Old password must not be null") @RequestParam String oldPassword, @RequestBody @Valid PasswordDto passwordDto) { + userService.changePassword(oldPassword, passwordDto.getPassword()); + } + + /** + * Returns list of all users + * + * @return list of all users + */ + @GetMapping("") + @Operation(summary = "returns all users") + public ResponseEntity<List<UserDto>> getAllUsers() { + return new ResponseEntity<>(userService.getAllUsers(), HttpStatus.OK); + } + + /** + * Updates permissions to given user + * + * @param username username + * @param permissionDto permissions + */ + @PatchMapping("/{username}/permissions") + @Operation(summary = "changes permissions to given user") + public void updatePermissions(@PathVariable String username, @RequestBody PermissionDto permissionDto) { + userService.updatePermissions(username, permissionDto); + } + + /** + * Resets password to given user + * + * @param username username + * @param passwordDto password + */ + @PatchMapping(value = "/{username}/password") + @Operation(summary = "changes password to given user") + public void resetPassword(@PathVariable String username, @RequestBody @Valid PasswordDto passwordDto) { + userService.resetPassword(username, passwordDto.getPassword()); + } + + //TODO check if needed, comment otherwise + @DeleteMapping("/{username}") + @Operation(summary = "deletes user with given username") + public void deleteUser(@PathVariable String username) { + userService.deleteUser(username); + } + + + /** + * Refreshes access token if refresh token is valid + * + * @param request request + * @param response response + * @throws IOException I/O Exception + */ + @GetMapping("/token") + @Operation(summary = "returns a new access token and a refresh token to user") + public void refreshToken(HttpServletRequest request, HttpServletResponse response) throws IOException { + String authorizationHeader = request.getHeader(HttpHeaders.AUTHORIZATION); + if (Strings.isNullOrEmpty(authorizationHeader) || !authorizationHeader.startsWith(jwtUtils.getTokenPrefix())) { + throw new ApiRequestException("Refresh token is missing", HttpStatus.FORBIDDEN); + } + try { + String refresh_token = authorizationHeader.substring(jwtUtils.getTokenPrefix().length()); + Algorithm algorithm = jwtUtils.getAlgorithm(); //TODO secure + JWTVerifier verifier = JWT.require(algorithm).build(); + DecodedJWT decodedJWT = verifier.verify(refresh_token); + String username = decodedJWT.getSubject(); + UserEntity user = userService.getUserByName(username); + String access_token = JWT.create() + .withSubject(user.getUsername()) + .withExpiresAt(Date.from((LocalDateTime.now().plusMinutes(jwtUtils.getTokenExpirationAfterMinutes())).atZone(ZoneId.systemDefault()).toInstant())) + .withIssuer(request.getRequestURL().toString()) + .withClaim(jwtUtils.getClaimAuthoritiesName(), user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList())) + .sign(algorithm); + jwtUtils.writeTokensToResponse(response, access_token, refresh_token); + } catch (Exception e) { + log.error("Error refreshing token in: " + e.getMessage()); + jwtUtils.writeErrorToResponse(response, e); + } + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserDto.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserDto.java new file mode 100644 index 0000000000000000000000000000000000000000..4f110b2c742bfdaa4fe9c48679fe0cde8e405173 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserDto.java @@ -0,0 +1,53 @@ +package cz.zcu.kiv.backendapi.user; + +import cz.zcu.kiv.backendapi.user.password.PasswordDto; +import cz.zcu.kiv.backendapi.user.permission.PermissionDto; +import cz.zcu.kiv.backendapi.validation.PasswordMatches; +import cz.zcu.kiv.backendapi.validation.ValidEmail; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + + +/** + * User data object + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@PasswordMatches +public class UserDto { + /** + * Name + */ + private String name; + + /** + * Email - must be valid email + */ + @ValidEmail + @NotNull(message = "Email must not be null") + @NotEmpty(message = "Email must not be empty") + private String email; + + /** + * Permissions + */ + @Valid + private PermissionDto permissions; + + + /** + * Password DTO containing password and confirmation password + */ + @Valid + @NotNull(message = "Passwords must not be null") + @NotEmpty(message = "Passwords must not be empty") + private PasswordDto passwords; + + +} \ No newline at end of file diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserEntity.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserEntity.java new file mode 100644 index 0000000000000000000000000000000000000000..ddf9ae56d9235477eb5ad1f936b7f2b0a6be61c1 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserEntity.java @@ -0,0 +1,109 @@ +package cz.zcu.kiv.backendapi.user; + +import cz.zcu.kiv.backendapi.user.permission.Permission; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * User entity representing application user + */ +@Data +@NoArgsConstructor +@Entity +@Table(name = "users") +public class UserEntity implements UserDetails { + /** + * Name + */ + private String name; + + /** + * Email - serves as username and must be unique - serves as Id + */ + @Id + private String email; + + /** + * Password + */ + private String password; + + /** + * Permissions + */ + private byte permissions; + + + /** + * Whether the user is admin or not + */ + @Column(name = "is_admin") + @Type(type = "numeric_boolean") + private boolean isAdmin; + + public UserEntity(String name, String email, String password, byte permissions, boolean isAdmin) { + this.name = name; + this.email = email; + this.password = password; + this.permissions = permissions; + this.isAdmin = isAdmin; + } + + @Override + public Collection<? extends GrantedAuthority> getAuthorities() { + final List<GrantedAuthority> authorities = new ArrayList<>(); + if (isAdmin) { + authorities.add(new SimpleGrantedAuthority(Role.ADMIN.getRole())); + } else { + authorities.add(new SimpleGrantedAuthority(Role.USER.getRole())); + } + for (Permission permission : Permission.values()) { + if ((permission.getBit() & permissions) == permission.getBit()) { + authorities.add(new SimpleGrantedAuthority(permission.getName())); + } + } + + return authorities; + } + + public String getPassword() { + return password; + } + + @Override + public String getUsername() { + return email; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..976fdd4b6a267d4b604310b6127d62172be7ee52 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserRepository.java @@ -0,0 +1,22 @@ +package cz.zcu.kiv.backendapi.user; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + + +/** + * User repository + */ +@Repository +public interface UserRepository extends JpaRepository<UserEntity, String> { + /** + * Returns user by email (username) + * + * @param username username + * @return optional user by email (username) + */ + Optional<UserEntity> findByEmail(String username); + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..f031a5763ec6b9b530c287e69315ea6f27183b9f --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/UserServiceImpl.java @@ -0,0 +1,186 @@ +package cz.zcu.kiv.backendapi.user; + +import cz.zcu.kiv.backendapi.exception.ApiRequestException; +import cz.zcu.kiv.backendapi.user.permission.Permission; +import cz.zcu.kiv.backendapi.user.permission.PermissionDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * User service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +@Slf4j +public class UserServiceImpl implements IUserService, UserDetailsService { + /** + * Message for exception when user is not found by username + */ + private static final String USER_NOT_FOUND = "User with username %s not found"; + + /** + * User repository + */ + private final UserRepository userRepository; + + /** + * Password encoder + */ + private final BCryptPasswordEncoder bCryptPasswordEncoder; + + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + return userRepository.findByEmail(username) + .orElseThrow(() -> { + log.error(String.format(USER_NOT_FOUND, username)); + throw new UsernameNotFoundException(String.format(USER_NOT_FOUND, username)); + }); + } + + @Override + public UserEntity getUserByName(String username) { + return userRepository.findByEmail(username). + orElseThrow(() -> { + log.error(String.format(USER_NOT_FOUND, username)); + throw new UsernameNotFoundException(String.format(USER_NOT_FOUND, username)); + }); + } + + @Override + public void registerNewUser(UserDto userDto) { + if (userRepository.findByEmail(userDto.getEmail()).isPresent()) { + log.error("Trying to register new user with username that is already taken: " + userDto.getEmail()); + throw new ApiRequestException(String.format("User with username %s already exists", userDto.getEmail()), HttpStatus.CONFLICT); + } + UserEntity userEntity = new UserEntity(); + convertDtoToEntity(userDto, userEntity); + userRepository.save(userEntity); + } + + @Override + public void updatePermissions(String username, PermissionDto permissionDto) { + UserEntity userEntity = userRepository.findByEmail(username).orElseThrow(() -> { + log.error(String.format(USER_NOT_FOUND, username)); + throw new UsernameNotFoundException(String.format(USER_NOT_FOUND, username)); + }); + userEntity.setPermissions(getPermissionsFromDto(permissionDto)); + userRepository.save(userEntity); + } + + @Override + public void resetPassword(String username, String newPassword) { + UserEntity userEntity = userRepository.findByEmail(username).orElseThrow(() -> { + log.error(String.format(USER_NOT_FOUND, username)); + throw new UsernameNotFoundException(String.format(USER_NOT_FOUND, username)); + }); + userEntity.setPassword(bCryptPasswordEncoder.encode(newPassword)); + userRepository.save(userEntity); + } + + //TODO maybe check if user is not deleting himself - or it might be ok + @Override + public void deleteUser(String username) { + if (!userRepository.existsById(username)) { + log.error(String.format(USER_NOT_FOUND, username)); + throw new UsernameNotFoundException(String.format(USER_NOT_FOUND, username)); + } + userRepository.deleteById(username); + } + + @Override + public List<UserDto> getAllUsers() { + return userRepository.findAll().stream().map(this::convertEntityToDto).collect(Collectors.toList()); + } + + @Override + public void changePassword(String oldPassword, String newPassword) { + UserEntity loggedUser = getUserByName((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal()); + if (!bCryptPasswordEncoder.matches(oldPassword, loggedUser.getPassword())) { + throw new ApiRequestException("Old password does not match", HttpStatus.BAD_REQUEST); + } + loggedUser.setPassword(bCryptPasswordEncoder.encode(newPassword)); + userRepository.save(loggedUser); + } + + + /** + * Converts user DTO to user entity + * + * @param userDto user DTO + * @param userEntity user entity + */ + private void convertDtoToEntity(UserDto userDto, UserEntity userEntity) { + userEntity.setName(userDto.getName()); + userEntity.setEmail(userDto.getEmail()); + userEntity.setPermissions(getPermissionsFromDto(userDto.getPermissions())); + userEntity.setPassword(bCryptPasswordEncoder.encode(userDto.getPasswords().getPassword())); + } + + /** + * Converts user entity to user DTO + * + * @param userEntity user entity + * @return user DTO from user entity + */ + private UserDto convertEntityToDto(UserEntity userEntity) { + UserDto userDto = new UserDto(); + userDto.setName(userEntity.getName()); + userDto.setEmail(userEntity.getEmail()); + setPermissionsToDto(userDto, userEntity); + return userDto; + } + + /** + * Sets permission to user DTO based on user entity + * + * @param userDto user DTO + * @param userEntity user entity + */ + private void setPermissionsToDto(UserDto userDto, UserEntity userEntity) { + byte userPermissions = userEntity.getPermissions(); + PermissionDto permissionDto = new PermissionDto(); + if ((userPermissions & Permission.READ.getBit()) == Permission.READ.getBit()) { + permissionDto.setCanRead(true); + } + if ((userPermissions & Permission.WRITE.getBit()) == Permission.WRITE.getBit()) { + permissionDto.setCanWrite(true); + } + if ((userPermissions & Permission.DELETE.getBit()) == Permission.DELETE.getBit()) { + permissionDto.setCanDelete(true); + } + userDto.setPermissions(permissionDto); + } + + /** + * Returns permissions as byte from permission DTO + * + * @param permissionDto permission DTO + * @return permissions as byte + */ + private byte getPermissionsFromDto(PermissionDto permissionDto) { + byte permissions = (byte) 0; + if (permissionDto.isCanRead()) { + permissions |= Permission.READ.getBit(); + } + if (permissionDto.isCanWrite()) { + permissions |= Permission.WRITE.getBit(); + } + if (permissionDto.isCanDelete()) { + permissions |= Permission.DELETE.getBit(); + } + return permissions; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/password/PasswordDto.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/password/PasswordDto.java new file mode 100644 index 0000000000000000000000000000000000000000..a03f11686b6d736eb210dcac238565904645e4f7 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/password/PasswordDto.java @@ -0,0 +1,42 @@ +package cz.zcu.kiv.backendapi.user.password; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import cz.zcu.kiv.backendapi.validation.PasswordMatches; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * Password data object + */ +@Data +@PasswordMatches +@NoArgsConstructor +@AllArgsConstructor +public class PasswordDto { + /** + * Minimal length for password + */ + @JsonIgnore + private static final int MIN_PASSWORD_LENGTH = 8; + + /** + * New password - must be strong enough + */ + @NotNull(message = "Password must not be null") + @NotEmpty(message = "Password must not be empty") + @Size(min = MIN_PASSWORD_LENGTH, message = "Password must be at least " + MIN_PASSWORD_LENGTH + " characters long") + private String password; + + /** + * New password confirmation - must match new password + */ + @NotNull(message = "Confirmation password must not be null") + @NotEmpty(message = "Confirmation password must not be empty") + private String confirmationPassword; + +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/Permission.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/Permission.java new file mode 100644 index 0000000000000000000000000000000000000000..c822219301d24fa90bdf558dc5b87813018bf55a --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/Permission.java @@ -0,0 +1,34 @@ +package cz.zcu.kiv.backendapi.user.permission; + +import lombok.Getter; + +/** + * Enum of permission with given name end byte value which is used to extract permission from number + */ +@Getter +public enum Permission { + READ("READ", (byte) 0x1), + WRITE("WRITE", (byte) 0x2), + DELETE("DELETE", (byte) 0x4); + + /** + * Permission name + */ + private final String name; + + /** + * Hexadecimal number containing only one bit set to 1 (corresponds to given permission) + */ + private final byte bit; + + /** + * Creates new permission with given name and byte value + * + * @param name name + * @param bit byte value + */ + Permission(String name, byte bit) { + this.name = name; + this.bit = bit; + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/PermissionDto.java b/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/PermissionDto.java new file mode 100644 index 0000000000000000000000000000000000000000..dfc16672a412189b162aade267428b851db5acb6 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/user/permission/PermissionDto.java @@ -0,0 +1,28 @@ +package cz.zcu.kiv.backendapi.user.permission; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Permission DTO + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PermissionDto { + /** + * Whether user has 'READ' authority + */ + private boolean canRead; + + /** + * Whether user has 'WRITE' authority + */ + private boolean canWrite; + + /** + * Whether user has 'DELETE' authority + */ + private boolean canDelete; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/validation/EmailValidator.java b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/EmailValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..2a20bd49bf212503f426a72c09c76aa5f01761e2 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/EmailValidator.java @@ -0,0 +1,37 @@ +package cz.zcu.kiv.backendapi.validation; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Validator for email + */ +public class EmailValidator implements ConstraintValidator<ValidEmail, String> { + /** + * Email string pattern + */ + private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-+]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})$"; + + /** + * Email patter + */ + private static final Pattern PATTERN = Pattern.compile(EMAIL_PATTERN); + + /** + * Check if email is valid (matches pattern) + * + * @param email email + * @param constraintValidatorContext constraint validator context + * @return true if email is valid, false otherwise + */ + @Override + public boolean isValid(final String email, final ConstraintValidatorContext constraintValidatorContext) { + if (email == null) { + return false; + } + final Matcher matcher = PATTERN.matcher(email); + return matcher.matches(); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatches.java b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatches.java new file mode 100644 index 0000000000000000000000000000000000000000..51930b07b1c767fc74d9b66d77f2311b094e18d5 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatches.java @@ -0,0 +1,25 @@ +package cz.zcu.kiv.backendapi.validation; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +/** + * Constraint to password matches confirmation password + */ +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = PasswordMatchesValidator.class) +@Documented +public @interface PasswordMatches { + /** + * Error message when validation fails + * + * @return error message + */ + String message() default "Passwords do not match"; + + Class<?>[] groups() default {}; + + Class<? extends Payload>[] payload() default {}; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatchesValidator.java b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatchesValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..a243457e98c036e7529e4c81fb572b47bbe852f2 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/PasswordMatchesValidator.java @@ -0,0 +1,27 @@ +package cz.zcu.kiv.backendapi.validation; + +import cz.zcu.kiv.backendapi.user.password.PasswordDto; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * Validator for password and confirmation password + */ +public class PasswordMatchesValidator implements ConstraintValidator<PasswordMatches, PasswordDto> { + + /** + * Checks if password and confirmation password match + * + * @param passwordDto password DTO + * @param constraintValidatorContext constraint validator context + * @return true if passwords matches, false otherwise + */ + @Override + public boolean isValid(final PasswordDto passwordDto, final ConstraintValidatorContext constraintValidatorContext) { + if (passwordDto.getPassword() == null || passwordDto.getConfirmationPassword() == null) { + return false; + } + return passwordDto.getPassword().equals(passwordDto.getConfirmationPassword()); + } +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/validation/ValidEmail.java b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/ValidEmail.java new file mode 100644 index 0000000000000000000000000000000000000000..5e512259daf87414488aae4655f4dc95fd7dd0ab --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/validation/ValidEmail.java @@ -0,0 +1,25 @@ +package cz.zcu.kiv.backendapi.validation; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +/** + * Constraint to email is valid + */ +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = EmailValidator.class) +@Documented +public @interface ValidEmail { + /** + * Error message when validation fails + * + * @return error message + */ + String message() default "Email is not valid - example \"x@x.xx\" (at least one character before and after \"@\" and two characters after \".\")"; + + Class<?>[] groups() default {}; + + Class<? extends Payload>[] payload() default {}; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/IWrittenFormService.java b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/IWrittenFormService.java new file mode 100644 index 0000000000000000000000000000000000000000..500809e391784988d2401c41ce6e4d929883e8cf --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/IWrittenFormService.java @@ -0,0 +1,7 @@ +package cz.zcu.kiv.backendapi.writtenform; + +/** + * Written form service interface + */ +public interface IWrittenFormService { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenForm.java b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenForm.java new file mode 100644 index 0000000000000000000000000000000000000000..a5124b5a446abc78db2d1e7a01279aa016a4b159 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenForm.java @@ -0,0 +1,31 @@ +package cz.zcu.kiv.backendapi.writtenform; + +import cz.zcu.kiv.backendapi.catalog.CatalogItem; +import lombok.*; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Written form entity representing written form of catalog item + */ +@Data +@EqualsAndHashCode(exclude = "catalogItem") +@ToString(exclude = "catalogItem") +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "written_forms") +@IdClass(WrittenForm.class) +public class WrittenForm implements Serializable { + /** + * Written form, serves as ID + */ + @Id + private String form; + + @ManyToOne + @JoinColumn(name = "catalog_item_id") + @Id + private CatalogItem catalogItem; +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormRepository.java b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..6089d08029bf3f4a3ce0083faa004a58ba77aaae --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormRepository.java @@ -0,0 +1,11 @@ +package cz.zcu.kiv.backendapi.writtenform; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * Written form repository + */ +@Repository +public interface WrittenFormRepository extends JpaRepository<WrittenForm, WrittenForm> { +} diff --git a/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormServiceImpl.java b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..e885c74b93f8019ce22a36ea89990707ba1653e7 --- /dev/null +++ b/backend/src/main/java/cz/zcu/kiv/backendapi/writtenform/WrittenFormServiceImpl.java @@ -0,0 +1,19 @@ +package cz.zcu.kiv.backendapi.writtenform; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Written form service implementation + */ +@Service +@Transactional +@RequiredArgsConstructor +public class WrittenFormServiceImpl implements IWrittenFormService { + + /** + * Written form repository + */ + private final WrittenFormRepository writtenFormRepository; +} diff --git a/backend/src/main/resources/AssyrianProject-AllNoDupl-22-03-28.csv b/backend/src/main/resources/AssyrianProject-AllNoDupl-22-03-28.csv new file mode 100644 index 0000000000000000000000000000000000000000..b073b72be49e447deaf6359f006c62ad32b96147 --- /dev/null +++ b/backend/src/main/resources/AssyrianProject-AllNoDupl-22-03-28.csv @@ -0,0 +1,1086 @@ +"order","name","alt","cer","lat","lon","writ","type","countr","bibl" +1074,"Abaindi","Abaindi","–","–","–","URU.a-ba-in-di, đ’Ś·đ’€€đ’€đ’…”đ’˛","fortified city","Aiadi, Iran","Bagg RGTC 7 3/1: 1–2" +2,"Abani","Abani","–","–","–","ĂŤD.a-ba-ni","river","Elam","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +3,"Abarnani","Abarnani, AbarnÄnu","–","–","–","URU.a-bar-na-ni","fortified city","Turkey, QuwĂŞ","Bagg RGTC 7 1: 1" +6,"AbattĂŞ","AbattĂŞ","–","–","–","URU.a-bat-te-e","town","Central Assyria (?)","Bagg RGTC 7 2/1: 2–3" +7,"Abbissa","Abbissa, Abbissâ, ApheisĂ´n, PheisĂ´n, Pheison, Fis",3,"38.36933","40.5615","URU.ab-bi-is-sa, URU.ab-bi-s-aa","town","province of the land NaĘľiri","Helsinki Atlas: 5 (map 3 D2), Bagg RGTC 7 2/1: 3 (not Fis), <a href=https://pleiades.stoa.org/places/874646>Pleiades: Pheison</a>" +1075,"Abdana","Abdana","–","–","–","URU.ab-da-na-a-a, 𒌷𒀊đ’•đ’ľđ’€€đ’€€","country","NaĘľiri, Iran","Bagg RGTC 7 3/1: 2 (*Abdana)" +8,"Abdudu","Abdudu","–","–","–","URU.ab-du-di, URU.ab-du-da-a-a","city","Assyria, Laḫīru","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 3" +1076,"AbdÄ«nu","AbdÄ«nu, Abdinu, ApdÄ«nu, Apdinu","–","–","–","URU.ap-di-nu, 𒌷𒀊đ’˛đ’‰ˇ","fortress","RÄši, Iran","Bagg RGTC 7 3/1: 2" +9,"Abil-šiáąáąi","Abil-šiáąáąi, Abilakka, Abil..., Abel ha-Ĺ iáąáąim, Tell al-Kafrain (?), Tall al-Kafrain (?), Al Kafrayn (?), الŮŮرين (?), Tall al-ḤammÄm (?), Tell el-Hammam (?)",2,"31.83955"," 35.67318","URU.a-bi-il-x-x, URU.a-bi-il-šiáą-áąi","city","BÄ«t-ḪazaĘľil, Damascus, BÄ«t-ḪumrĂ®, Israel, Jordan","Helsinki Atlas: 5 (map 7 D5), Bagg RGTC 7 1: 1 (Abil...), <a href=https://www.geonames.org/250627/al-kafrayn.html>Geonames: Al Kafrayn</a>, <a href=https://www.geonames.org/248731/tall-al-kafrayn.html>Geonames: Tall al Kafrayn</a>, <a href=https://www.geonames.org/249273/tall-al-hammam.html>Geonames: Tall al ḨammÄm</a>" +10,"AbilÄte","Adab, AbilÄte","–","–","–","URU.a-bi-la-te","town","Izalla","Bagg RGTC 7 2/1: 4" +1077,"Abirus","Abirus","–","–","–","KUR.a-bi-ru-us, 𒆳𒀀đ’‰đ’Š’đ’Š» ","mountains","BÄ«t-Kapsi, Iran","Bagg RGTC 7 3/1: 2–3" +1078,"Abitikna","Abitikna","–","–","–","URU.a-bi-ti-ik-na, đ’Ś·đ’€€đ’‰đ’‹ľđ’……đ’ľ, LĂš.URU.a-bi-ti-ik-na-a-a, 𒇽𒌷𒀀đ’‰đ’‹ľđ’……đ’ľđ’€€đ’€€ ","city","MannÄja, Iran","Bagg RGTC 7 3/1: 3" +1079,"Abnana","Abnana","–","–","–","URU.ab-na-na, 𒌷𒀊đ’ľđ’ľ","city","(?)","Bagg RGTC 7 3/1: 3" +1080,"Abrau","Abrau","–","–","–","KUR.ab-ra-Ăş(-x), 𒆳𒀊𒊏𒌑(-x)","land (?), mountain (?)","MÄdÄia, ḪarḫÄr (?), Iran","Bagg RGTC 7 3/2: 3–4 " +1081,"Absaḫutti","Absaḫutti","–","–","–","KUR.ab-sa-ḫu-at-ti, 𒆳𒀊𒊓𒄷𒀜𒋾","land (?), mountain (?)","MÄdÄja, Iran","Bagg RGTC 7 3/1: 4" +1082,"Abuqu","Abuqu","–","–","–","URU.a-bu-qu, đ’Ś·đ’€€đ’Ťđ’„Ł","town","Tumme, NaĘľiri (?)","Bagg RGTC 7 3/1: 4" +1,"AbÄ","Abâ, Aba","–","–","–","URU.a-ba-a, URU.a-ba-a.a","town","Tušḫan province","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +4,"AbÄt-Aššur-lÄ-tÄ“ni","Abat-Aššur-lÄ-tenni, AbÄt-Aššur-lÄ-tÄ“ni","–","–","–","URU.a-bat-aš-šur-la-te-ni","city","Ĺ ubria","Bagg RGTC 7 2/1: 2" +5,"AbÄt-šarri-lÄ-tÄ“ni","AbÄt-šarri-lÄ-tÄ“ni, Abat-šarri-lÄ-tenni","–","–","–","URU.a-bar-MAN-la-te-ni","city","Ĺ ubria","Bagg RGTC 7 2/1: 2" +1083,"AbĹ«rĂŞ","AbĹ«rĂŞ, AburĂŞ","–","–","–","URU.a-bu-re-e, đ’Ś·đ’€€đ’Ťđ’Š‘đ’‚Š","city","PuqĹ«du, GambĹ«lu, Babylonia, Iraq","Bagg RGTC 7 3/1: 4–5" +12,"Adab","Bismaya",1,"31.95047","45.62345","–","city","Babylonia","–" +1057,"Adamdun","Adamdun, Teppe Surkhehgan (?)",4,"32.02136","48.79869","–","city","Elam","–" +13,"Addauš","Addauš, Adauš, Ḥabb as-SuláąÄn DÄġ, Jabal Haybat SulĹŁÄn, Hab-es-SultÄn DÄgh, جبل هيبت سلطان","–","36.09709","44.67702","URU.ad-da-uš, KUR.a-da-uš","territory","ḪabrĹ«ri (?), Iraq","Bagg RGTC 7 3/1: 5" +1084,"Adduri","Adduri, Adduru","–","–","–","KUR.ad-du-ri, 𒆳𒀜đ’şđ’Š‘","mountains","Uraráąu, Turkey","Bagg RGTC 7 3/1: 5" +15,"Adia","Adia, Adiu, Adum, Mosul, Ḫirbat Qara Qounly (?), Khirbet Qara Quwiynili (?), Šēḫ ʿĀdÄ« (?), Shaykh AdÄ« (?)",4,"36.34233","43.11833","URU.a-di-a","town","Assyria","Helsinki Atlas: 5 (map 4 C5), ABL, 683, ONC G4, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 6–7, <a href=https://books.openedition.org/cdf/4715#tocfrom2n18>MTT I/1</a> (Adum)" +16,"Adian","Adian, Adin, Eski Kalak, AskÄ« Kalak, DahĹ«k (?)",4,"36.27267","43.63917","URU.EN-an, URU.a-di-an, URU.a-di-in","town","Assyria","Helsinki Atlas: 5 (map 4 C5), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>, Bagg RGTC 7 2/1: 7–8" +1085,"AdilĂŞ","AdilĂŞ","–","–","–","LĂš.a-di-le-e, 𒇽𒀀đ’˛đ’‡·đ’‚Š","tribe","Babylonia, Iraq","Bagg RGTC 7 3/1: 6" +17,"Adinni","Adinni","–","–","–","URU.a-di-ni, đ’Ś·đ’€€đ’˛đ’‰Ś, URU.a-di-in-ni, đ’Ś·đ’€€đ’˛đ’…”𒉌","city","Babylonia, Iraq","Bagg RGTC 7 3/1: 6, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +18,"Admannu","Natmane, Admannu, Atmannu, Tell 'Ali, Tell ĘľAli","–","35.38189","43.68247","–","–","–","–" +1086,"Aduma","Aduma","–","–","–","URU.a-du-ma, đ’Ś·đ’€€đ’şđ’ ","town","–","Bagg RGTC 7 3/1: 6" +20,"Adummatu","Adummatu, Adumatu, Adumutu, Dumetu, Dumeti, Duma, Dumatha, Doumiatha, DĹ«mat al-Äžandal, Dumat el-Jandal, al-Ǧauf, al-Jawf, الجŮŮ, ŘŻŮŮ…Ř© الجندل, דוּמָ֖ה",1,"29.81144","39.86716","URU.a-du-ma-tu, URU.a-du-mu-tu, URU.a-du-um-ma-te, URU.a-du-um-ma-tu, URU.du-ma, URU.du-me-ti","town, city, fortress","Arabs","Helsinki Atlas: 5 (map 15 D4), Bagg RGTC 7 2/1: 8–9, 'Eph'lal 1982, 119, TPC H5B, <a href=https://pleiades.stoa.org/places/29548>Pleiades: Dumatha</a>" +19,"AdumÄnu","AdumÄnu","–","–","–","URU.a-du-ma-nu","town","East Babylonia","Bagg RGTC 7 2/1: 8" +11,"Adâ (city)","Adâ, Tall ĘżAdÄ (?), Theleda (?), ĘżAin at-Tall (?), Tall Hatab (?)","–","35.81818","36.33017","URU.a-da-a","city","ḪamÄt","Bagg RGTC 7 1: 2" +14,"AdĂ®","AdĂ®","–","–","–","URU.a-di-i","town","Central Assyria (?)","Bagg RGTC 7 2/1: 6" +1087,"Agazi","Agazi","–","–","–","KUR.a-ga-zi, 𒆳𒀀𒂵𒍣","territory","MÄdÄja, Iran","Bagg RGTC 7 3/1: 7" +1090,"Aiadi","Aiadi, Ajadi, AyÄdi, AiÄdi, Ayaid, Aiaid, OrĹ«mÄ«ye Plain","–","–","–","KUR.a-ia-di, 𒆳𒀀𒅀đ’˛, KUR.a-ia-id, 𒆳𒀀𒅀𒀉","territory","Uraráąu, Iran","Bagg RGTC 7 3/1: 10, <a href=https://www.geonames.org/121801/orumiyeh.html>Geonames: OrĹ«mÄ«yeh</a>" +1091,"Aiaṣun","Aiaṣun, Ajaṣun","–","–","–","URU.a-ia-ṣu-un, 𒌷𒀀𒅀𒍮𒌦","fortified city","Uraráąu, Aiadi, Iran","Bagg RGTC 7 3/1: 10–11, <a href=https://www.geonames.org/121801/orumiyeh.html>Geonames: OrĹ«mÄ«yeh</a>" +23,"Aila","'Aqaba","–","29.53067789514675","34.99994197134541","–","town","–","–" +24,"Aira","Aira","–","–","–","URU.a-i-ra","town","–","Bagg RGTC 7 2/1: 12" +1092,"Aja-Sammu","Aja-Sammu, Aia-Sammu, Aya-Sammu, Aiasamu, Ajasamu","–","–","–","URU.a-a-sa-mu, 𒌷𒀀𒀀𒊓đ’¬","fortified city","GambĹ«lu, Babylonia, Iraq","Bagg RGTC 7 3/1: 11–12" +25,"Ajaidi","Plain of UrmÄ«ya",3,"–","–","–","district","Uraráąu (?), NaĘľiri (?), Urmia","Helsinki Atlas: 5 (map 4 D4)" +1093,"Ajalaja","Ajalaja, Ayyalaya, Ayalaya","–","–","–","KUR.a-a-la-a-a, 𒆳𒀀𒀀𒆷𒀀𒀀, KUR.a-a-la-ia, 𒆳𒀀𒀀𒆷𒅀","country","Ṣibar (?), Iran","Bagg RGTC 7 3/1: 11" +1094,"AjalĂŞ","AjalĂŞ, AialĂŞ, AyalĂŞ","–","–","–","KUR.a-a-le-e, 𒆳𒀀𒀀𒇷𒂊","fortified city","Iran","Bagg RGTC 7 3/1: 11" +1095,"Ajubak","Ajubak, Ayubak","–","–","–","URU.a-a-Ăş-ba-ak, 𒌷𒀀𒀀𒌑đ’€đ’€ť","city","Namri (?), Iran","Bagg RGTC 7 3/1: 12" +27,"Akkad","Akkad, Agade, Tell Muhammad (?), Tell Muhammed (?), Tall Muḥammad (?), ŘŞŮ„ Ů…ŘŮ…ŘŻ, al-QÄdisÄ«ya (?), IšÄn Mizyad (??)",4,"33.3009","44.4682","URI.KI, URI.KI-i, ak-ka-de-e, ak-ka-di-i, A.GA.DĂ.KI, a-ka-di, a-kad.KI, URU.URI, URU.ak-ka-di, URU.ak-kad, KUR.ak-ka-di-i, URU.ak-kad-u-a","city","Babylonia, Akkad, Iraq","Helsinki Atlas: 5 (map 10 D3), Bagg RGTC 7 3/1: 13–14, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +29,"Akkuddu","Akkuddu, ÄŞlÄm (?), اŮلام, ایلام, Surkh Dum LurÄ« (?), سرخ ŘŻŮ… لـري, Surḫ Dum (?), Surḫ Dom (?), Dom Sorkh LakÄ« (?), ŘŻŮŹŮ… سُرخ Ů„ŮŽŮŰŚ, Sorkh Dom LakÄ« (?), سرخ ŘŻŮ… Ů„Ú©ŮŠ",4,"33.5065","47.7079","URU.ak-ku-du, URU.ak-ku-ud-du, URU.ak-ku-du-ma","capital, city","Ellipi, Iran","Helsinki Atlas: 5 (map 11 C3), Bagg RGTC 7 3/1: 14–15, CT 53 892" +28,"AkkĂ»","AkkĂ», 'AkkĂ´, ĘżAkko, Acco, Accon, Accra, Ptolemais, Antiocheia Ptolemais, ΠτολεμαÎĎ‚, Tall al-FuḫḫÄr, Tell el-Fukhkhar, עַכּוֹ‎, ĘżAkkÄ, ŘąŮّا‎",1,"32.92139","35.08776","URU.ak-ku-u, URU.ak-ku-Ăş, URU.a-ku-u","city, fortresses, seaport","Ḫatti, ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A4), Bagg RGTC 7 1: 3–4, <a href=https://pleiades.stoa.org/places/678010>Pleiades: Ake/Ptolemais</a>" +30,"AkuÄnu","AkuÄnu, ĘľAkuÄnu, AkuĘľanu",4,"36.83333","39.08333","–","village, city","ḪarrÄnu","Helsinki Atlas: 5 (map 3 C4)" +31,"AkzÄ«bi","AkzÄ«bi, Akzibu, Akzib, AkzĂ®b, Akziba, Tell Achzib, Achziv, ×כזיב, AkzĂ®b, az-ZÄ«b, ez-Zib, الزيب‎",1,"33.04858","35.10194","URU.ak-zi-ba, URU.ak-zi-bi, ×כזיב","town","Ḫatti, ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A3), Bagg RGTC 7 1: 4" +26,"AkÄ«tu Temple of Aššur","BÄ«t-akÄ«ti ša Aššur, BÄ«t-akÄ«ti ša ṣēri, AkÄ«tu Temple of Aššur, AkÄ«tu Temple of the steppe","–","35.46286","43.25423","É-á-ki-it šá EDIN","temple","Aššur","–" +42,"Alalaḫ","Alalaḫ, Alalakh, Tell Açana","–","36.2376050898224","36.38418400802268","–","–","–","–" +43,"Aliṣir","Aliṣir, Alimuš, Antiokia, Antiocheia, Antakya, Anáąakya","–","36.20582","36.16682","URU.a-li-MUĹ ","city, fortress","Pattinu, KullanÄ«a","Helsinki Atlas: 5 (map 2 C4), Bagg RGTC 7 1: 6 (Alimuš)" +44,"Allabria","Allabria, SanandaÄź, سنندج",3,"35.31495","46.99883","KUR.al-la-ab-ra-a-a, KUR.al-la-lab-ri-a, KUR.al-lab-ra-a-a, KUR.al-lab-ri-a, KUR.al-lab-ri-a-a, (KUR.)al-lab-rĂ-a-a, URU.al-la-ab-ra-a, URU.al-la-ab-ri-a, URU.al-lab-ri-a","territory, country, city","Zagros mountain range, Iran","Helsinki Atlas: 5 (map 11 B1, 11 C1), Bagg RGTC 7 3/1: 18–19, Parpola Toponyms: 12" +45,"Alligu","Alligu, Ialligu, Iallgu, Jalligu, Aṣbat-lakĹ«nu, Aṣbat-lÄ-kunu, Aṣbat-lakĹ«n, Aligör, Ali Gör, IlÄ«Äźak, IllÄ«jÄk, Degirman, الليجاŮ, Tall QĹ«mluq, Ů‚ŮŮ…Ů„ŮŮ","–","37.04393","38.4504","URU.a-li-gu, URU.al-li-gi, URU.ia-li-gu","city","BÄ«t-Adini","Bagg RGTC 7 1: 6–7, Bagg RGTC 7 3/2: 914" +46,"Alluria","Alluria, Nazlu çay","–","–","–","–","river","–","Helsinki Atlas: 5 (map 4 E4)" +47,"Alluriu","Alluriu, Alluria, Baradost, جبل برادŮست","–","36.73601","44.39033","KUR.a-lu-ri-a, KUR.al-lu-ri-Ăş","mountain","Iraq","Bagg RGTC 7 3/1: 20" +48,"AltaqĂ»","AltaqĂ», Altaqu, Tall aš-Ĺ allÄf, Tel Shalaf, Tel Ĺ allÄf, תל שלף, ElteqÄ“h, Eltekeh, Eltheke, ×לתקה, ×לתק×",1,"31.89238","34.76765","URU.al-ta-qu-u, URU.al-ta-qu-Ăş, ×לתקה, ×לתק×","city","AsdĹ«du (province) (?), Pilistu","Helsinki Atlas: 5 (map 7 C5), Bagg RGTC 7 1: 7, <a href=https://pleiades.stoa.org/places/498102722>Pleiades: AltaqĂ»</a>" +53,"AmadÄni","AmadÄni, Amadanu, AmadÄnu, Amadana, Amadani, Maden DaÄźlari, Maden DaÄźları",2,"38.27444","39.3835","KUR.a-ma-da-ni, KUR.a-ma-da-na","mountain, mount","Ḫabḫu","Helsinki Atlas: 5 (map 3 C2), Bagg RGTC 7 2/1: 41–42, <a href=https://books.openedition.org/cdf/4564#tocfrom2n39>MTT I/2</a> (AmadÄnu (1))" +54,"Amantu","Amantu, Amante, Amatti, Amanta, SultÄn ĘżAbdallÄh, Sultan ĘżAbdallah",4,"35.89601","43.39074","URU.a-mat-ti, URU.am-an-te, URU.a-ma-an-ta-a-u","town, village","Central Assyria, KilÄ«zi (province) (?)","Helsinki Atlas: 5 (map 4 C6), Bagg RGTC 7 2/1: 42" +57,"Ammali","Ammali, Mamli, Nammal, Namal, نمل","–","35.32081","45.60446","KUR.URU.am-ma-li, URU.am-ma-li, URU.ma-am-li","city","Zamua, Iraq","Bagg RGTC 7 3/1: 37–38" +59,"AmmanÄna","AmmanÄna, AmmanÄnu, Ammanana, Antilibanos, Antilibanus, Anti-Lebanon, Äžabal an-NuṣairÄ«ya, Quṣeir, JibÄl an NuṣayrÄ«yah, Ǧabal Anṣariya, ǦibÄl LubnÄn aš-Ĺ arqÄ«ya",2,"35.24408","36.28354","KUR.am-ma-na-na","mountain","–","Helsinki Atlas: 5 (map 8 B1), Bagg RGTC 7 1: 8–9" +58,"AmmÄna","AmmÄna, ĘżAmmÄn, Rabbat Ammon, Ammon, Rabatha, Äžabal al-Qal'a, Philadelphia",1,"31.95431","35.93515","URU.am-ma-a-na","capital, city","BÄ«t-AmmÄn","Helsinki Atlas: 5 (map 7 D5), Bagg RGTC 7 1: 7–8" +60,"Ampa","Ampa, Ambi, Anfa, Anfeh, انŮه",3,"34.35515","35.73206","URU.am-pa","town","ṢīdĹ«nu, Mediterranean coast, Phoenicia","Helsinki Atlas: 5 (map 8 A2), Bagg RGTC 7 1: 9" +61,"Ampiḫabi","Ampiḫabi, Ampihabi, Ampiḫapi, Ampihapi",3,"33.96633","44.2265","KUR.am-pi-ḫa-a-bi, URU.am-pi-ḫa-bi","town","Assyria, Arzūḫina (province)","Helsinki Atlas: 5 (map 10 D3), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +62,"Amrit","Amrit","–","34.83512","35.91208","–","–","–","–" +64,"AmurrĂ»","AmurrĂ», Amurru, MÄt-AmurrĂ®, ×מורי‎, áĽÎĽÎżĎĎαῖοι, Ęľmr, đ¤€đ¤Śđ¤“‎, ĘżAkkÄr Plain (?)","–","–","–","MAR, MAR.KI, MAR.TU, MAR.TU.KI, KUR.a-mur-ri, KUR.MAR, KUR.MAR.KI, KUR.MAR.TU, KUR.MAR.TU.KI, a-mur-re-e, a-mur-ri-i, a-mur-ru-Ăş, KUR.a-mur-ra-a-a, KUR.a-mur-re-e, KUR.a-mur-ri-i, KUR.a-mur-ru-u, KUR.MAR.TU-e.KI, LĂš.MAR.TU.KI, MAR.TU-i, MAR.TU.KI-Ăş, ×מורי‎, đ¤€đ¤Śđ¤“‎","territory","Syro-Palestine, Levant","Bagg RGTC 7 1: 11–15" +65,"Ana-Aššur-utÄ“r-aṣbat","Ana-Aššur-utÄ“r-aṣbat, Aššur-utÄ“r-aṣbat, Aššur-aṣbat, PitĹ«ru, Pitru, Pitiru, Pethor, פְּתוֹר, Tell Aushariye, Ausheriya, Aušar ar-RafÄ«Ęża, ḤammÄm aṣ-Ṣaġīr",2,"36.66007","38.07583","URU.a-na-aš-šur-Ăş-ter-aṣ-bat, URU.AN.Ĺ ĂR-DAB-bat, URU.ana-aš-šur-Ăş-ter-aṣ-bat, URU.aš-šur-DIB-bat, URU.aš-šur-Ăş-ter-aṣ-bat, URU.ina-aš-šur-ut-ter-aṣ-bat, URU.pi-it-ru, URU.pi-ti-ru","city","Ḫatti, BÄ«t-Adini, Til-Barsib (?)","Helsinki Atlas: 5, Bagg RGTC 7 1: 16 (Ana-Aššur-utÄ“r-aṣbat), 191 (Pitru), <a href=https://pleiades.stoa.org/places/771224407>Pleiades: Pitru</a>" +66,"Anasarta","Anasarta, Khanasir","–","35.77596486304121","37.49764864063391","–","–","–","–" +68,"Andarutta","Andarutta, Andarutu, Berat DaÄź (?), جبل بيرت, Baradost (?), جبل برادŮست","–","36.74111","44.14666","KUR.an-da-ru-ut-ta, KUR.an-da-ru-tĂş","mountain","Ḫabḫu (?), Province of ''nÄgir ekalli'' (?), Iraq","Helsinki Atlas: 5 (Berat DaÄź, map 4 D5), Bagg RGTC 7 3/1: 39–40 (Baradost), Dlshad A. Marf: ''Re-Identifying the ‫Ḫ‬iptunu Town and Andaruttu Mountain''. Akkadica 136 (2015), pp. 127- 140." +69,"Andia","Andia",2,"–","–","–","country, state","Zagros mountains","Helsinki Atlas: 5 (map 5 C4)" +70,"Androna","Androna, El-Andarin","–","35.53433495330736","37.36206520477305","–","–","–","–" +71,"Anduli","Anduli, Andulu, Hedil, HĂŞdil, Kayı","–","37.37316","41.7836","URU.an-du-li","town","Izalla","Bagg RGTC 7 2/1: 48" +73,"Ankuwa","Ankuwa, AliĹźar HĂĽyĂĽk","–","39.60636312468131","35.26129955642234","–","–","–","–" +74,"Anmurru","Anmurru, Keban, Nemerli","–","38.70377","37.822263","URU.an-mu-ur-ru","fortress, city","MelÄ«di, Turkey","Bagg RGTC 7 1: 17, <a href=https://pleiades.stoa.org/places/762647722>Pleiades: Anmurru</a>" +75,"AnqarrĹ«na","AnqarrĹ«na, AmqarrĹ«na, Amqaruna, Aqqarruna, ĘľAmkaruna, Tel Miqne, Khirbat el-Muqanna', Eqron, Ekron, Akkaron, עֶקְרוֹן‎, عقرŮن‎",1,"31.77746","34.85097","KUR.am-qar-u-na, KUR.am-qar-ru-na, URU.Ęľa-am-qa-ar-ru-na, URU.Ęľa-am-qa-ru-na, URU.am-qar-ru-na, URU.am-qar-u-na, URU.an-qar-u-na, KUR.an-qar-ru-na-a-a, URU.a-qa-ru-na-a-a","capital, city","Pilistu, Levant, Israel","Helsinki Atlas: 5 (map 7 C5), Bagg RGTC 7 1: 10–11 (AmqarrĹ«na), <a href=https://pleiades.stoa.org/places/687888>Pleiades: Ekron/Akkaron</a>" +77,"Antakya","Antakya, Antiokia, Antiochia","–","36.22255","36.18321","–","monument","Turkey","Helsinki Atlas: 20 (map 2 C4), <a href=https://pleiades.stoa.org/places/658381>Pleiades: Antiochia/Theoupolis</a>" +78,"AnzaknĂŞ","AnzaknĂŞ, Ṣaḥne, صŘنه, BahÄr, بهار","–","34.4813","47.6908","KUR.an-za-ak-nĂ©-e","territory, country (?)","MÄdÄja, Iraq","Bagg RGTC 7 3/1: 43" +79,"Anzaria","Anzaria, KÄr-Adad","–","–","–","–","fortress","Iran","Parpola Toponyms: 20, Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +72,"AnÄ«su","AnÄ«su, Anisu, AnÄ«sus, Anisus, QalĘżat DÄ«za, Qalaat Diza, QalĘże DÄ«ze, Qalat Dizah, QeĹ‚adizĂŞ, قلعة دزة",4,"36.18254","45.13017","URU.a-ni-su, URU.a-ni-i-su-us","town","Zagros mountain range, Iraq","Helsinki Atlas: 5 (map 4 E5), Bagg RGTC 7 3/1: 42–43" +76,"Anšan","Anzan, Anšan, Aššan, Tall-i MalyÄn, Tall-e MalyÄn, Tell Malyan, ŘŞŮ„ ملیان, Tepe Malyan",1,"30.01238","52.41011","KUR.an-za-an, KUR.áš-ša-an, KUR.an-za-nu-Ăş-a, URU.áš-šá-an","capital, city","Elam, Iran","Helsinki Atlas: 5 (map 17 D4), Bagg RGTC 7 3/1: 44" +81,"AparÄzu","AparÄzu, ApparÄzu, Apparazu, Parraza, Abarara, Abarraza, BrÄ“Äź, البريج, Ṭaáąmaraš, ṬÄáąumarÄš, طاطمراش","–","36.25225","36.85209","URU.a-pa-ra-a-zu, URU.ap-pa-ra-zu","fortress, fortified city","BÄ«t-AgĹ«si","Bagg RGTC 7 1: 17–18 (ApparÄzu), <a href=https://pleiades.stoa.org/places/658362>Pleiades: Abarara</a>" +82,"Apaša","Apaša, Ephesus (?)",4,"37.94113","27.346","–","–","–","–" +83,"Apku","Apku, Apqu, Apka, Apqum, Tall AbĹ« MÄrÄ«yÄ, Tell Abu Marya, AbĹ« MÄrÄ«yah, AbĹ« Maria, اب٠مارية",2,"36.42959","42.5976","URU.ap-ku, URU.ap-ka, URU.ap-ki, URU.ap-qĂ","town","Central Assyria, Iraq","Helsinki Atlas: 6 (map 4 B5), Bagg RGTC 7 2/1: 49, <a href=https://pleiades.stoa.org/places/874723>Pleiades: Tell Abu Marya/[Apqu]</a>, <a href=https://books.openedition.org/cdf/4564#tocfrom2n50>MTT I/2 ( HIGEOMES Nr. 3)</a>" +84,"Appari","Appari","–","–","–","URU.ap-pa-ri","town","–","Bagg RGTC 7 1: 18, Parpola Toponyms: 21" +85,"Apparu","Apparu, Apparum, Afaris, ḤafÄ«ra, Ůادي الŘŮيرة, al-LajÄh, al-LaÄźÄ, اللجاه","–","32.93481","36.385","URU.ap-pa-ru","oasis, water resource","MÄĘľab (?), Jordan, Syria","Bagg RGTC 7 1: 18, <a href=https://books.openedition.org/cdf/4715>MTT I/1</a>, Parpola Toponyms: 21" +86,"Apqu","Apqu, Ęľpq, đ¤€đ¤đ¤’, Aphek, Aphik, ×ֲפֵק, AfqÄ, ŘŁŮقا, Pegae, Antipatris, Aphaka, Tel Ras el-'Ain, Tel AfÄ“q, תל ×פק, TÄ“l Kabri, FÄ«q, TÄ“l Soreq, Ḫirbat al-Hadab",1,"34.06616","35.88854","URU.ap-qu, ×ֲפֵק, đ¤€đ¤đ¤’","town","BÄ«t-ḪumrĂ® (?), Israel (?), Phoenicia (?), Lebanon (?), Dimašqa (?), Syria (?), Palestine (?), Iaʾūdu (?)","Helsinki Atlas: 6 (map 7 C4), Bagg RGTC 7 1: 18–19, <a href=https://pleiades.stoa.org/places/668195>Pleiades: Aphaka (Temple of Aphrodite Aphakitis)</a>" +87,"AprĂŞ","AprĂŞ, Apre, ĘżAfrÄ«n, ĘżIfrÄ«n",2,"–","–","–","river","Ḫatti, Pattinu, KullanÄ«a (province), SamĘľalla","Helsinki Atlas: 6 (map 2 C4)" +88,"Apsia","Apsia, Absia, Apsija, Ebsi (?), Apši, Apše",3,"37.364166666667","41.166833333333","–","village","Izalla, Syria (?), Turkey (?)","Helsinki Atlas: 6 (map 3 E3)" +89,"Apsu","Apsu, Apsuna, Ęľpš, Tell Afis, T. Afis",3,"35.905","36.79875","–","city","Ḫatti, Syria","Helsinki Atlas: 6 (map 2 C5)" +80,"ApÄk","ApÄk, Apak, Apiak, Abiak",3,"32.416666666667","44.666666666667","–","town","BÄ«t-DakkĹ«ri, Babylonia, Iraq","Helsinki Atlas: 6 (map 10 D4)" +90,"Apšu","Apšu",4,"33.321166666667","44.385666666667","–","town","Babylonia, Iraq","Helsinki Atlas: 6 (map 10 D3)" +91,"AqarbÄnu","AqarbÄnu, AqarbÄni, Aqarbani, NaqarabÄni, NaqarbÄni, Merrhan, Kherban",3,"34.65","40.83333","URU.a-qa-ar-ba-ni, URU.na-qa-ra-ba-ni, URU.na-qa-ra-ba-a-ni","town","LÄqĂŞ, Syria","Helsinki Atlas: 6 (map 9 C2), Bagg RGTC 7 2/1: 50–51" +93,"Arad","Arad","–","31.28089","35.12658","–","–","–","–" +94,"Arameans","Aram, Arameans, Aramaeans","–","–","–","–","ethnic","–","–" +95,"Arantu","Arantu, Orontes",1,"–","–","–","river","Mediterranean coast, Syria","Helsinki Atlas: 6 (map 8 B1)" +96,"Aranziaš","Aranziaš, Araziaš, Aranzēšu, Arazišu, Godin Tepe (?), Godin Teppe (?), GĹ«dÄ«n Tapeh, ÚŻŮدین‌تپه","–","34.51841","48.06839","KUR.a-ra-an-ze-e-šú, KUR.a-ra-an-ze-šú, KUR.a-ra-zi-aš, KUR.a-ra-zi-áš, KUR.a-ra-zi-šú, KUR.a-ra-zi-áš-a-a","territory, city, state","MÄdÄia, Iran","Bagg RGTC 7 3/1: 56–57 (Araziaš), Helsinki Atlas: 6 (map 11 C2)" +97,"Aranziaše","Aranziaš, Aranziaše, Aranziašu, Aranzēše","–","–","–","URU.ar-an-ze-e-še, URU.ar-an-zi-a-še, URU.ar-an-zi-a-šu","city","RÄši, Iran","Bagg RGTC 7 3/1: 53–54 (Araziaše), Helsinki Atlas: 6 (map 11 C2)" +99,"Arattâ","Arattâ","–","–","–","ĂŤD.a-rat-ta-a","river","MÄzamua (?)","Parpola Toponyms: 24" +100,"Araziqa","Araziqa, Tell el-Hajj (?)",4,"36.19682","38.07494","–","–","–","–" +101,"Arbail","Arbail, Arbela, ArbÄ“la, ArbÄ«l, IrbÄ«l, Irbil, Erbil, أربيل‎",1,"36.19143","44.00901","arba-ìl, arba-ìl.KI, DUMU.arba-ìl, DUMU-URU.arba-ìl, DUMU.MEĹ -URU.arba-ìl, URU.ar-ba-ìl, URU.ár-ba-ìl, URU.arba, URU.arba-ìl, URU.arba-ìl.KI, URU.er-ba-ìl, URU.arba-ìl-a-a","city","Assyria","Helsinki Atlas: 6 (map 4 C5), Bagg RGTC 7 2/1: 53–57" +102,"Arbakki","Arbakki, Arbakku, Gre Dimse, Arwah (?)","–","37.82752","40.96629","KUR.ar-ba-ki, KUR.ar-ba-ak-ki, URU.ar-ba-ki, URU.ar-ba-ak-ki, URU.ár-ba-ak-ki","city, territory","Ḫabḫu, Turkey","Bagg RGTC 7 2/1: 58" +104,"Arbela (Irbid)","Arbela, Irbid","–","32.55925461562157","35.84754833501287","–","–","–","–" +105,"Arbunâ","Arbunâ","–","–","–","URU.ar-bu-na-a","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 59" +103,"ArbÄtu","ArbÄtu, Arbate, Arbatu, Tell Khaumat Hajin (?), Tall Ḥawmat Hayin, aṣ-ṢÄliḥīyah (?), Dura-Europos (?), Doura'Europus (?), ΔοῦĎα Εá˝Ďωπός, aç-ÇaĘľÄbi (?), Tall ĘżAfrÄ«ya (?)",4,"34.71257","40.82676","URU.ar-ba-te","town","LÄqĂŞ, Syria","Bagg RGTC 7 2/1: 58–59 (Arbate)" +106,"Ardata","Ardata, Tell ArdĂ©","–","34.408691834184","35.9148561159837","–","–","–","–" +107,"Arganâ","Arganâ, Arzigana, ḪarganÄ, ArziġÄn at-TaḥtÄni, RīḥÄ, ar-Rūǧ territory, Ǧabal az-ZÄwiya territory, QalĘżat al-Muḍīq territory, Tall Arguni, Tall QasáąĹ«n",3,"35.81374","36.60964","URU.ar-ga-na-a","city","ḪamÄt, Syria","Helsinki Atlas: 6 (map 2 D5), Bagg RGTC 7 1: 20–21" +110,"Argite","Argite, Tall ĘżArquni, ŘŞŮ„ عرقŮني","–","34.58147","36.65652","URU.ar-gi-te","station","Syria","Bagg RGTC 7 1: 21" +109,"Argištiuna","Argištiuna, Argistiani, Irgistiani, QalĘże Esmaʾīl Ä€ÄˇÄ (?), قلعه اسماعیل آقا","–","37.6651","44.9296","URU.ar-giš-ti-Ăş-na, URU.ir-gi-is-ti-a-ni","fortified city","Aiadi, Iran","Bagg RGTC 7 3/1: 59" +108,"Argištiḫinili","Argištihinili, Armavir, Davti-blur",1,"40.08092","44.03321","–","city","–","Helsinki Atlas: 6 (map 4 D1)" +112,"AriawÄte","AriawÄte",3,"36.8","40.283333333333","–","town","–","Helsinki Atlas: 6 (map 3 D4)" +113,"Aribi","Aribi, Arabs",2,"–","–","–","tribe","–","Helsinki Atlas: 6 (map 10 A1)" +114,"Aribua","Aribua, Ǧisr aš-Ĺ uġūr, جسر الشغŮر, as-SafÄ«ra, السŮيرة","–","35.81418","36.31983","URU.a-ri-bu-a","fortified city","Pattinu, Syria","Bagg RGTC 7 1: 22" +117,"Ariru","Ariru","–","–","–","URU.a-ri-ra-a-a","town","Central Assyria (?), Kalḫu province (?)","Bagg RGTC 7 2/1: 62–63" +118,"ArmarialĂ®","ArmarialĂ®, Plain of SalmÄs/Ĺ ahpĹ«r",2,"–","–","–","district","–","Helsinki Atlas: 6 (map 4 D3)" +119,"ArnabÄni","ArnabÄni",3,"36.583333333333","40.416666666667","–","town","–","Helsinki Atlas: 6 (map 3 D4)" +120,"ArnĂŞ","ArnĂŞ, Arne, Arna (?), ĘľArnaya (?), Tell ĘżArÄn, ŘŞŮ„ عرن, Erin",2,"36.12419","37.34718","URU.ar-nĂ©-e","capital","BÄ«t-AgĹ«si, Syria","Helsinki Atlas: 6 (map 2 D4), Bagg RGTC 7 1: 23" +121,"Arpadda","Arpadda, Arpad, Ęľrpd, đˇ€đˇ“đˇđˇ, ĘľArpÄd, ×ַרְפָּד, Ḫurpata, Tell RifĘżat, Tall RifĘżat, Tell Rifa'at, ŘŞŮ„ رŮعت",2,"36.47262","37.09464","ar-pad-da, KUR.ar-pad-da, KUR.ár-pad-da, KUR.URU.ar-pad-dĂ , URU.ar-pa-da, URU.ar-pad-da, URU.ar-pad-du, URU.ár-pa-da, URU.ár-pad-da, ár-pad-da-a-a-te, KUR.ar-pa-da-a-a, KUR.ár-pad-da-a-a, URU.ar-pad-da-a-a, URU.ár-pad-da-a-a, đˇ€đˇ“đˇđˇ, ×ַרְפָּד","prov. capital","BÄ«t-AgĹ«si, Arpadda province, Syria","Helsinki Atlas: 6 (map 2 D4), Bagg RGTC 7 1: 23–25" +122,"Arqâ","Arqâ, Irqanat, Irqanatu, Irqanata, Arkata, Irkata, Irqata, Ężrqw, đˇŹđˇ“đˇ’đˇ…‎‎, br Ężrqj, đˇđˇ“ đˇŹđˇ“đˇ’đˇ‰, ĘżArqĂ®, עַרְקִי, Arka, ArkÄ“, Ężrq, đ¤Źđ¤“đ¤’‎, Arca, Arka, ArkÄ“, Archis, Caesarea ad Libanum, Herakleia en Phoinike, Tell ĘżArqâ, عرقا",1,"34.53333","36.03333","KUR.ar-qa-a, URU.ar-qa-a, ar-qa-a-a, KUR.ir-qa-na-ta-a-a, Ężrqw, đˇŹđˇ“đˇ’đˇ…‎‎, br Ężrqj, đˇđˇ“ đˇŹđˇ“đˇ’đˇ‰, Ężrq, đ¤Źđ¤“đ¤’‎, עַרְקִי","city","ḪamÄt, Phoenicia, Syria","Helsinki Atlas: 6 (map 8 A2), Bagg RGTC 7 1: 25–26, <a href=https://pleiades.stoa.org/places/668198>Pleiades: Arca/Herakleia en Phoinike/Caesarea ad Libanum</a>" +123,"ArqÄnia","ArqÄnia, Arkanâ, Arkania, Ergani mountains, Sakız Dağı, Yaylım Dağı","–","38.49845","39.6579","KUR.ar-ka-a-na-a, KUR.ar-qa-ni-a","mountain","MallÄnu, Turkey","Bagg RGTC 7 2/1: 64, Helsinki Atlas: 6 (map 3 C2)" +124,"Arrakdi","Arrakdi, Arrakdu, Arrakdia, Arikdin, Arragdi, TukultÄ«-Aššur-aṣbat, Bingird, بنگرد",4,"35.37778","45.71389","KUR.ár-rak-di-a, URU.a-ra-ak-di, URU.a-rak-di, URU.ar-ra-ak-di/URU.ar-ra-ag-di","town","Zamua","Bagg RGTC 7 3/1: 63–64, Helsinki Atlas: 6 (Arragdi, map 10 E1), Radner (2017), A Neo-Assyrian Legal Document from Tell Sitak: 428" +125,"Arrapḫa","Arrapḫa, Arrapḫum, Arrapḫe, Arrapḫi, Arrapachitis, Karkha de Beth Seluk, KarkĹ«k, Kirkuk, ŮرŮŮŮ, ĘżArafah, عرŮŘ©",1,"35.46963","44.39572","ár-rap-ḫa, arrap-ḫa, arrap-ḫa.KI, KUR.arrap-ḫa, URU.ár-arrap-ḫa, URU.a-rap-ḫa, URU.ar-rap-ḫa, URU.ar-rap-ḫi, URU.ár-rap-ḫa, URU.ár-rap-ḫe, URU.arrap-ḫa, URU.arrap-ra-ap-ḫa, ar-rap-ḫa-ia, URU.ar-rap-ḫa-a-a, URU.arrap-ḫa-a-a","city","Assyria, Arrapḫa province","Helsinki Atlas: 6 (map 10 D1), Bagg RGTC 7 2/1: 64–68, <a href=https://pleiades.stoa.org/places/893941>Pleiades</a>" +128,"Artulu","Artulu, Kululu, Kayserı, Aksaray","3 4","38.96968","36.13359","URU.ar-tu-lu","city","TabÄl, Turkey","Helsinki Atlas: 6 (Artulu and Artulu (alt. loc.), map 2 B2, 1 D2), Bagg RGTC 7 1: 26, <a href=https://pleiades.stoa.org/places/543726022>Pleiades: Kululu Kalesi</a>, <a href=https://pleiades.stoa.org/places/619164>Pleiades: Aksaray</a>, <a href=https://pleiades.stoa.org/places/629035>Pleiades: Kayserı</a>" +130,"ArwÄda","Arwad, Arvad, ArwÄd, ArwÄda, ArmÄda, Armada, Arwada, ĘľArwÄd, ×ַרְוַד, Ęľrwd, đ¤€đ¤“đ¤…đ¤, Ęľrwdj, đ¤€đ¤“đ¤…đ¤đ¤‰, Arados, Aradus, ar-RuwÄd, ArwÄd, أرŮاد",1,"34.85735","35.86053","KUR.a-ru-a-di, KUR.a-ru-ad-da, KUR.a-ru-Ăş-ad-da, KUR.a-ru-Ăş-da, KUR.a-ru-ud-da, KUR.ar-u-a-da, KUR.ar-Ăş-a-da, KUR.ar-Ăş-ad-da, KUR.ar-Ăş-da, LĂš-KUR.ar-Ăş-ad-da, URU.a-ru-ad-da, URU.a-ru-a-di, URU.ar-ma-da, URU.ar-ma-di, URU.ar-u-a-da, URU.ar-Ăş-a-da, KUR.ar-ma-da-a-ia, URU.a-ru-da-a-a, URU.ar-ma-da-a-a, đ¤€đ¤“đ¤…đ¤, đ¤€đ¤“đ¤…đ¤đ¤‰, ×ַרְוַד","city, island","Phoenicia, Syria","Helsinki Atlas: 6 (map 8 A2), Bagg RGTC 7 1: 27–29, <a href=https://pleiades.stoa.org/places/668197>Pleiades: Arados</a>" +131,"Arzâ","Arzâ, ArzÄja, Yurza, Tell ÄžÄmÄ, TÄ“l Gamma, תל גמה, TÄ“l Haror, תל הרור, Tall AbĹ« ḤurÄ“ra, TÄ“l Hesi, תל חסי, al-ĘżArīš (?), العريش",1,"31.38715","34.44511","KUR.ar-za-a, URU.ar-za-a, URU.ar-za-a-a","town","Levant, Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 29–30, <a href=https://pleiades.stoa.org/places/309101265>Pleiades: Arzâ (T. ǦÄmÄ)</a>" +132,"Arzūḫina","Arzūḫina, Arzuḫina, Aḫi-Zūḫina, Urzūḫina, Azuḫīnum, Azuḫinni, Narzuḫini, Uzuḫinnum, Ęľrzḥn, đˇ€đˇ“đˇ†đˇ‡đˇŤ, Gök Tepe, ÚŻŮÚŻ تپه, LÄ“lÄn, ليلان, Tall Qara Khogh",3,"35.84718","44.83326","ar-zu-ḫi-na, ár-zu-ḫi-na, ur-zu-ḫi-na, KUR.ur-zu-ḫi-na, URU.a-ḫi-ĂŤD.zu-ḫi-na, URU.ar-zu-ḫi-na, URU.ar-zu-ḫi-nu, URU.ár-zu-ḫi-na, URU.ur-zu-ḫi-nu, URU.ar-zu-ḫi-na-a-a, URU.ur-zu-ḫi-na-a-a, đˇ€đˇ“đˇ†đˇ‡đˇŤ","city, prov. capital","Assyria, Arzūḫina province, Iraq","Bagg RGTC 7 2/1: 72–74 (Arzuḫina), <a href=https://pleiades.stoa.org/places/893944>Pleiades: Arzuhin?</a>, Parpola Helsinki Atlas: 6, 24 (map 10 D1)" +92,"Arâ","Arâ, Arra, Arrha, Ężrw, đˇŹđˇ“đˇ…, Tall ĘżAr, MaĘżarrat an-NuĘżmÄn, معرة النعمان, Tall ArrÄ«, ŘŞŮ„ عري","–","35.4851","36.67946","URU.a-ra-a, Ężrw, đˇŹđˇ“đˇ…","town","ḪamÄt, Syria","Bagg RGTC 7 1: 19–20" +98,"ArÄši","ArÄši, RÄši","–","–","–","–","region","–","Helsinki Atlas: 6 (map 11 B3)" +115,"ArÄ«di","ArÄ«di, Aridi, ArÄ«du, Aridu, Jaridu, Jaridi, Iaridu, Tell ĘżArÄda, Tall ĘżArÄda, ŘŞŮ„ عرادة",2,"36.74381","40.26703","URU.a-ri-di, URU.ia-ri-di","town","GĹ«zÄna province, Syria","Helsinki Atlas (ArÄ«du (1), map 3 D3), Bagg RGTC 7 2/1: 62" +116,"ArÄ«du","ArÄ«du, Aridu, Ruwandiz, RÄwandĹ«z, áąžuwandiz, راŮندŮز, رŮاندز",4,"36.61667","44.51667","KUR.a-ri-di, URU.a-ri-di, URU.a-ri-du","fortified city","ḪabrĹ«ri, Iraq","Bagg RGTC 7 3/1: 60, Helsinki Atlas: 6 (ArÄ«du (2), map 4 D5), Bagg RGTC 7 1: 62" +129,"ArĹ«mâ","Arumâ, ArĹ«mâ, RĂ»mâ, Rumah, רוּמָה, Ḫirbat ar-RĹ«ma, Ḥirbe Ruma, חרבת רומה",1,"32.78854","35.29285","URU.a-ru-ma-a, רוּמָה","town","BÄ«t-ḪumrĂ®, Galilee, Israel","Helsinki Atlas: 6, Bagg RGTC 7 1: 27" +111,"Arḫi","Arḫi","–","–","–","–","district","–","Helsinki Atlas: 6 (map 5 C2)" +126,"Arṣania","Arṣania, Murat Su, Arsanias",1,"–","–","–","river","–","Helsinki Atlas: 6 (map 3 D2)" +127,"Arṣaškun","Arṣaškun, Erciṣ",4,"39.02906","43.35914","–","capital","–","Helsinki Atlas: 6 (map 4 C2)" +133,"Asatia","Asatia, Asati","–","–","–","–","country","NaĘľiri","–" +134,"AsdĹ«dimmu","AsdĹ«dimmu, Asdudimmu, AzĹŤtos Paralios, Ἄζωτος παĎάλιος, AšdĂ´d-Yam, Ashdod Yam, H̱orbat Ashdod Yam, חרבת ×שדוד ים, Minat el-Qal'a, TÄ“l Mor, תל מור",1,"31.77931","34.62103","URU.as-du-di-im-mu","seaport, city","Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 30, <a href=https://pleiades.stoa.org/places/687843>Pleiades: Azotos Paralios</a>" +135,"AsdĹ«du","AsdĹ«du, SadĹ«du, SidĹ«du, Asdudu, Ašdod, ĘľAḏdÄdu, AšdĂ´d, ĘľAšdĂ´d, ×ַשְ×דּוֹד, AzĹŤtos, áĽÎ¶Ď‰Ď„ĎŚĎ‚, Azotos Mesogeios, Ἄζωτος μεĎόγειος, ʾšdd, đ¤€đ¤”đ¤đ¤, 'EsdĹ«d, Tel Ashdod, TÄ“l Ašdod, Ashdod",1,"31.75604","34.65606","as-du-du, KUR.as-du-di, URU.as-du-di, URU.as-du-du, URU.as-du-Ăş-di, KUR.as-du-da-a-a, KUR.sa-du-da-a-a, KUR.si-du-da-a-a, URU.as-du-da-a-a, đ¤€đ¤”đ¤đ¤, ×ַשְ×דּוֹד","prov. capital","Pilistu, Israel","Helsinki Atlas: 6 (map 7 C5), Bagg RGTC 7 1: 30–32, <a href=https://pleiades.stoa.org/places/687838>Pleiades: Ashdod/Azotos (Mesogeios)</a>" +136,"Asiḫi","Asiḫi","–","–","–","–","town","Assyria, Syria","RGTC 7 2/1: 74–75 (Asiḫi 1 and 2), 76 (Ašiḫi)" +137,"AstÄrtu","AstÄrtu, ĘżAštartu, ĘżAṯtartu, AstÄrtu, Astartu, Ashtarot, AštÄrĂ´t, ʿštrt, đ¤Źđ¤”đ¤•đ¤“đ¤•â€Ž, עַשְ×תְּרֹת, עַשְ×תְּרֹת ×§Ö·×¨Ö°× Ö·×™Ö´×ť, Tell Aštara, Tell Ashtara, Tall Aštara, ŘŞŮ„ الشتارا",1,"32.8045","36.01537","URU.as-tar-tu, đ¤Źđ¤”đ¤•đ¤“đ¤•â€Ž, עַשְ×תְּרֹת, עַשְ×תְּרֹת ×§Ö·×¨Ö°× Ö·×™Ö´×ť","city","Dimašqa","Helsinki Atlas: 6 (map 8 B4), Bagg RGTC 7 1: 32, <a href=https://pleiades.stoa.org/places/678227>Pleiades: Karnaia/Astaroth?</a>" +145,"Atalur","Atalur, Lallar, Kurt DaÄź, Kurt Dağı, Jabal al Kurd, جبل الŮرد, Jabal KurÄ«, جبل Ůري, Kartal Dağı",2,"36.68627","36.63681","KUR.a-ta-lu-ur, KUR.lal-la-ar","mountain","Syria, Turkey (?)","Helsinki Atlas: 7 (map 2 C4), Bagg RGTC 7 1: 34 (Atalur),d 154–155 (Lallar), 328, and 329." +146,"Atinni","Atinnu, Atinni, Atanni, Adennu, AddanĂ´n, AdanĂ´n, Adana, ad-DÄnÄ, الدانا, KÉ™far Atin, ḪÄnedÄn","–","35.6997","36.68736","URU.a-ti-in-ni, URU.a-de-en-nu","royal city","ḪamÄt, Syria","Bagg RGTC 7 1: 35 (Atinnu), Parpola Toponyms: 55, Helsinki Atlas: 8 (DÄna)" +147,"Atunna","Atunna, Atuna, Tuna, AtĹ«nu, TĹ«nu, Dunna, Tynna, Porsuk, Bohça, Adana",1,"37.51473","34.58111","KUR.a-tu-un-a-a, KUR.a-tĂş-un-a-a, KUR.a-tu-na-a-a, KUR.tu-na-a-a, KUR.tu-un-na-a-a, URU.a-tĂş-na-a-a, URU.tu-na-a-a","city, state","TabÄl, Turkey","Helsinki Atlas: 7 (map 1 D3), Bagg RGTC 7 1: 35–36" +148,"AukanĂŞ","AukanĂŞ, MiyÄne (district of?)","–","37.421","47.715","KUR.a-Ăş-ka-nĂ©-e, URU.a-Ăş-ka-nĂ©-e","district, fortified city","Zikirtu, Iran","Bagg RGTC 7 3/1: 79, Helsinki Atlas: 7 (map 5 B4)" +149,"Awal","Awal, Tell es-Suleimeh","–","34.1672839680068","45.10398610165713","–","–","–","–" +150,"Azalla","Azalla, Izalla, Aṣalli, al-ĘżUyÄnÄ«ya, العليانية","–","34.01469","38.0986","URU.a-za-al-la, URU.a-za-al-li, URU.i-za-la","city","Syria","Bagg RGTC 7 1: 36–37" +151,"Azamḫul","Azamhul, Tell Muhammed Diyab (?)",4,"36.92458278462991","41.5639438856054","–","–","–","–" +152,"Azaqâ","Azaqâ, Azeqa, ĘżAzÄ“qÄh, עֲזֵקָה, Αζηκα, TÄ“l ĘżAzÄ“qÄh, תל עזקה, ŘŞŮ„ عزيقة, TÄ“l Zekarya, תל זְכַרְיָה, Tell ZakarÄ«ya, Tell Zakariya",1,"31.70927","34.94488","URU.a-za-qa-a, עֲזֵקָה","city","Iaʾūdu, Israel","Helsinki Atlas: 7 (map 7 C5), Bagg RGTC 7 1: 37" +153,"Azari","Azari, SulaimÄniya",4,"35.558333333333","45.441666666667","–","town","–","Helsinki Atlas: 7 (map 11 A1)" +154,"Azatiwadaya","Karatepe AslantaĹź","–","37.29593799675796","36.25398751793364","–","–","–","–" +155,"Azmu","Azmu, Zalabiya, Zalebiye, زلابية, YasÄ«m",4,"35.66842","39.84256","URU.az-mu","town","BÄ«t-Adini, Middle Euphrates, Syria","Helsinki Atlas: 7 (map 3 C5), Bagg RGTC 7 1: 38" +156,"Azu","Azu, Tell Hadidi","–","36.2636830630028","38.15089325346946","–","–","–","–" +157,"Azuru","Azuru, Asuru, YÄzĹ«r, Azor, ʾĀzĂ´r, ×ָזוֹר‎, TÄ“l Azor, Azur, أزŮر‎",1,"32.02167","34.7805","URU.a-zu-ru","town","Pilistu, IsqalĹ«na, Israel","Helsinki Atlas: 7 (map 7 C4), Bagg RGTC 7 1: 38" +140,"Ašnakkum","Chagar Bazar (?)",4,"36.87559543914787","40.89909269814208","–","–","–","–" +144,"AštamÄku","Aštammaku, AštamÄku, Aštamaku, Abšimmaku, Abtammaku, Išdamugu, Aštakamu, Ęľystmk, al-Mastumaḥ, Tall MasáąĹ«ma, ŘŞŮ„ مسطŮŮ…Ř©, StĹ«mÄ, StĹ«mÄk, Stumak",1,"35.87781","36.63077","URU.ab-ši-ma-ku, URU.ab-ta-ma-ku, URU.áš-ta-ma-ku, URU.áš-tam-ma-ku","town","ḪamÄt, Syria","Helsinki Atlas: 6 (map 2 C5), Bagg RGTC 7 1: 33–34 (Aštammaku), <a href=https://pleiades.stoa.org/places/56494917>Pleiades: Aštamaku</a>" +141,"Aššur","Libbi-Äli, LibbÄli, Inner City, Aššur, Assur, Ashur, Baltil, QalĘżat Ĺ arqÄáą, Qal'at Sherqat, Qalaat Sherqat",1,"35.45626","43.25979","–","capital, city","Assyria","Helsinki Atlas: 6 (map 10 C1), <a href=https://www.assur.de/> Assur</a>" +142,"Aššur-iqīša","Aššūr-iqīša, Aššur-iqīša, Takyan HöyĂĽk, ZÄḫū",4,"37.17944","42.39525","URU.aš-šur-BA-šá","prov. capital","Ulluba, Birtu (2) province","Helsinki Atlas: 6 (map 4 B4), Bagg RGTC 7 2/1: 81" +143,"Aššur-mÄssu-urappiš","Aššur-mÄssu-urappiš","–","–","–","URU.aš-šur-KUR-su-DAGAL.MEĹ ","town","Egypt","–" +139,"AšḫÄni","AšḫÄni, Ašḫani, Isḫanikka, Išḫanik, ḪÄn Ĺ ayḫūn, ḪÄn Ĺ aiḫūn, خان Ř´ŮŠŘ®Ůن, aš-Ĺ aĘżrÄni, aš-Šēḫ ḤourÄni, الشيخ ŘŮراني, ĘżAin SaḫnÄ, عين السŘنة",2,"35.44328","36.64629","URU.aš-ḫa-ni, URU.áš-ḫa-ni","city","ḪamÄt, Syria","Helsinki Atlas: 6 (map 8 B1), Bagg RGTC 7 1: 33 (Ašḫani)" +1088,"Aḫsipuna","Aḫsipuna","–","–","–","URU.aḫ-si-pu-na, đ’Ś·đ’„´đ’‹›đ’Ťđ’ľ","town","Parsua (?), MÄdÄja (?), Iran","Bagg RGTC 7 3/1: 9" +22,"Aḫtâ","al-MÄ«nÄĘľ, RaĘľs al-BasÄ«áą (?)",3,"36.05979","35.97939","URU.aḫ-ta-a","city, emporium on the seashore","ḪamÄt (?), KullanÄ«a (province) (?), Mediterranean coast","Helsinki Atlas: 5 (map 2 B4), Bagg RGTC 7/1: 3, Zadok 1996, 11, Barrington Atlas, 67" +21,"Aḫšūru","Aḫšūru, Aḫšūra","–","–","–","KUR.aḫ-šu-Ăş-ru, 𒆳𒄴𒋗𒌑𒊒","mount","Zamua (?), MannÄja (?), Iran ","Bagg RGTC 7 3/1: 9, Parpola Toponyms: 6, <a href=https://www.geonames.org/98463/as-sulaymaniyah.html>Geonames: As SulaymÄnÄ«yah</a>" +1089,"Aḫūdu","Aḫūdu, Aḫudu, Uḫūdu","–","–","–","URU.a-ḫu-di, 𒌷𒀀𒄷đ’˛","fortified city","BÄ«t-AmukkÄni, Babylonia, Iraq","Bagg RGTC 7 3/1: 9–10" +138,"Aṣūṣi","Aṣūṣi, Aṣūṣu, Ṣūṣi","–","–","–","URU.a-ṣu-ṣi, URU.ṣu-ṣi","town","Northern Babylonia (?)","Bagg RGTC 7 1: 74" +158,"Babil","Assyrian name unknown, Babil, Kebili, Kebeli KöyĂĽ, Kebeli Koyu","–","37.1876517","42.0271825","–","monument","Turkey","Helsinki Atlas: 7 (map 4 A4), <a href=https://pleiades.stoa.org/places/708232008>Pleiades: Babil</a>" +160,"Babiti","Babiti, BaziÄn",2,"35.6365","44.96966","–","pass","–","Helsinki Atlas: 7 (map 10 E1)" +161,"BadÄni","BadÄni","–","–","–","URU.ba-da-a-ni","village","Central Assyria","Bagg RGTC 7 2/1: 88 (BadÄni 3)" +162,"BadÄni (2)","Badani, BadÄnu, BadÄni, Fadana, Phaddan, Tall FeddÄn, Yukarı Telfidan, YukarıbeÄźdeĹź, AĹźağı Telfidan, AĹźağıbeÄźdeĹź",3,"36.84738","38.9045","URU.ba-da-ni, URU.ba-da-na-a-a","village","ḪarrÄnu province, Turkey","Bagg RGTC 7 2/1: 87–88 (BadÄni 2), Helsinki Atlas: 7 (BadÄnu, map 3 B4), <a href=https://pleiades.stoa.org/places/658467>Pleiades: Fadana</a>" +163,"BadÄnu","BadÄnu, BadÄni","–","–","–","URU.ba-da-na-a-a","tribe","Sinai Peninsula (?), Arabian Peninsula (?)","Bagg RGTC 7 1: 41 (BadÄni 1)" +166,"Baliḫu","Baliḫu, Balīḫu, BaliḫÄ, Baliḫum, Baliḫa, Ḫarru-ša-mÄr-Balīḫi, Tell Abyaḍ, Tell Abid, Tall Abyaḍ, ŘŞŮ„ ابيض, ĘżAin al-ĘżArĹ«s, عين العرŮŘł",3,"36.6844","38.98529","URU.ba-li-ḫi, URU.ba-li-ḫu","town, city","Syria","Helsinki Atlas: 7 (map 3 B4), Bagg RGTC 7 2/1: 90–91 (Balīḫu 1)" +164,"BalÄáąa","BalÄáąa, Balaáąu, Balatu, Balad, BalÄáąu, BalÄáąÄja, BalÄáą, Eski Moṣul, Eski Mosul, اسŮŮŠ Ů…Ůصل, al-Mauṣil-al-QadÄ«m, Tall ÄžikÄn, Tall Jikan",3,"36.51292","42.73595","URU.ba-la.MEĹ , URU.ba-la-áąa, URU.ba-la-áąa-a-a, URU.ba-laáą, URU.ba-laáą-a-a","town, prov. capital","Central Assyria, Province of the crown prince, Iraq","Helsinki Atlas: 7 (map 4 B5), RGTC 7 2/1: 89–90 (BalÄáąÄja)" +165,"Balīḫ","Balīḫu, Balissos, Balīḫ, Daisan",1,"–","–","–","river","–","Helsinki Atlas: 7 (map 3 C4)" +167,"Banai-barqa","Banai-barqa, Banajabarqa, B<sup>e</sup>nĂŞ b<sup>e</sup>raq, BnÄ“ BrÄq, ×‘Ö°× Öµ×™Öľ×‘Ö°×¨Ö·×§, H̱orbat BnÄ“ BrÄq, חרבת ×‘× ×™ ברק, Ibn IbrÄq, Tall AbĹ« ZÄ“tĹ«n, TÄ“l ZÄ“tĹ«n, תל זיתון",1,"32.03613","34.82061","URU.ba-na-a-a-bar-qa","town","IsqalĹ«na, Pilistu, Israel","Bagg RGTC 7 1: 42 (Banajabarqa), Helsinki Atlas: 7 (Banai-barqa, map 7 C4)" +168,"Baqarru","Baqarru, Baqarri, Baqar, QabrÄ, Tepe YaĘżqĹ«b, Tall Bqarta, Tell Baqrta, Tappe YaĘżqĹ«b, تبه يعقŮب",3,"35.95195","43.90993","URU.ba-qar, URU.ba-qar-ma, URU.ba-qar-ri","town","Assyria, Arzūḫina (province) (?)","Helsinki Atlas: 7 (map 4 D6), Bagg RGTC 7 2/1: 92–93 (Baqarri)" +169,"Bargâ","Barqum (?)",4,"36.03727524058666","36.96663802100544","–","–","–","–" +172,"Barzaništa","Barzaništa, Barzanista, Göktepe","–","37.69504","40.38403","URU.bar-za-ni-is-ta, URU.bar-za-ni-iš-ta","town","Izalla","Bagg RGTC 7 2/1: 97–98" +173,"Barzaništun","Barzaništun","–","–","–","URU.bar-za-ni-iš-tu-un","town","BÄ«t-ZamÄni, Turkey","Bagg RGTC 7 2/1: 98" +171,"BarĹ«ri","BarĹ«ri, Baruḫu, Bourira (?), BurÄ“r (?)","–","31.56667","34.65","URU.bar-Ăş-ri","town","Central Assyria (?), Iraq (?), Ḫazzat (?), Pilistu (?), Israel (?)","RGTC 7 2/1: 97" +170,"Barḫalza","Barḫalza, Barḫalzu, Barḫalzi",2,"–","–","–","province, prov. capital","–","Helsinki Atlas: 7 (map 4 B5), RGTC 7 2/1: 93–95" +176,"Batruna","Botrus, Batrun?","–","34.25624622926138","35.65955373869843","–","–","–","–" +175,"Bašimu","Bašimu, Liyan (?), Būšehr, Sabzabad Bushehr",3,"28.9071","50.8456","–","city","–","Helsinki Atlas: 7 (map 17 C5)" +181,"BaĘľali","BaĘľali, BaĘľalu, Ḫirbat BalĘżama, Khirbet Balama, Khirbet Bel'ameh, Khirbet Bal’ama, Ibleam, יִבְלְעָם, BaĘżlabakk, Heliopolis","–","34.00675","36.20437","URU.ba-Ęľa-li, URU.ba-aĘľ-li","town","Syro-Palestine, Dimašqa (?)","Bagg RGTC 7 1: 39" +182,"BaĘľali-raĘľasi","BaĘľli-rÄĘľsi, BaĘľali-raĘľasi, BaĘľali-raĘľsi, BaĘľil-rÄĘľsi, BaĘżal Rôš, RešbaĘżal, RÄs an-NÄqĹ«ra, RaĘľs an-NÄqĹ«ra, ר×ש ×”× × ×§×¨×”, Ǧabal al-Karmil, جبل الŮرمل, Har ha-Karmel, הר כרמל, KarmÄ“los",2,"33.09409","35.10378","KUR.ba-Ęľa-li-ra-Ęľa-si/KUR.ba-Ęľa-li-ra-si, KUR.ba-aĘľ-li-ra-aĘľ-si/KUR.ba-aĘľ-li-ra-si","mountain","Mediterranean coast, Phoenicia, Syria","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 40–41 (BaĘľali-raĘľsi)" +183,"BaĘľil-gazara","BaĘľil-gazara, Ä azÄ«r (?), Ghazir (?), (?) غزير","–","34.01823","35.66611","URU.ba-il-ga-za-ra","town","Syro-Palestine","Bagg RGTC 7 1: 41–42" +184,"BaĘľli-ṢapĹ«na","Cassius, Äžabal al-AqraĘż",2,"–","–","–","mountain","–","Helsinki Atlas: 7 (map 2 B5)" +174,"Baṣiru","Baṣiru, Tell Bazi","–","36.42789","38.27684","–","–","–","–" +185,"Beer-šeba","Beersheva, Beer-ševa, Tell es-Saba'","–","31.24500206386151","34.84073003359802","–","–","–","–" +186,"Ben Shemen Forest","Assyrian name unknown, Ben Shemen Forest","–","31.93558","34.96537","–","monument","Israel","–" +187,"Benuḫše","Benuḫše","–","–","–","URU.be-nu-uḫ-še (URU.be?-nu?-uḫ?-še?)","town","Central Assyria (?)","Bagg RGTC 7 2/1: 102" +191,"Bethlehem","Bethlehem, Betlem, Bethleem, Bet Leḥem, Bait Laḥm, בֵּית לֶחֶם, بيت Ů„ŘŮ…, ΒηθλεÎÎĽ","–","31.70306","35.19556","بيت Ů„ŘŮ…, בֵּית לֶחֶם, ΒηθλεÎÎĽ","town","Israel, Iaʾūdu","–" +192,"Bethsaida","Gešur (?), Ṣaydȧn, Bethsaida, Báşąt Ṣẹdȧ, Bait ṢaidÄ, بيت صيدا, Beit Tsaida, בית צידה, Ioulias, Iulias, Julias, Ἰουλίας, al-MaṣʿadÄ«ya, Al Musâ€adÄ«yah, المسعدية, al-ĘżAraǧ, Tell ĘżAraj, Tel ĘżAraj, El Araj, at-Tall","–","32.9103","35.63066","–","fortified city","Gešur (?)","<a href=https://pleiades.stoa.org/places/678065>Pleiades: Bethsaida</a>, <a href=https://bethsaidaarchaeology.org>Bethsaida Excavations Project</a>, <a href=https://www.elarajexcavations.com/updates>El Araj Excavation Project</a>" +193,"BeĘľrĹ«","BiĘľrĂ», BeĘľrĂ», BeĘľrĹ«, Biruta, BiĘľrutu, BiĘľrĹ«tu, bjrt, đ¤‰đ¤“đ¤•â€Žđ¤, Berytos, BÄ“rytos, Berytus, Laodikeia, Colonia Iulia Augusta Felix, Beirut, BairĹ«t, بَيْرُŮŘŞ",1,"33.89942","35.50818","URU.bi-iĘľ-ru-u, đ’Ś·đ’‰đ’€Şđ’Š’đ’Ś‹, URU.bi-iĘľ-ru-Ăş, đ’Ś·đ’‰đ’€Şđ’Š’đ’Ś‘, đ¤‰đ¤“đ¤•â€Žđ¤","city, seaport","Phoenicia, ṢīdĹ«nu, Lebanon","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 43–44 (BiĘľrĂ»), <a href=https://pleiades.stoa.org/places/678060>Pleiades: Beirut</a>" +194,"Bikni","Bikni, DamÄvand (?), ŮŮه دماŮند (?), Ququ, Ú©Ůه Ů‚ŮŮ‚Ů",2,"34.2071","51.031","KUR.bi-ik-ni, KUR.bi-ik-nu","mountain","MÄdÄja, Iran","Helsinki Atlas: 7 (map 6 D5), Bagg RGTC 7 3/1: 105–106" +197,"BirgiĘľ","BirgiĘľ, BarÄźÄ, Barja, برجا","–","33.64972","35.44278","URU.bi-ir-gi-iĘľ","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 42–43" +198,"Birtu (2)","Birtu, BÄ«rtu","–","–","–","URU.ḪAL.ṢU","city","–","RGTC 7 2/1: 105–106 (Birtu 2)." +199,"Birtu (3)","Birtu, BÄ«rtu","–","–","–","URU.ḪAL.ṢU","town","–","RGTC 7 2/1: 106 (Birtu (3))." +200,"Birtu-ša-Adad-rÄ“manni","Birtu-ša-Adad-rÄ“manni, Birat-ša-Adad-rÄ“manni, Fort Adad-rÄ“manni, PanÄźvÄ«n (?), بينجŮين, پنجŮین","–","35.62054","45.94908","URU.bir-tu-ša-<sup>m</sup>10-rĂ©m-a-ni, URU.ḪAL.ṢU-<sup>md</sup>IM-rĂ©m-a-ni, URU.ḪAL.ṢU-ša<sup>md</sup>10-rĂ©m-a-ni, URU.ḪAL.ṢU-<sup>md</sup>IĹ KUR-rĂ©m-a-ni","town, fortress","MÄzamua, Mannea, Iraq","Bagg RGTC 7 3/1: 110" +201,"Biruatti","Biruatti","–","–","–","KUR.bi-ru-at-ti","mount","–","Parpola Toponyms: 75" +202,"Bisuru","Bisuru, BaĹ›ar, Basalla, Bašar, Bisir, Bešri, Äžabal BišrÄ«, جبل البشري",1,"35.35449","39.28944","KUR.bi-su-ru, KUR.bĂ©-eš-ri (MA)","mountain","Syria","Helsinki Atlas: 7 (map 9 B1), Bagg RGTC 7 2/1: 107" +241,"Bitirume","Bitirume, Botrys, Î’ĎŚĎ„ĎĎ…Ď‚, al-BatrĹ«n, BatroĂ»n, البترŮن","–","34.25528","35.65806","URU.bi-ti-ru-me","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 51, <a href=https://pleiades.stoa.org/places/668214>Pleiades: Botrys</a>" +242,"Biturra","Biturra, Piturra, Beidul, Bedol, بيدŮŮ„","–","36.86618","43.2352","URU.BI-it-ur-ra, URU.bi-it-ur-ra, URU.pĂ-it-ur-ra","town","Central Assyria, Iraq","Bagg RGTC 7 2/1: 121" +243,"Borsippa","Borsippa, Barsip, Birs NimrĹ«d, Birs Nimrud, برس نمرŮŘŻ",1,"32.39245","44.3425","bar-sip.KI, BĂR.SIPA, BĂR.SĂŤPA.KI, bur-sip.KI, DUMU-bar-sip.KI, DUMU-BĂR.SIPA.KI, DUMU.MEĹ .bar-sip.KI, DUMU.MEĹ -BĂR.SIPA.KI, LĂš.BĂR.SIPA.KI.MEĹ , LĂš.BĂR.SIPA.MEĹ , LĂš.DUMU-BĂR.SIPA.KI, LĂš.DUMU.MEĹ -BĂR.SIPA.KI, URU.BĂR.SIPA, URU.BĂR.SIPA.KI","prov. capital","Babylonia, Iraq","Helsinki Atlas: 7 (map 10 D4), Bagg RGTC 7 3/1: 98–100 (Barsip)" +245,"Bulijanu","Bulijanu, Buliiana, Buliana, Buliyana, BÄlÄne/YĂĽceköy (?), Tall Abade (?)","–","37.60477","41.3396","URU.bu-li-ia-na, URU.bu-li-ia-ni","town, pass","Ḫabḫu, Turkey","Bagg RGTC 7 2/1: 125" +246,"Bumame","Bumame, Tall MamĹ«, ŘŞŮ„ مامŮ","–","35.93126","37.02406","URU.bu-ma-me","town","ḪamÄt, Syria","Bagg RGTC 7 1: 55" +1063,"Bunais","Bunais, Silsilat JibÄl Azmar, سلسلة جبال ازمر, Jabal ŢÄslĹ«jah, جبل طاسلŮجة, KÄnÄ«rÄš-Pass (?), Ůانى Ú•Ű•Ř´, QandÄ«l DÄġ (?), Silsilat JibÄl QandÄ«l (?), سلسلة جبال قنديل","–","35.63017","45.47669","KUR.bu-na-is","mountain, pass","Zamua, Iran (?), Iraq (?) ","Bagg RGTC 7 3/1: 161–162, Edmonds (1957), <i>Shar BazhĂŞr and the Basin of the Qalachuwalan</i>. The Geographical Journal 123/3, 318–328" +1064,"Bunisa","Bunisa, BunÄsi, Bunisu","–","–","–","URU.bu-na-a-si, KUR.bu-ni-sa-a-a, URU.bu-na-i-sa-a-a, URU.bu-ni-sa-a-a","fortified city, country","Zamua, Iran (?), Iraq (?) ","Bagg RGTC 7 3/1: 162, Edmonds (1957), <i>Shar BazhĂŞr and the Basin of the Qalachuwalan</i>. The Geographical Journal 123/3, 318–328" +248,"Buramma","Buramma, Purammu, Burrim","–","–","–","URU.bu-ram-ma","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 126" +252,"Buruqi","Buruqi, Buruqu","–","–","–","URU.bu-ru-qi","town","GĹ«zÄna (?)","Bagg RGTC 7 1: 128–129 (Buruqi 1)" +253,"Buruqu","Buruqu, Buruqi","–","–","–","URU.bu-ru-qi, URU.bu-ru-qa-a.a","town","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 129 (Buruqi 2)" +254,"Burušḫanda","Burušhanda, AçemhöyĂĽk (?)",4,"38.41158900602762","33.83548385023444","–","–","–","–" +1065,"Bustus","Bustus, Bustis, Buštus, KangÄvar (?), کنگاŮر","–","34.50164","47.96017","KUR.bu-us-ti-is, KUR.bu-us-tu-us, KUR.bu-uš-tu-us, URU.bu-us-tu-us","district","MÄdÄja, Iran","Bagg RGTC 7 3/1: 163–164" +258,"Buto","Buto, Tell el-Fara'in","–","31.19626755366928","30.7426378739966","–","–","–","–" +257,"ButÄmu","ButÄmu, Bdama (?), بداما (?), BeitÄn (?), BÄdÄmÄ (?), Butaynah (?), بتينة (?), BitammÄ(?)","–","36.46136","36.83682","URU.bu-ta-a-mu","town","Pattinu, Syria","Bagg RGTC 7 1: 56, Astour (1963), JNES 22, Place-Names from the Kingdom of Alalaḫ...: 224, map" +256,"Bušâ","Bušâ","–","–","–","URU.bu-šá-a","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 130" +255,"Buṣruna","Buṣruna, Bosra, Buṣra'","–","32.5198850290294","36.48140619600834","–","–","–","–" +159,"BÄbili","BÄbil, Babylon",1,"32.54036","44.42633","–","capital, city","Babylonia","Helsinki Atlas: 7 (map 10 D4)" +1059,"BÄra","BÄra, Baragird, Girdabor, GirdÄbur, جردبŮر","–","35.70139","45.19889","URU.ba-a-ra, URU.ba-ra-a-a","town","Zamua, Iraq","Bagg RGTC 7 3/1: 95–96" +177,"BÄza","BÄza","–","–","–","KUR.ba-a-za","territory","Central Assyria, Ḫabḫu","Bagg RGTC 7 2/1: 99" +178,"BÄzi","BÄzi, BÄzu","–","–","–","KUR.ba-zi","territory","North Mesopotamia","Bagg RGTC 7 2/1: 99 (BÄzi 1)" +179,"BÄzi 2","Bazi, BÄzi, BÄzu","–","–","–","URU.ba-zi","town","Central Assyria (?)","Bagg RGTC 7 2/1: 99 (BÄzi 2 (?))" +180,"BÄzu","BÄzu, BÄṣi, Bazza, Baz, BÄ«t-BÄzi, BÄṣ, Baṣ, Bezu, BÄsu, Strait of Hormuz, Azraq Oasis","–","25.99163","49.49675","KUR.ba-a-zi, KUR.ba-a-zu, KUR.ba-az-zi, URU.ba-a-su, URU.ba-a-ṣi, URU.ba-zi, LĂš.be-zu","territory, land, state","Arabian Peninsula","Bagg RGTC 7 2/1: 100–101" +188,"BÄ“t-el","Bet-el, Betel, Beitin?","–","31.92623433858433","35.23912780857168","–","–","–","–" +189,"BÄ“t-Ĺ ean","Bet Shean, Bit-Sani, Scythopolis, Tell el-Hosn","–","32.50419181537359","35.50300346740403","–","–","–","–" +190,"BÄ“t-Ĺ emeš","Bet-Ĺ emeš, Bet-Shemesh, Tel Bet-Shemesh","–","31.75189849886516","34.97455573812866","–","–","–","–" +195,"BÄ«rÄti (city)","BÄ«rÄti, Birtu, ḪararÄti, Ḥadīṯa",3,"34.178","42.376","–","city","–","Helsinki Atlas: 7 (map 10 B2)" +196,"BÄ«rÄti (fortress)","BÄ«rÄti, BirthĂ´n",3,"37.79383","40.97216","–","fortress","–","Helsinki Atlas: 7 (map 3 D3)" +203,"BÄ«t-AbdadÄni","BÄ«t-AbdadÄni, AbdadÄna",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 D1)" +204,"BÄ«t-Abu-ilÄʾī","BÄ«t-Abu-ilÄʾī, Ä€l-Abu-ilÄʾī, BÄ«t-AbÄ«-IlÄja","–","–","–","–","city","east ǦazÄ«ra","RGTC 7 2/1: 108-109" +206,"BÄ«t-Adad-erÄ«ba","BÄ«t-Adad-erÄ«ba, Bit-Adad-eriba, Tell Baqaq 1-2, Tell BaqÄq 2, Tall Baqqaq 2, Tall BuqÄq 2",1,"36.68995","42.93595","URU.É-10-SU, URU.É-<sup>m</sup>10-SU","town","Central Assyria, TamnĹ«na province, Iraq","Helsinki Atlas: 7 (map 4 B5), Bagg RGTC 7 2/1: 109–110" +205,"BÄ«t-Adad-Ä“reš","BÄ«t-Adad-Ä“reš, BÄ“t-Adad-Ä“reš","–","–","–","URU.É-m10-KAM-eš","town","Central Assyria (?)","Bagg RGTC 7 2/1: 109" +207,"BÄ«t-Adini","BĂŞt-eden, bytĘżdn",3,"–","–","–","territory","–","Helsinki Atlas: 7 (map 3 B4)" +208,"BÄ«t-AgĹ«si","BÄ«t-AgĹ«si, Arpadda",2,"–","–","–","country","–","Helsinki Atlas: 7 (map 2 D4)" +209,"BÄ«t-AmmÄn","BÄ«t-AmmÄn, Ammon, ĘżAmmÄn",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 7 D5)" +210,"BÄ«t-AmukÄni","BÄ«t-AmukÄni",2,"–","–","–","territory","–","Helsinki Atlas: 7" +211,"BÄ«t-BagÄia","BÄ«t-BagÄia, KÄr-IssÄr, BÄ«t-GabÄia, BÄ«t-Gabia","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110, Parpola Toponyms: 78" +213,"BÄ«t-BarrĹ«a","BÄ«t-BarrĹ«a, BorĹ«Äźidr",4,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 D3)" +212,"BÄ«t-BaḫiÄni","BÄ«t-BaḫiÄni",2,"–","–","–","country","–","Helsinki Atlas: 7 (map 3 C4)" +214,"BÄ«t-Bunakki","BÄ«t-Bunakki, Hinemini",4,"33.22933","47.21133","–","city","–","Helsinki Atlas: 7 (map 11 C3)" +215,"BÄ«t-Daganna","BÄ«t-Daganna, BÄ«t-Dagan, BÄ«t-DagÄn, BÄ“t Daǧan, Bejt Dagan, BÄ“t DaÄźan, בית דגן, Beit Dagon, Beth-dagon, בֵּית־דָּגוֹן, Beit Dajan","–","32.00191","34.82977","URU.É-da-gan, URU.É-da-gan-na, בֵּית־דָּגוֹן","town","Pilistu, IsqalĹ«na, Palestine, Israel","Bagg RGTC 7 1: 48, Parpola Toponyms: 80 (BÄ«t-DagÄn)" +216,"BÄ«t-DakkĹ«ri","BÄ«t-DakkĹ«ri",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 10 D4)" +217,"BÄ«t-DÄ“rÄja","BÄ«t-DÄ“rÄja, BÄ«t-DÄ“rÄya, BÄ«t-DÄ“rÄia, Tamertu-ša-BÄ«t-DÄ“rÄja, BÄdarÄjÄ, Badra (?), Badrah (?), بدرة (?)","–","33.11508","45.93344","URU.É-de-ra-a-a, É-<sup>m</sup>de-ra-a-a","city","DÄ“ru province (?), Iraq (?), northern Levant (?)","Bagg RGTC 7 2/1: 112" +218,"BÄ«t-GabbÄri","BÄ«t-GabbÄri, SamĘľalla, SamĘľal",2,"–","–","–","territory, state, province","Syria","Helsinki Atlas: 7 (map 2 C4)" +219,"BÄ«t-Gisimeja","BÄ«t-Gisimeja, ḪÄn al-QÄsimÄ«ya (?), مخيم القاسمية (?), القاسمية (?), BiqsmayyÄ (?), BoqsmaĂŻya (?), بقسميا (?), BišmizzÄ«n (?), BechmizzĂ®ne (?), بشمزين (?)","–","34.25194","35.765","URU.É-gi-si-me-ia, URU.É-mgi-si-me-ia","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 49" +225,"BÄ«t-IakÄ«n","BÄ«t-IakÄ«n, BÄ«t-YakÄ«n",2,"–","–","–","territory","Babylonia, MÄt-tâmti, Iraq","Helsinki Atlas: 7 (map 16 C2)" +226,"BÄ«t-ImbĂ®","BÄ«t-Imbi, BÄ«t-ImbÄ«ja","–","–","–","URU.É-<sup>m</sup>im-bi-i, URU.É-<sup>md</sup>im-bi-i, URU.É-im-bi-i, URU.É-im-bi-ia, URU.É-im-bi-Ăa, É-<sup>m</sup>im-bi-ia, URU.É-<sup>m</sup>im-bi-ia, URU.É-<sup>m</sup>im-bi-Ăa","fortress, city","Elam, ArÄši","Bagg RGTC 7 3/1: 133 (BÄ«t-ImbÄ«ja), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +1060,"BÄ«t-Ištar","BÄ«t-Ištar, BÄ«t-IssÄr, RavÄnsar, RawÄnsÄ«r, رŮانسر","–","34.71208","46.65129","KUR.É-<sup>d</sup>15, URU.É-15, URU.É-<sup>d</sup>15, URU.É-<sup>d</sup>INNIN","town","Parsua (?), MÄdÄja (?), Iran ","Bagg RGTC 7 3/1: 134" +227,"BÄ«t-Kapsi","BÄ«t-Kapsi, BÄ«t-Kabsi, BÄ«jÄr (?), BÄ«ÄźÄr (?), بيجار (?)",2,"–","–","DUMU-<sup>m</sup>kap-si, URU.É-kap-si, URU.kap-si, KUR.É-kap-si-a-a","territory","Iran","Helsinki Atlas: 7 (map 11 C1), Bagg RGTC 7 3/1: 137–138" +1061,"BÄ«t-Kubatti","BÄ«t-Kubatti, BÄ«t-Kubati, Kird Qariyat ÄŚiarza (?), Tepe Qebristan (?)","–","35.09844","45.54416","É-ku-bat, É-<sup>m</sup>ku-bat-ti","fortified city","MÄt-kaššî, Iraq","Bagg RGTC 7 3/1: 140" +228,"BÄ«t-PurĹ«taš","BÄ«t-PurĹ«taš",3,"–","–","–","country","–","Helsinki Atlas: 7 (map 2 B2)" +229,"BÄ«t-Ramannu","BÄ«t-Ramannu","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 2/1: 117" +1062,"BÄ«t-Ramatua","BÄ«t-Ramatua, NÄrtu-šaplÄ«tu, RĹ«dḫÄne-ye MalÄyer (?), RĹ«d-e GÄmÄsÄ«Äb (?), رŮدخانه گاماسیاب (?)","–","–","–","É-<sup>m</sup>ra-ma-tu-a, É-<sup>m</sup>ra-ma-ti-ia","territory","MÄdÄja, Iran","Bagg RGTC 7 3/1: 144–154" +230,"BÄ«t-Ruḫūbu","BÄ«t-Ramannu, Beth Rehov",1,"–","–","–","country","–","Helsinki Atlas: 7 (map 8 A3)" +231,"BÄ«t-Sagbat","BÄ«t-Sagbat, Ecbatana, Ekbatana,Hamadan, ḪamadÄn, Teppe-ye Hekmatana",3,"34.80700819452446","48.51727288555129","–","city","–","Helsinki Atlas: 7 (map 11 D2)" +836,"BÄ«t-SangibĹ«ti","BÄ«t-SangibĹ«ti, SangibĹ«tu, SingibĹ«tu, Ĺ ingibutu, BÄ«t-SingibĹ«ti, SingibĹ«ti, SangibĹ«ti, Ĺ ÄhÄbÄd Plain, EslÄmÄbÄd-e Gharb, اسلام آباد غرب, Ĺ ÄhÄbÄd-e Ä arb, شاه آباد غرب",2,"34.1089","46.52988","KUR.É-sa-an-gi-bu-te, KUR.É-sa-an-gi-bu-ti, KUR.É-si-in-gi-bu-ti, KUR.sa-an-gi-bu-ti, KUR.si-in-gi-bu-ti, KUR.si-in-gi-bu-te, KUR.si-in-gi-bu-tĂş, KUR.sin-gi-bu-te, KUR.šin-gi-bu-tĂş, URU.É-sa-an-gi-bu-ti, KUR.sin-gi-bu-ta-a-a","territory","MÄdÄja, ḪarḫÄr province, Iran","Zimansky (1990), <i>Urartian Geography and Sargon's Eighth Campaign</i>, JANES 49/1: 15, Parpola Toponyms: 88, 303, Bagg RGTC 7 3/1: 148–149 (BÄ«t-SangibĹ«ti 1), Helsinki Atlas: 16, 30 (SangibĹ«tu (2), map 11 B2)" +236,"BÄ«t-TÄbti","BÄ«t-TÄbti, Dašt-e KavÄ«r",2,"–","–","–","region","–","Helsinki Atlas: 7" +237,"BÄ«t-ZamÄni","BÄ«t-ZamÄni, Ä€midu, AmÄ“du, Amidu, Amidi, Amida, Amedu, Ä€mid, Diyarbakir, Diyarbakır",1,"–","–","–","province","Turkey","Helsinki Atlas: 8 (map 3 C2)" +240,"BÄ«t-Zualza","BÄ«t-Zualza, BÄ«t-Zualzaš",3,"–","–","KUR.É-zu-al-za, KUR.É-zu-al-za-áš","territory","Iran, BÄ«t-SangibĹ«ti (?)","Bagg RGTC 7 3/1: 157–158, Helsinki Atlas: 8 (map 11 C2)" +239,"BÄ«t-ZÄ«zĂŞ","BÄ«t-ZÄ«zĂŞ","–","–","–","–","town","GĹ«zÄna","Bagg RGTC 7 2/1: 123/–124, PNA 2/2: 753" +238,"BÄ«t-zitti","BÄ«t-zitti, BÄ«t-Zitti, ZaitÄ, ZeitÄ, زيتا","–","33.5025","35.40028","URU.É-zi-it-ti, URU.É-zi-it-tĂş","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 54–55" +234,"BÄ«t-Ĺ abÄia","BÄ«t-Ĺ abÄia",3,"34.46333","41.5045","–","town","–","Helsinki Atlas: 7 (map 9 D2)" +235,"BÄ«t-Ĺ ilÄni","BÄ«t-Ĺ ilÄni, BÄ«t-SilÄni, Ĺ ilÄni","–","–","–","KUR.É-msi-la-a-ni, KUR.É-ši-la-a-ni, KUR.É-<sup>m</sup>ši-la-a-ni, <sup>m</sup>ši-la-a-ni, KUR.É-<sup>m</sup>šil-la-na","country, territory, tribe","Southern Babylonia","–" +233,"BÄ«t-ša-muḫḫi-Äli","BÄ«t-ša-muḫḫi-Äli, BÄ«tu-ša-muḫḫi-Äli","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/1: 119" +220,"BÄ«t-ḪalupĂŞ","BÄ«t-ḪalupĂŞ",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 9 C1)" +221,"BÄ«t-Ḫamban","BÄ«t-Ḫamban, Cambadene",2,"–","–","–","territory","–","Helsinki Atlas: 7 (map 11 C2)" +222,"BÄ«t-ḪazaĘľil","BÄ«t-ḪazaĘľil, Dimašqa, Damascus",1,"–","–","–","country","–","Helsinki Atlas: 7 (map 8 B3)" +223,"BÄ«t-ḪumrĂ®","BÄ«t-ḪumrĂ®, Israel, byt Ężmry, BÄ«t-Ḫumria",1,"–","–","–","country","Israel","Helsinki Atlas: 7 (map 7 C4)" +224,"BÄ«t-ḪurÄpĂ®","BÄ«t-ḪurÄpĂ®, BÄ«t-ḪurÄbĂ®","–","–","–","URU.É—ḫu-ra-pi-i, URU.É—ḫu-ra-bi-i","town","Central Assyria, Nineveh province (?)","Bagg RGTC 7 2/1: 115" +232,"BÄ«t-ṢupĹ«ri","BÄ«t-ṢupĹ«ri, BÄ«t-Ṣupuri, bt ṣpr, đ¤đ¤• đ¤‘đ¤đ¤“‎, Ornithopolis, OrmithĹŤnpolis, Ornithon Polis, á˝Ďνίθων πόλις, Tell BurÄq (?), Tall al-BurÄq (?), ĘżAdlĹ«n (?), عدلŮن (?), ĘżAin Ṣaufar (?), عين صŮŮر (?), ṢfÄrÄ«ya/Ṣfaray/Bṣfaray (?), صŮاراي (?), MazraĘżat BṣaffĹ«r (?), مزرعة بصŮŮ‘Ůر (?)",4,"33.55528","35.49389","URU.É-ṣu-pu-ri, URU.É-<sup>m</sup>ṣu-pu-ri, bt ṣpr, đ¤đ¤• đ¤‘đ¤đ¤“‎","town","Phoenicia, ṢīdĹ«nu, Lebanon","Helsinki Atlas: 7 (map 8 A3), Bagg RGTC 7 1: 53–54, <a href=https://pleiades.stoa.org/places/678000>Pleiades: â€Ad Nonum’/Ornithon Polis?</a>" +244,"BĹ«ia","BĹ«ia, Cham Kizil",2,"–","–","–","river","–","Helsinki Atlas: 7 (map 11 B1)" +247,"BĹ«r-marʾīna","BĹ«r-marʾīna, BurmarĘľina, Burmarina, brmrn, đˇđˇ“đˇŚđˇ“đˇŤ, MarinÄ, Marinâ ša BÄ«t-Adini, MarÄ«na, MarÄ«na ša šadĂŞ, Tell Ĺ iʾūḫ FawqÄni, Tell esh-Shiyukh Fawqani, Tell Shiukh Fawqani, Tall Ĺ ijūḫ FawqÄnÄ«, ŘŞŮ„ الشيŮŘ® ŮŮقاني",1,"36.78761","38.03595","URU.bur-mar-Ęľi-na, URU.ma-ri-na-a šá É-ma-di-ni, brmrn, đˇđˇ“đˇŚđˇ“đˇŤ","town","BÄ«t-Adini, Syria","Helsinki Atlas: 8 (map 3 B4)" +251,"BĹ«ru-WÄ“r","BĹ«ru-WÄ“r (?), Buresa (?)","–","–","–","URU.bu-ru-e-er (?), URU.bu-ru-e-sa (?)","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 129" +249,"BĹ«rÄte","BĹ«rÄte, BĹ«rÄti, BurÄti, Burate, Burati","–","–","–","URU.bu-ra-a-te","town","ḪÄbĹ«r triangle","Bagg RGTC 7 1: 127 (BĹ«rÄte 1), Zadok 1995: 237, 3.6.4.5" +250,"BĹ«rÄti","BĹ«rÄte, BĹ«rÄti, BurÄti, Burate, Burati","–","–","–","URU.bu-ra-a-ti, URU.bu-ra-a-te, URU.ḪAL.ṢU","town","Elam","Bagg RGTC 7 1: 127 (BĹ«rÄte 2), Parpola Toponyms: 95 (BurÄti)" +259,"Daban","Daban, RĹ«dḫÄne-ye Gangir",3,"–","–","–","river","–","Helsinki Atlas: 8 (map 11 A3)" +261,"Dadiualla","Dadiualla, Dadi-ualla, Tall al-Ḥusainiyeh, HusaynÄ«yah, Řسينية","–","36.68203","43.24538","URU.da-di-Ăş-al-la","town","Central Assyria, TalmĹ«sa province","Bagg RGTC 7 2/1: 131" +262,"Daduni","Daduni","–","–","–","KUR.da-du-ni","mountain (?), territory (?)","Zabban","Bagg RGTC 7 2/1: 131" +1067,"Daiaeni","Daiaeni, Dajaeni, DaiÄ“nu, DaiÄ“ni, DajÄ“ni, Diaueḫe, Taochoi, Tauchoi, Τάοχοι","–","40.5","41.5","KUR.da-ia-a-ni, KUR.da-ia-e-ni, KUR.da-ia-ni, URU.da-ia-e-ni, KUR.da-ie-ni","territory","NaĘľiri, Uraráąu, Turkey","Bagg RGTC 7 3/1: 167–168, <a href=https://pleiades.stoa.org/places/857343 >Pleiades: Taochoi</a>, <a href=https://books.openedition.org/cdf/4439>MTT I/2</a>" +263,"Daiašeti","Daiašeti, Dajašeti, Daiašetu, Sitha (?), ruins of al-Aswad (?)","–","33.51151","42.80401","URU.da-ia-še-ti","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 1: 132, <a href=https://pleiades.stoa.org/places/894008>Pleiades: Idu/Diacira/Hit</a>" +264,"Dalaimme","Dalaimme, DalhĹ«n, Dalhoun, دلهŮن","–","33.62667","35.4675","URU.da-la-im-me","town","Phoenicia, ṢīdĹ«nu, Lebanon","Bagg RGTC 7 1: 57–58" +265,"Damdammusa","Damdammusa, Damdammusu, Damdammusi, Dandammusu, Kaziktepe (?), Pornak (?), Sardebar (?), Sardeoua (?), TauĹźantepe (?), Aktepe (?)",4,"37.72463","40.56995","URU.da-am-da-mu-sa, URU.dam<sup>am</sup>-dam-mu-si, URU.dam<sup>am</sup>-dam-mu-su, URU.dam-dam-mu-sa","city","Nirbu, BÄ«t-ZamÄni, Turkey","Bagg RGTC 7 2/1: 133–134, Bagg RGTC 7 2/2: 740 (Aktepe, Dandammusu), 748 (Pornak, Damdammusu, Sinabu), <a href=https://pleiades.stoa.org/places/874681>Pleiades: Sardeoua/â€Sardebar’</a>" +266,"Dan","Tell Qadi","–","33.2483851722403","35.65224970650611","–","–","–","–" +268,"Danabu","Danab, Dababu, Din<sup>e</sup>hÄbâ, Dinhabah, ×“Ö´ÖĽ× Ö°×”Ö¸×‘Ö¸×”, Danaba, Danova (?), Ḏunaiba (?), ṢaidnÄyÄ (?), صيدنايا (?), Ḏunaiba (?), دنيبة (?), Tall Ä€bil, Abila Dekapoleos/Seleukeia, QuwailibÄ«, Ḏunaiba, ذنيبّة",3,"32.68241","35.8689","KUR.da-na-bi, URU.da-an-a-bi, URU.da-na-bi, URU.da-na-bu","town, fortified city","Dimašqa, Syria (?), Jordan (?)","Helsinki Atlas: 8 (map 8 A3), Bagg RGTC 7 1: 59–60, <a href=https://pleiades.stoa.org/places/668236>Pleiades: â€Danova’</a>, <a href=https://pleiades.stoa.org/places/677992>Pleiades: Abila Dekapoleos/Seleukeia</a>" +1066,"Daqalu","Daqalu, Daqala, DagalÄ, Til-Daqalu, Diqlâ, דִּקְלָה, Beth Deqla, Bayt-Dagalâ","–","31.77163","45.20362","URU.da-qa-la, URU.da-qa-lu","fortified city","BÄ«t-AmukkÄni, Babylonia, Iraq","Bagg RGTC 7 3/1: 172, Zadok (1985), <i>Zur Geographie Babyloniens während des sargonidischen, chaldäischen, achämenidischen und hellenistischen Zeitalters</i>, Die Welt des Orients 16, p. 60" +270,"Dawali","Assyrian name unknown, Dawali, DawÄlÄ«, Ad-DawÄlÄ«, Ad DawÄlÄ«","–","34.45357","41.99118","–","–","Sūḫu, Iraq","RIMB 2: 309" +271,"Dedan","Dedan (?)",4,"26.66642322233715","37.91158927555229","–","–","–","–" +273,"Diati","Diati","–","–","–","–","town","Assyria","RGTC 7 2/1: 140–141" +274,"Diban","Diban","–","31.50182","35.77646","–","–","–","–" +275,"Dibar (mountain)","Dibar, Äžabal ĘżAbd al-ĘżAzÄ«z",2,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 3 D4)" +276,"DibirÄti","DibirÄti","–","–","–","–","town","Arrapḫa province (?)","RGTC 7 2/1: 141" +277,"Diglat","Diglat, Idiglat, Tigris, DiÄźla",1,"–","–","–","river","–","Helsinki Atlas: 8 (map 10 C2)" +278,"Dilbat","Dilbat, Tell Dulaim, Tell Dailam, Deilam",1,"32.29571615001174","44.46622078649037","–","city","–","Helsinki Atlas: 8 (map 10 D4)" +280,"Dimašqa","Dimašqa, Ĺ a-imÄ“rīšu, Aram, Damascus, Dimašq",1,"33.51012","36.30921","–","prov. capital","Syria","Helsinki Atlas: 8 (map 8 B3)" +281,"Dinanu","Dinanu, dynn, đˇđˇ‰đˇŤđˇŤ, Tall AbĹ« Danna, Tell Abu Danne, AbĹ« DÄnÄ, أب٠دانا, AbĹ« Z̧annah, أب٠ظنة","–","36.1843","37.45152","URU.di-na-nu, đˇđˇ‰đˇŤđˇŤ","city","BÄ«t-AgĹ«si","Bagg RGTC 7 1: 62" +282,"Diniktum","Diniktum (?)",4,"32.8297802583831","45.34726149800385","–","–","–","–" +283,"DiqĹ«qÄ«na","DiqĹ«qÄ«na, DiqukÄ«na, Diqukina, ṬÄwĹ«q (?), DaqĹ«q (?), DaqĹ«qÄ (?), داقŮŮ‚","–","35.13923","44.44907","URU.di-qu-qi-na, KUR.di-qu-ki-na, URU.di-qu-qi-na-a-a","town","Laḫīru (1) (?), Iraq","Bagg, RGTC 7 2/1: 143–144, " +284,"Dohuk","Dohuk, Dohok","–","36.86249","42.91942","–","monument","Iraq","–" +285,"Dummutu","Dummutu, Dummete, Dummetu, ḤalabÄ«ya, Řلبية, Tall Ḏimme (?)",4,"35.68683","39.82767","URU.du-um-me-te, URU.du-um-mu-tĂş","town","BÄ«t-Adini","Helsinki Atlas: 8 (map 3 C5), Bagg RGTC 7 1: 62–63, <a href=https://pleiades.stoa.org/places/894185>Pleiades: Zenobia</a>" +287,"Dunnu-ša-Uzibi","Dunnu-ša-Uzibi, Giricano","–","37.81718029603009","40.75010515326059","–","–","–","–" +286,"DunnÄte","DunnÄte","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/1: 146" +313,"Duʾūa","Duʾūa, DuĘľa, DuĘľua","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/1: 164" +260,"DÄbigu","DÄbigu, Dabigu, DÄbiq, Adabiq, Adabig, Dabekon, Dabigu, Dabekov, Tell Dabiq, Tall DÄbiq, ŘŞŮ„ دابق",1,"36.53976","37.26849","URU.da-bi-gi, URU.da-bi-gu","town, fortified city","BÄ«t-Adini, Syria","Helsinki Atlas: 8 (map 2 D4), Bagg RGTC 7 1: 57 (Dabigu), <a href=https://pleiades.stoa.org/places/727743778>Pleiades: Dabigu</a>" +267,"DÄna","DÄna, ad-DÄna, ad-DÄnÄ, الدانا",2,"36.21254","36.76998","UU.da-a-na","town","Syria, Unqi (?), ḪamÄt (?)","Helsinki Atlas: 8 (map 2 C4), Bagg RGTC 7 1: 58" +269,"DÄri-abu (place)","DÄri-abu","–","–","–","URU.dĂ -ri-AD","town","Central Assyria (?)","Bagg RGTC 7 2/1: 136" +272,"DÄ“ru","DÄ“ru, DÄ“r, Der, DĂ®r, BÄ«t-DÄ“rÄja (?), BÄ«t-DÄ“rÄia (?), Tell ĘżAgar (near Badra), Tell Aqar, Tall al-ĘżAqar, بتل عقار, Badra, بدرة",1,"33.12467","45.93132","BĂ€D.KI, BĂ€D.AN.KI, de-e-ri, de-ri, KUR.de-e-ri, URU.BĂ€D, URU.BĂ€D.AN.KI, URU.de-e-ri, URU.de-eĘľ-ri, URU.de-ri, URU.de-ru","prov. capital, city, province","Iraq, DÄ“ru province","Helsinki Atlas: 8 (map 11 A3), Bagg RGTC 7 2/1: 138–140, <a href=https://pleiades.stoa.org/places/903013>Pleiades: Deru/Beth Daraya/Badra</a>" +288,"DĹ«r-AbīḫÄra","DĹ«r-AbīḫÄra, Ĺ aiḫ YaĘżqĹ«b al-YĹ«suf",4,"32.75","46.25","–","town","–","Helsinki Atlas: 8 (map 11 B4)" +289,"DĹ«r-Aššur","DĹ«r-Aššur, DĹ«r-Aššūr, Dur-Aššur, Atlila, Yasim Tepe (?), Tepe YÄsÄ«n (?), Yasin Teppe (?), Bakr Ä€wÄ (?), Bakr Awa (?), قرية بŮراŮه, بکراŮه, بەکراŮŰ•",4,"35.2216","45.9403","URU.at-li-la, URU.BĂ€D-aš-šur","prov. capital","Zamua, Iraq, Kurdistan","Bagg RGTC 7 3/1: 74–75 (Atlila), 186 (DĹ«r-Aššūr 2), Helsinki Atlas: 8 (map 11 A1)" +291,"DĹ«r-Aššur-ketti-lēṣir","DĹ«r-Aššūr-ketti-lēṣir, Dur-Aššur-ketti-lešer, Tell BdÄ“ri, Tell Bderi",1,"36.38745469204624","40.8138848265138","–","town","–","Helsinki Atlas: 8 (map 3 D4)" +290,"DĹ«r-Aššūr","DĹ«r-Aššūr, DĹ«r-Aššur","–","–","–","URU.BĂ€D-aš-šur","town","Iraq, east ǦazÄ«ra","Bagg RGTC 7 2/1: 148 (DĹ«r-Aššur 1)" +293,"DĹ«r-BalÄáąi","DĹ«r-BalÄáąi, DĹ«r-balÄáąi",4,"33.25","43.83333","–","town","–","Helsinki Atlas: 8 (map 10 C3)" +294,"DĹ«r-BalīḫÄia","DĹ«r-BalīḫÄia",4,"32.33333","45.56666","–","city","–","Helsinki Atlas: 8 (map 11 A4)" +296,"DĹ«r-BÄ“l-ilÄʾī","DĹ«r-BÄ“l-ilÄʾī, DĹ«r-BÄ“l-ilÄja","–","–","–","URU.BĂ€D-EN-DINGIR-a-a, URU.BĂ€D-<sup>m</sup>EN-DINGIR-a-a","town","Laḫīru (?)","Bagg RGTC 7 2/1: 150" +295,"DĹ«r-BÄ“l-ḪarrÄn-bÄ“lÄ«-uṣur","DĹ«r-BÄ“l-ḪarrÄn-bÄ“lÄ«-uṣur, Tell ĘżAbáąa",1,"35.9095","42.55683","–","town","–","Helsinki Atlas: 8 (map 4 B6)" +297,"DĹ«r-IakÄ«n","DĹ«r-IakÄ«n, Aginis, AmpÄ“",4,"31.5","47.25","–","city","–","Helsinki Atlas: 8 (map 16 C2)" +298,"DĹ«r-Illil","DĹ«r-Illil, DĹ«r-Enlil","–","–","–","–","fortress","Assyria, border with Mannea","–" +299,"DĹ«r-Katlimmu","DĹ«r-Katlimmu, DĹ«r-katlimmu, Dur-Katlimmu, DĹ«r-duklimmu, DĹ«r-aduklimmu, Magdala, Tell Šēḫ Ḥamad, Tell Sheikh Hamad, Dur-Katlimmu",1,"35.64538","40.74455","URU.BĂ€D-kat-lim-mu, URU.BĂ€D-a-du-ku-1-lim, URU.BĂ€D-a-duk-1-lim, URU.BĂ€D-duk-1-lim, URU.BĂ€D-kat-li-me","capital, city","LÄqĂŞ","Helsinki Atlas: 8 (map 9 C1), Bagg RGTC 7 1: 152–153" +300,"DĹ«r-Kurigalzu","DĹ«r-Kurigalzu, ĘżAqarqĹ«f, Aqar Quf",1,"33.35466","44.2008","–","city","–","Helsinki Atlas: 8 (map 10 D3)" +301,"DĹ«r-LadÄ«ni","Tell ḪÄlid",3,"32.33333","44.66666","–","city","–","Helsinki Atlas: 8 (map 10 D4)" +302,"DĹ«r-NanÄia","DĹ«r-NanÄia, DĹ«r-Nanâ, DĹ«r-NanÄja, Beonan, Bethonan","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/1: 154–155" +303,"DĹ«r-Papsukkal","DĹ«r-Papsukkal, MandalÄ«",4,"33.74939","45.5538","–","city","–","Helsinki Atlas: 8 (map 11 A3)" +304,"DĹ«r-Samsuiluna","Dur-Samsuiluna, Khafaja B","–","33.35091903696783","44.55058886950584","–","–","–","–" +305,"DĹ«r-SĂ®n-aḫḫē-erÄ«ba","DĹ«r-SĂ®n-aḫḫē-erÄ«ba, DĹ«r-SĂ®n-aḫḫē-erÄ«ba eššu, Aliḫu","–","–","–","URU.BĂ€D-<sup>m</sup>30-PAB.MEĹ -SU GIBIL, URU.a-li-ḫu, URU.a-li-ḫi","city","Assyria","Radner (2006), RlA 11: 64" +310,"DĹ«r-UndÄsi","DĹ«r-UndÄsi, Dur-Untaš, DĹ«r-Untaš, Chogha Zanbil, Côġa ZanbÄ«l",1,"32.00848520889885","48.52139171893702","–","city","–","Helsinki Atlas: 8 (map 17 A2)" +292,"DĹ«r-atÄnÄte","DĹ«r-atÄnÄte, DĹ«r-AtÄnÄte, Tawakkal",4,"35.70833","44.87683","–","town","–","Helsinki Atlas: 8 (map 10 D1), Bagg RGTC 7 2/1: 149." +309,"DĹ«r-tÄlitte","DĹ«r-tÄlitte, DĹ«r-TalÄ«ti, DĹ«r-tÄliti",3,"35.52667","44.8395","–","town","Central Assyria, Arzūḫina province","Helsinki Atlas: 8 (DĹ«r-Taliti, map 10 D1), RGTC 7 2/1: 162–163, RGTC 7 2/2: 420" +306,"DĹ«r-Ĺ amšī-Adad","Dur-Ĺ amši-Adad, Qal'at Halwanji (?)",4,"36.64406619565289","37.90457984690173","–","–","–","–" +308,"DĹ«r-Ĺ arrukku","DĹ«r-Ĺ arrukku",3,"33.25","44.58333","–","prov. capital","–","Helsinki Atlas: 8 (map 10 D3)" +307,"DĹ«r-Ĺ arrukÄ«n","DĹ«r-Ĺ arrukÄ«n, Dur-Ĺ arrukin, Dur-Ĺ arruken, Khorsabad, ḪorsÄbÄd, Khursabad, Ř®Ůرسباط, ŘŻŮر شرŮŮين",1,"36.50365","43.23367","BĂ€D-LUGAL-GI.NA, BĂ€D-LUGAL-GI.NA.KI, BĂ€D-MAN-GIN, KUR.BĂ€D-MAN-GIN, URU.BĂ€D-LUGAL-GI, URU.BĂ€D-LUGAL-i-ku, URU.BĂ€D-LUGAL-Ăş-kin, URU.BĂ€D-MAN-GI.NA, URU.BĂ€D-MAN-GIN, URU.BĂ€D-mLUGAL-GI.NA, URU.BĂ€D-mLUGAL-GIN, URU.BĂ€D-mMAN-GI.NA, URU.BĂ€D-mMAN-GIN, URU.BĂ€D-mMAN-GIN.NA","capital, city","Assyria","Helsinki Atlas: 8 (map 4 C5)" +311,"DĹ«ru","DĹ«ru, Anaz",1,"37.14","39.027","–","town","–","Helsinki Atlas: 8 (map 3 C3)" +312,"DĹ«Ęľru","DĹ«Ęľru, DuĘľru, Dor, Tel Dor, DĂ´r, Dora, Khirbet el-Burj",1,"32.61645","34.91612","–","prov. capital","–","Helsinki Atlas: 8 (map 7 C4), <a href=https://sketchfab.com/3d-models/tel-dor-biblical-port-israel-223035f60f1a4787b49a0fe479f5692f>3D model</a>" +315,"Eber nÄri","Eber nÄri, Aber Nahara",1,"–","–","–","region","–","Helsinki Atlas: 8 (map 2 C5)" +314,"Ebeḫ","Äžabal ḤamrÄ«n",2,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 10 C2)" +316,"Ebla","Ebla, Tell Mardikh","–","35.79888167626015","36.79830790607152","–","–","–","–" +317,"EbĘľala","EbĘľala, Ebla, Ibla, EbĘľal",3,"35.16666","44.16666","–","town","–","Helsinki Atlas: 8 (map 10 D1)" +318,"Edimgalkalama","Edimgalkalama, House, Great Bond of the Land, bÄ«t-IštarÄn","–","33.10945","45.94789","Ă©-dim-gal-kalam-ma, É.DIM.GAL.KALAM.MA, É-AN.GAL","temple","DÄ“ru, DÄ“ru province, Iraq","George 1993, House Most High: 76, <a href=https://pleiades.stoa.org/places/667048536>Pleiades: Edimgalkalama</a>" +319,"EdiĘľil","ldalion, Dali",1,"35.01654738846563","33.42360094234276","–","city","–","Helsinki Atlas: 8 (map 7 B1)" +320,"Edurḫenunna","Edurḫenunna, Adad Temple, House, Abode of Plenty","–","–","–","É.DĂšR.ḪÉ.NUN.NA","temple","Assyria, Aššur, Kurbail","George 1993, House Most High: 80–81" +323,"Ekal mÄšarti of Kalḫu","ekal mÄšarti Kalḫa, Review Palace of Calah, ekal mÄšarti of Kalḫu, Fort Shalmaneser",1,"36.09408","43.34666","–","palace, armory, arsenal, review palace","Assyria, Kalḫu","Helsinki Atlas: 8 (map 4 C5)" +324,"Ekal mÄšarti of Nineveh","Review Palace of Nineveh, Tell Nebi Yunus","–","36.3480377418","43.1609489586","–","review palace, fortress, palace","Nineveh province","–" +325,"EkallÄti","EkallÄti, EkallÄte, TulĹ«l Haikal",3,"35.56583","43.253","–","town","–","Helsinki Atlas: 8 (map 10 C1)" +326,"Ekalte","Ekalte, Tell Munbaqa","–","36.22053470854134","38.13183949295749","–","–","–","–" +327,"El-Ghâb","el-Ghab, el-Ghâb, al-Ghab","–","35.587","36.356","–","monument","Syria","<a href=https://pleiades.stoa.org/places/413309735>Pleiades: Al-Ghab</a>" +328,"Elamtu","Elam, Elamtu",1,"–","–","–","country, territory","–","Helsinki Atlas: 8 (map 17 A1)" +329,"Elephantine","Elephantine, Geziret Aswan","–","24.08494","32.88581","–",",island","Egypt","<a href=https://www.dainst.org/en/projekt/-/project-display/25953>Elephantine Reports Online</a>" +330,"Ellipi","Ellipi",1,"–","–","–","country","–","Helsinki Atlas: 8 (map 11 B3)" +332,"Ellitarbi","Ellitarbi, el-AtÄrib, Litarba, TÄ“rib",1,"36.129","36.85766","–","town","–","Helsinki Atlas: 8 (map 2 C4)" +331,"Ellišu","Ellišu, Ullassa, Tripoli, Tripolis",3,"34.45218677501611","35.81494409315681","–","town","–","Helsinki Atlas: 8 (map 8 A2)" +333,"Elumu","Elumu","–","–","–","–","village","GargamÄ«s, Syria","PNA 1/1: 4" +334,"Emar","EmarBarbalissus, Tell Meskene","–","35.9878","38.11287","–","–","–","<a href=https://web.archive.org/web/20060925230158/http://www.uni-tuebingen.de/emar/en/index.html>Emar Website</a>" +335,"Emesa","Emesa, Hims","–","34.72354534277252","36.71452867140398","–","–","–","–" +336,"Enu-Ĺ asĂ®","Enu-Ĺ asĂ®, Tell 'Ayn Sharif (?)",4,"33.8916086298232","36.02661717170561","–","–","–","–" +337,"Enzite","Alzi, Ilzi, Alši, Alze, Enzite, Enzi, Alzu, ElâsiÄź, AnzitÄ“nÄ“",2,"38.49648","39.2199","KUR.al-zi, KUR.en-zi","region, territory","Uraráąu","Helsinki Atlas: 8 (map 3 B2), Bagg RGTC 7 2/1: 40–41, <a href=https://pleiades.stoa.org/places/874328>Pleiades: Anzitene</a>" +338,"Erebuni","Erebuni, Arin-berd","–","40.14085010986663","44.53744103455104","–","–","–","–" +339,"Eridu","Eridu, AbĹ« Ĺ aḥrain, Tell Abu Shahrain",1,"30.81686971277664","45.99672447851623","–","city","–","Helsinki Atlas: 8 (map 16 B3)" +340,"EritÄ«a","ErtÄ«a",3,"–","–","–","mountain","–","Helsinki Atlas: 8 (map 4 D3)" +341,"Erudi","Erudi","–","–","–","–","town","Central Assyria","RGTC 7 2/1: 172" +342,"Esagil","Esagila, Esagil, Esaggil, EsaĹ‹il","–","32.53379","44.42149","É.SAG.ĂŤL, Ă©-sag-gĂl, eâ‚‚-saĹ‹-ilâ‚‚-la","temple","Babylonia, Babylon","–" +343,"Ešarra","Ešarra, Temple of Aššur","–","35.46081","43.26293","É.Ĺ ĂR.RA, đ’‚Ťđ’Šąđ’ŠŹ, É.Ĺ ĂR.RA.KI, đ’‚Ťđ’Šąđ’ŠŹđ’† ","temple","Assyria","–" +344,"Ešnunna","Ešnunna, Tell Asmar D244","–","33.48313061963756","44.72850137066683","–","–","–","–" +321,"Eǧil","Eǧil, Egil","–","38.25791","40.08115","–","monument","Turkey","Helsinki Atlas: 8 (map 3 D2)" +322,"Eḫiman","Eḫiman","–","–","–","–","town","ḪÄbĹ«r triangle","RGTC 7 2/1: 166" +345,"Faida","Faida, Faidah (Ůايدة), Fayda (Ůايضة)","–","36.757628","42.935313","–","monument","Assyria, Iraq","Helsinki Atlas: 8 (map 4 B5), <a href=https://qui.uniud.it/notizieEventi/ricerca-e-innovazione/italian-and-kurdish-archaeologists-on-the-trail-of-the-assyrian-empire/>Italian and Kurdish Archaeologists on the trail of the Assyrian Empire</a>" +347,"GabbutĹ«nu","GibbetĂ´n, RaĘľs AbÄ« ḤamÄ«d",1,"31.83333","34.83333","–","town","–","Helsinki Atlas: 8 (map 7 C5)" +346,"GabbÄru-ibni","GabbÄru-ibni, GabbÄri-ibni, Ä€l-GabbÄru-ibni, Äl GabbÄru-ibni, Gabbari-ibni, Ä€l-gabbÄri-bÄnĂ®, SĹ«r ÄžurĘża, Sur Jur'eh, SĹ«r JarĘżÄ, Sur Jureh",3,"34.30549","42.20724","–","town","Sūḫu","Helsinki Atlas: 8 (map 10 B2)" +1069,"GadisĂŞ","GadisĂŞ","–","–","–","URU.ga-di-se-e","town","Syria","Bagg RGTC 7 2/1: 176" +348,"GambĹ«lu","GambĹ«lu",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 11 B4)" +349,"GannanÄti","GannanÄti, GannanÄte,Qaṣr-e Ĺ Ä«rÄ«n",4,"34.51667","45.58433","–","town","–","Helsinki Atlas: 9 (map 11 A2)" +350,"GargamÄ«s","GargamÄ«s, Karkemish, Karchemiš, Karkemiš, Carchemish, KarkamiĹź, krkymyš, Djerablis, ÄžarablĹ«s, جرابلس",1,"36.82891","38.01622","–","prov. capital","–","Helsinki Atlas: 9 (map 3 A4), <a href=https://www.orientlab.net/3d-kark>Karkemish 3D Visualization Project</a>" +351,"Gasur","Gasur, Nuzi, Yorgan Teppe","–","35.36956130794378","44.2548782342147","–","–","–","–" +352,"Gath","Gimtu, Gat, Gath, Tel es-SafÄ«","–","31.70286793150219","34.84939088642997","–","–","–","–" +353,"Gazru","Gazru, Gezer, Gazara, Tell Jazar",1,"31.85958","34.92048","–","city","–","Helsinki Atlas: 9 (map 7 C5)" +354,"Gazziura","Gazziura, Turhal","–","40.38836556561288","36.09263300772279","–","–","–","–" +355,"Gerasa","Gerasa, Jerash","–","32.28028700581027","35.89338726699758","–","–","–","–" +356,"Gibeon","Gibeon, El-Jib","–","31.84696414567557","35.18560843989516","–","–","–","–" +357,"GibĘżat Ĺ aul","GibĘżat Ĺ aul, GibĘżat Shaul, Givat Shaul, Givat Ĺ aul, Tell el-Ful","–","31.82214335732264","35.23111358574556","–","–","–","–" +358,"Gidira","Gader, Gadara, Gidira, Pompeia, Umm Qeis",1,"32.65692","35.67797","–","city","–","Helsinki Atlas: 9 (map 8 A4)" +359,"GilzÄnu","GilzÄnu, Gelišin Plain",2,"–","–","–","country","–","Helsinki Atlas: 9 (map 4 E5)" +360,"GilĘľad","GilĘżad, Gilead, Ḫirbat ÄžalĘżad",1,"32.08333","35.75","–","town","–","Helsinki Atlas: 9 (map 7 D4)" +361,"Gimir","Gimir, Gomer, Cimmerians, Caucasus",1,"–","–","LĂš.gi-mir-ra-a.a","tribe","–","–" +362,"Gimtu","Gimtu, Gat, Gath, Tel es-SafÄ«",2,"31.60883","34.77","–","city","–","Helsinki Atlas: 9 (map 7 C5)" +363,"Gingiliniš","Gingiliniš, Tepe Chenchi",2,"36.48211","43.22937","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +364,"Girmua","Girmua, ÄžirwÄn, Jerwan",2,"36.659","43.35383","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +365,"Girsu","Girsu, Tello","–","31.55980384457702","46.17866802939608","–","–","–","–" +366,"Girumu","Girumu, Tell Barghuthiat / Ishan Khilala K94","–","32.7025685157628","44.79553579596829","–","–","–","–" +367,"Gizilbunda","Gizilbunda",2,"–","–","–","territory","–","Helsinki Atlas: 9 (map 11 C1)" +369,"Gordion","Gordion, YassihĂĽyĂĽk","–","39.65698267259338","31.98669023055001","–","–","–","–" +370,"Gubal","Gubal, Äžabla, Gibala, GibaĘľla, Gubla, Gabala, Tell Tuweini, Jableh",2,"35.37182694071063","35.93723497454413","–","town","–","Helsinki Atlas: 9 (map 8 A1)" +371,"Gubla","Gubla,Byblos, Äžubail, Gebal",1,"34.11877","35.64464","–","capital","–","Helsinki Atlas: 9 (map 8 A2)" +372,"Gurasimmu","Gurasimmu",2,"–","–","–","tribe","–","Helsinki Atlas: 9 (map 16 A3)" +374,"Gurgum","Gurgum, MarqÄsa, Marqasi, Marqas",2,"–","–","–","territory, country, province","Turkey, Assyria","Helsinki Atlas: 9 (map 2 C3)" +375,"Gurru","Gurru, GurrÄja, Qamurra","–","–","–","gur-ri, gur-ru, LĂš.gur-ru, LĂš.qa-mur-ra, KUR.gur-ra-a-a, LĂš.gur-a-a, LĂš.gur-ra-a-a, LĂš.gur-ra-a-a-e-a, LĂš.qur-mur-ra-a-a","tribe","Iraq (?)","Bagg RGTC 7 2/1: 186–187" +373,"GurÄ“te","GurÄ“te, GurÄ“tu, KurdÄ, Kurda, Tell Aswad",3,"36.58317","40.88117","URU.gu-re-e-te","town","ḪÄbĹ«r area","Helsinki Atlas: 9 (map 3 D4), Bagg RGTC 7 1: 185" +368,"GÄ«Ęľa","GiĘľ, GÄ«Ęľa, GÄ«ya, Porphyreon Polis",1,"33.59717","35.41433","–","town","–","Helsinki Atlas: 9 (map 8 A3)" +376,"GĹ«zÄna","Guzana, GĂ´zÄn, gwzn, Gizania, Tell Ḥalaf, Tell Halaf",1,"36.82619","40.0395","–","prov. capital","–","Helsinki Atlas: 9 (map 3 D4)" +377,"Ha-Ma’apil","Ha-Ma’apil, Kibbutz Hama’apil, HaMa'apil","–","32.37776","34.98405","–","monument","Israel","<a href=https://pleiades.stoa.org/places/189103682>Pleiades: HaMa'apil</a>" +422,"Hatra","el-Hadhar","–","35.58702654572083","42.71855218530546","–","–","–","–" +418,"Hašabu","Ḫašabu, Hašabu, Tell 'Ayn 'Ushba, Tell Hashba (?)",4,"33.94699430482985","36.05384272993871","–","–","–","–" +437,"Hilla","Hilla, Hillah, Al-Hilla, Al-Hillah, الŘŮ„Ř©","–","32.47362","44.42519","–","–","Iraq, Babylonia","–" +461,"IabrĹ«du","IabrĹ«du, JabrĹ«du, Jabrudu, YabrĹ«d, Yabrud",1,"33.96686712056401","36.66004361025661","–","town","–","Helsinki Atlas: 10 (map 8 B3)" +462,"Iadaʾî","Iadaʾî, Jadaʾî, Yadaʾî","–","–","–","–","town","Izalla","Bagg, RGTC 7 2/1: 267, Zadok, The Ethno-Linguistic character of the Jezireh and adjancent regions in the 9th–7th centuries, in Liverani (1995): 271, 6.3.6, Kessler, Unterzchungen zur historischen Topografie Nordmesopotamiens nach keilschriftlichen Quellen des 1. Jahrtausends v Chr., TAVO Beih, B 26 (1980): 47 Anm. 205" +463,"Iadburu","Iadburu",2,"–","–","–","territory","–","Helsinki Atlas: 10 (map 11 C4)" +464,"IadnÄna","IadnÄna, Cyprus",1,"–","–","–","region, island","Levant","Helsinki Atlas: 10 (map 7 A1)" +467,"Iamutbal","Iamutbal, Jamutbal, Jamutbalu",2,"–","–","–","region, territory","–","Helsinki Atlas: 10 (map 11 A3)" +468,"IappĂ»","JappĂ», Ioppe, Yafa, Yafo, Jaffa",1,"32.05406","34.75264","–","city","–","Helsinki Atlas: 10 (map 7 C4), <a href=http://jaffa.nelc.ucla.edu/>The Jaffa Cultural Heritage Project (JCHP)</a>" +469,"IasĹ«bu","IasĹ«bu, JasĹ«bu",2,"–","–","–","region","–","Helsinki Atlas: 10 (map 11 A3)" +470,"IasĹ«mu","IasĹ«mu, SĹ«mu, AisĹ«mas, AšūmÄ, KaracadaÄź",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 3 C3)" +472,"Iaʾūdu","Iaʾūdu, Jaʾūdu, YehĹ«dÄ, Judah",1,"–","–","–","country, territory","Israel","Helsinki Atlas: 10 (map 14 B2)" +465,"Iaḫariša","Jahariša, Iahariša, Tell Fray","–","35.88141078555107","38.38536367908736","–","–","–","–" +466,"Iaḫdik","Iaḫdik, Yahdik","–","–","–","URU.ia-aḫ-di-ik","city","Elam (?)","–" +471,"Iaáąbite","Iaáąbite, Jaáąbite, Yaáąbite, IĹŤtapata, Jotapata, Yodefat, Yodfat, Ḫirbat Ĺ ifÄt","–","32.836897","35.2736","–","city","Israel, Galilea","RGTC 7/1: 127" +473,"Ibatuni","Ibatuni","–","–","–","LĂš.i-ba-tĂş-na","ethnic","–","Parpola Toponyms: 171" +474,"Idide","Idide, Ä€b-e Dez, Hithite, Hudhud",2,"–","–","–","river","–","Helsinki Atlas: 10 (map 17 A1)" +475,"Idu","Idu, ÄŞdu, Ida, Satu Qala, Tall SÄtu Qala, SÄtĹ« QalÄ, سات٠قلا",1,"35.874","44.6965","URU.i-du, KUR.i-da-a-a, URU.i-da-a-a","town, fortress, region, country","Assyria","Bagg RGTC 7 2/1: 242, Parpola Toponyms: 72 (Ida, Idu), Helsinki Atlas: 10 (map 11 B1, (Idu, region))" +478,"Ilansura","Ilansura, Tell Farfara (?)",4,"36.82263255254318","41.33237455299481","–","–","–","–" +479,"Ilgie","Ilgie, IlgĂŞ","–","–","–","URU.il-gi-e","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 243" +482,"IlištamĘľu","Ilištam'u, Stamo (?)",4,"35.48439709459653","35.91601561510269","–","–","–","–" +483,"Illubru","Illubru, Ellibir, Olymbros, Lampron, Namrun",1,37,"34.66666","–","city","–","Helsinki Atlas: 10 (map 1 D4)" +480,"Ilḫini","Ilḫini","–","–","–","URU.il-ḫi-ni","town","GĹ«zÄna province","Bagg RGTC 7 2/1: 244" +484,"Imgur-Illil","Imgur-Illil, Imgur-Enlil, BalawÄt, Balawat",1,"36.22945","43.4038","–","town","–","Helsinki Atlas: 11 (map 4 C5)" +485,"Immiu","Immiu, AmyĹ«n, Ammiya",1,"34.29683","35.81866","–","city","–","Helsinki Atlas: 11 (map 8 A2)" +486,"Ingirâ","Ingirâ, Anchiale, Anchialeia",1,"36.84983","34.57233","–","city","–","Helsinki Atlas: 11 (map 1 D4)" +487,"Inimme","Inimme, en-NÄĘżima",1,"33.74316","35.4615","–","town","–","Helsinki Atlas: 11 (map 8 A3)" +488,"Innaia","Innaia, Qasemlua, Branduz çay","–","–","–","–","river","–","Helsinki Atlas: 11 (map 4 E4)" +489,"IrbĂ»","IrbĂ», Irbayu, IrbuÄja","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/1: 248–249" +490,"Irgilli","Irgilli, Tell Irjil (?)",4,"35.84856296472241","37.22541738884766","–","–","–","–" +1071,"Irinniḫ","Irinniḫ","–","–","–","URU.i-ri-in-ni-iḫ, 𒌷𒄿𒊑𒅔𒉌𒄴","town","Central Assyria, Kalḫu province (?), Iraq","Bagg RGTC 7 2/1: 249" +491,"Irrita","Irrita, Oylum HöyĂĽk","–","36.69900478406686","37.17821281809435","–","–","–","–" +493,"Isin","IIsin, šÄn al-BaḥriyÄt, Ishan Bahriyat",1,"31.88640216500606","45.27050931069247","–","city","–","Helsinki Atlas: 11 (map 16 A2)" +494,"IspallurĂŞ","IspallurĂŞ, IšpallurĂŞ, Ispallure, Isphrium (?)","–","–","–","–","town","Izalla","Bagg, RGTC 7 2/1: 253" +495,"IsqalĹ«na","IsqalĹ«na, Ashcalon, Ascalon, ĘżAsqalÄn, AšqelĂ´n, Ašqaluna, Isqaluna, Ashqelon, Ashkelon",1,"31.66426","34.54732","–","capital","–","Helsinki Atlas: 11 (map 7 C5)" +496,"IssÄ“te","IssÄ“tu, IssÄ“te, Issutu, Ĺ aqlÄwa",4,"36.39783","44.34517","–","town","–","Helsinki Atlas: 11 (map 4 D5), Bagg RGTC 7 2/1: 254–255" +497,"Istuanda","Istuanda, Wištawanda, Patuanda",3,"37.66666","34.33333","–","city","–","Helsinki Atlas: 11 (map 1 D3)" +492,"IsÄna","IsÄna, IsÄn Köi, Izan, Tell IsÄn",4,"36.75","37.66666","–","prov. capital","–","Helsinki Atlas: 11 (map 2 D4)" +504,"ItuĘľu","UtuĘľu, ItuĘľu",2,"–","–","–","tribe","–","Helsinki Atlas: 11 (map 10 C3)" +505,"Izalla","Izalla, Azalla, Azallu, Zalla, Zallu, Izallu, Azalzi, IšalÄ, byt ṣll, đˇđˇ‰đˇ• đˇ‘đˇ‹đˇ‹â€Ž, ʾÛzÄl, ×וּזָל, Aṣalli, Iṣalla, Kanni, Nini, Ninili, ṬūrÄ á¸ŹIzalÄ, IzalÄ, Izala mons, Azalla, Ṭūro d-Malbash, Melabas, Dibek DaÄźi",1,"37.20109","41.46527","i-za-al, ì-zal, KUR.a-za-al-li, KUR.a-zal-li, KUR.i-za-la, KUR.i-za-li, KUR.i-zal, KUR.i-zal-li, KUR.i-zal-lu, KUR.ì-zal, KUR.ì-zal-la, KUR.ì-zal-li, KUR.za-al-lu, KUR.a-za-la-a-a, KUR.zal-la-a-a, KUR.zal-la-a-ia, byt ṣll, đˇđˇ‰đˇ• đˇ‘đˇ‹đˇ‹â€Ž, ×וּזָל","territory, mountain","ǦazÄ«ra, Turkey","Helsinki Atlas: 7 (Azalla, territory, map 3 C4), 11 (Izalla, mountain, map 3 D3 ), Bagg RGTC 7 2/1: 263–265 (Izalla)" +507,"Izirtu","Izirtu, Zirtu, Saqqez",2,"36.25116","46.279","–","capital","–","Helsinki Atlas: 11 (map 5 B4)" +506,"IzÄ«bia","IzÄ«bia, ZÄ«wiye, Ziwiye, ZÄ«we",1,"36.2614","46.68737","–","city","–","Helsinki Atlas: 11 (map 5 B4)" +477,"IÄ“ri","JÄ“ri, IÄ“ri, Yeri, Sardašt",4,"36.15267","45.47767","–","town","Ḫabḫu, Ḫabḫu 2","Helsinki Atlas: 11 (map 5 A4), Bagg RGTC 7 3/1: 310" +498,"Išida","Išida, Išid","–","–","–","LĂš.i-ši-da-a-a","town","Central Assyria (?), Kalḫu province (?)","Bagg RGTC 7 1: 256, " +499,"IškĂ»zai","IškĂ»zai, Iškuza, AšgĂ»zai, Scythians","–","–","–","iš-ku-za-a.a, KUR.as-ku-za-a.a, KUR.áš-gu-za-a.a, KUR.iš-ku-za, KUR.iš-ku-za-a.a, LĂš.iš-ku-za-a.a, URU.as-gu-za-a.a","ethnic","–","Parpola Toponyms: 178 (Iškuza), Vera Chamaza (2002), Die Omnipotenz Aššurs: 227" +500,"Išrun","Išrun","–","–","–","KUR.iš-ru-un","mount","–","–" +501,"Ištaraurâ","Ištaraurâ, SÄrĹ«q",2,"–","–","–","river","–","Helsinki Atlas: 11 (map 5 B4)" +502,"Išua","Išua",2,"–","–","–","region","–","Helsinki Atlas: 11 (map 3 B3)" +508,"JalĹ«na","JalĹ«na, Ialuna","–","–","–","URU.ia-lu-na, KUR.ia-lu-na, KUR.ia-lu-na-a-a, URU.ia-lu-na-a-a","town, territory","Kalḫu province (?), Central Assyria","Bagg RGTC 7 2/1: 269–270" +509,"Jericho (1)","Jericho (1), Tell es-Sultan","–","31.87098681042005","35.44476683822438","–","–","–","–" +510,"Jericho (2)","Jericho (2), Tulul Abu el-'Alaiq North","–","31.85262041903013","35.43531529964726","–","–","–","–" +511,"Jericho (3)","Jericho (3), Tulul Abu el-'Alaiq South","–","31.85024154909864","35.43693647832034","–","–","–","–" +512,"Jerwan Aqueduct","Jerwan Aqueduct, ÄžirwÄn Aqueduct","–","36.66952","43.3946","–",",canal, monument","Assyria, Iraq","<a href=https://pleiades.stoa.org/places/10280471>Pleiades: Jerwan Aqueduct</a>" +513,"Jokneam","Jokneam, Tel Yoqne'am","–","32.66466721782095","35.10883229927659","–","–","–","–" +514,"Judeideh","Judeideh, Judaide, JedÄ«dÄ“, JadÄ«dah","–","34.23989","42.30865","–","–","Sūḫu, Iraq","RIMB 2: 322" +515,"Judi Dagh","Judi Dagh, Äžudi DaÄź, Ḥsanah, Ĺ eḫ, Cudi Dagh","–","37.37667","42.34667","–",",Monument","Turkey","Helsinki Atlas: 11 (map 4 B4)" +516,"Kabinnak","Kabinnak, Kabinak, Kabnak, Hafttappe, Haft Teppe",1,"32.08090580192094","48.32873115985338","–","city","–","Helsinki Atlas: 11 (map 17 A1)" +517,"Kabsite","Kabsite, Kabsitu","–","–","–","kab-si-te, URU.kab-si-te","town","Northern Babylonia","Bagg RGTC 7 1: 275" +518,"Kadeš Barnea","Kadeš-Barnea, Kadeš Barnea, Tell el-Qudeirat (?)",4,"30.64667651544816","34.41929399232647","–","–","–","–" +519,"Kafar Nahum","Kafar Nahum, Kafar-Nahum, Capharnaum","–","32.88049659607911","35.57594165209499","–","–","–","–" +521,"Kailete","Kailete, Kailetu","–","–","–","URU.ka-i-le-te","town","mid-Euphrates, Sūḫu, ḪÄbĹ«r basin (?)","Bagg RGTC 7 1: 276" +522,"Kakkabnaše","Kakkabnaše, Kakkabnamušat","–","–","–","URU.kak-kab-na-še","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 276" +523,"Kaldu","Kaldu, Chaldea",2,"–","–","–","territory","–","Helsinki Atlas: 11 (map 10 D4)" +525,"Kallat","Kallat, Batman Suyu",2,"–","–","–","river","–","Helsinki Atlas: 11 (map 3 E2)" +526,"Kalmakarra Cave","Kalmakarra Cave","–","33.03461","47.56946","–","–","Iran","<a href=https://pleiades.stoa.org/places/413309734>Pleiades: Pol-e Dokhtar</a>" +524,"Kalḫu","Kalḫu, Calah, Kalhu, Kalchu, NimrĹ«d, Nimrud",1,"36.09863","43.32932","URU.kal-ḫu, URU.kal-ḫi","capital, city","Assyria","Helsinki Atlas: 11 (map 4 C5)" +528,"KannuĘľ","KannuĘľ","–","–","–","URU.ka-an-nu-uĘľ, URU.kan-nu-uĘľ, LĂš.kan-nu-uĘľ-a-a, URU.kan-nu-a-a, URU.kan-nu-uĘľ-a-a","city","Central Assyria","Bagg RGTC 7 2/1: 287–288" +530,"Kapar-AkkullÄni","Kapar-AkkullÄni, village of AkkullÄnu","–","–","–","URU.Ĺ E-<sup>m</sup>ak-ku-la-ni","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 296" +531,"Kapar-AndarÄnu","Kapar-AndarÄnu","–","–","–","–","–","–","–" +529,"Kapar-Aḫi-iaqar","Kapar-Aḫi-iaqar, Kapar-Ahiqar","–","–","–","–","village","–","–" +532,"Kapar-BisĂŞ","Kapar-BisĂŞ, village BisĂŞ","–","–","–","URU.Ĺ E-bi-se-e","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 300–301" +533,"Kapar-DannÄia","Kapar-DannÄia, village of Dannaya, village of DannÄia","–","–","–","–","village","Assyria","–" +535,"Kapar-Itiri","Kapar-Itiri","–","–","–","URU.Ĺ E-i-ti-ri","village","Central Assyria (?)","Bagg RGTC 7 3/2: 967–968" +536,"Kapar-Mannu-lĹ«-aḫūʾa","Kapar-Mannu-lĹ«-aḫūʾa","–","–","–","–","village","Central Assyria, Nineveh province","Bagg, RGTC 7 1/1: 309–310" +538,"Kapar-NabĂ»-šimanni","Kapar-NabĂ»-išmanni, Kapar-NabĂ»-šimanni, village of NabĂ»-šimanni","–","–","–","URU.Ĺ E-mdPA-ḪAL-a-ni, URU.Ĺ E-mdAG-ši-man-ni","village","Central Assyria (?), Nineveh province (?)","Bagg RGTC 7 2/1: 311–312" +539,"Kapar-Qiluḫte","Kapar-Qiluḫte, Kapar-Kiluḫte, Kiluḫte","–","–","–","–","village","Central Assyria","RGTC 7 2/1: 314" +540,"Kapar-UsÄni","Kapar-UsÄni","–","–","–","–","village","Central Assyria","RGTC 7 2/1: 323" +534,"Kapar-ikkÄri","Kapar-ikkÄri, village of the Farmer","–","–","–","URU.Ĺ E-LĂš.ENGAR","village","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 1: 304" +537,"Kapar-mÄr-šarri","Kapar-mÄr-šarri, Village of the Crown Prince, URU.Ĺ E A MAN","–","–","–","–","village","Central Assyria, Kalḫu province (?)","RGTC 7 2/1: 310" +541,"Kaprabi","Kaprabi, Edessa, Urfa",4,"37.15211","38.78947","–","town","–","Helsinki Atlas: 11 (map 3 B3)" +542,"Kapri-Dargilâ","Kapri-Dargilâ",3,"36.7","38.33333","–","village","–","Helsinki Atlas: 11 (map 3 B4)" +555,"Karabur","Karabur, Karsanbey","–","36.02","36.19","–","monument","Turkey","Helsinki Atlas: 11 (map 2 C4), O. AytuÄź TaĹźyĂĽrek,: Some New Assyrian Rock-Reliefs in Turkey: 174-176, 177 Fig. 10." +556,"Karalla","Karalla, Uramanat",2,"–","–","KUR.kar-al-li, KUR.kar-al-la, KUR.kar-al-la-a-a, KUR.kar-al-lu, KUR.kar-al-luâ‚„, KUR.kar-la-a-a, KUR.kar-..., URU.kar-al-lu, KUR.kar-al-la-a-a","country, state","Iran","Helsinki Atlas: 11 (map 11 B2), Parpola Toponyms: 199–200" +557,"Karduniaš","Babylonia, Karduniaš",2,"–","–","–","country","–","Helsinki Atlas: 11 (map 10 D3)" +558,"Karkara","Karkara, Tell Jidr U004 (?)",4,"31.82392203365745","45.70750109912942","–","–","–","–" +559,"Kasappa","Kasappa, KušÄf, Tell KašÄf, Tell Kashaf",1,"35.99892626871029","43.36667385244879","–","town","–","Helsinki Atlas: 11 (map 4 C6)" +562,"Katmuḫi","Katmuḫi, Katmuḫu, Kadmuḫi, Ĺ aḫuppa, Saḫuppa, Ĺ uḫuppa",2,"–","–","–","state, province","–","Helsinki Atlas: 11 (map 3 E3)" +563,"Kazallu","Kazallu","–","–","–","ka-za-lu.KI, ka-zal-lu.KI","city","Northern Babylonia","Groneberg, RGTC 3: 136–237" +561,"KašpĹ«na","KašpĹ«na, KusbÄ",2,"34.28733","35.87867","–","city","–","Helsinki Atlas: 11 (map 8 A2)" +520,"Kaḫat","Kaḫat, Kahat, Tell BarrÄ«, Tell Barri",3,"36.73893","41.12701","URU.ka-ḫa-at, URU.ka-ḫat","town","ḪÄbĹ«r area","Helsinki Atlas: 11 (map 3 E4), Bagg RGTC 7 1: 276" +564,"Kelenderis","Kelenderis, Ura (?), Aydıncık","–","36.14441180151798","33.32303180199708","–","–","–","–" +565,"Kenk BoÄźazi","Kenk BoÄźazi, Kenk BoÄźazı","–","37.24166","37.85433","–","–","Turkey","Helsinki Atlas: 11 (map 3 A3)" +566,"KesentaĹź","Ergani, Gisgis, KesentaĹź","–","38.20387","39.58986","–","monument","Turkey","Helsinki Atlas: 11 (map 3 C2)" +567,"Kibaki","Kibaki, Kivah",1,"37.24883","41.5015","–","town","–","Helsinki Atlas: 11 (map 4 A4)" +568,"KilÄ«zi","KilÄ«zi, Kilizu, Kilizi, KalÄ«zi, KilÄ«zu, Kalzu, Kalzi, Qaṣr Ĺ amÄmĹ«k, Qasr Shamamok EPAS 2, KilÄ«zi",1,"36.10582","43.75306","kĂ l-zi, URU.kĂ l-zi, URU.kĂ l-zu, URU.ki-li-zi, URU.kĂ l-zi-a-a","prov. capital","–","Helsinki Atlas: 11 (map 4 C5), <a href=https://scholar.harvard.edu/jasonur/pages/erbil>Erbil Plain Archaeological Survey</a>, <a href=https://sketchfab.com/3d-models/site-2-qasr-shemamok-d658c28b789c460998697a621ca7fd4b>3D model</a>, Bagg RGTC 7 2/1: 284–285 (Kalzu), " +569,"Kinabu","Kinabu, TavĹźantepe (?), Aktepe (?)","–","37.83546","40.2019","ki-na-bu, URU.ki-na-bu","fortified city","Nirbu, Turkey","Bagg RGTC 7 2/1: 341–342" +570,"KindÄu","KindÄu, Qindau, KÄr-SĂ®n","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110" +571,"Kipšūna","Kipšūna, Kipšūnu, Gefše",3,"37.21617","42.7535","–","capital of QumÄ“ni, prov. capital","QumÄ“ni, Province of masennu","Helsinki Atlas: 11 (map 4 B4), Bagg RGTC 7 2/1: 343–344" +572,"Kirruru","ḪabrĹ«ru, Kirruru, Kirruri, Kirriuru","–","–","–","KUR.kìr-ri-Ăş-ri, KUR.ḫab-ru-ri, KUR.kìr-ru-ri","mount","ḪabrĹ«ri","–" +573,"Kirši","Kirši, Meydancıkkale?","–","36.27389593578619","33.44268818917155","–","–","–","–" +575,"Kisiru","Kisiru, Kisiri, Tell Inṯa, Tall ĘżAin Ṭelṯameh",3,"36.48083","43.21467","URU.ki-si-ri","village","Nineveh province (?), Central Assyria","Helsinki Atlas: 12 (map 4 C5), Bagg RGTC 7 1: 345–346" +576,"Kissik","Kissik, Duru (?), Tell al-Laḥm, Tell el-Lahm",1,"30.77400531941019","46.3655492049713","–","city","–","Helsinki Atlas: 12 (map 16 B3)" +577,"Kissuwatna","Kissuwatna, Kizzuwatna",4,37,36,"–","city","–","Helsinki Atlas: 12 (map 2 C3)" +578,"Kisurra","Kisurra, Abu Hatab","–","31.83792434426611","45.4819673839158","–","–","–","–" +583,"Kitrusu","Kitrusu, Khytroi, Kitrea",1,"35.24066","33.49183","–","city","–","Helsinki Atlas: 12 (map 7 B1)" +581,"Kišešlu","Kišešlu, KÄr-NabĂ»","–","–","–","–","fortress","Iran","Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +582,"Kištan","Kištan, KaysĹ«n, KaisĹ«m",2,"–","–","–","district","–","Helsinki Atlas: 12 (map 3 B3)" +580,"Kišēsim","Kišēsim, Kišessim, KÄr-Nergal, Najafabad, NajafÄbÄd, NaÄźafÄbÄd, نجŮ‌آباد",3,"34.6527"," 47.9761","–","city","–","Helsinki Atlas: 11 (map 11 B2), <a href=https://pleiades.stoa.org/places/811827554>Pleiades: Najafabad</a>, <a href=https://zenodo.org/record/5217600>CIGS</a>, Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +574,"Kiṣirte","Kiṣirte, Kiṣirtu","–","–","–","URU.ki-ṣir-te, URU.ki-ṣir-tu","town","South-east Assyria","CTN 6: 221, Parpola 1970: 210" +585,"Kubanaše","Kubanaše",3,"36.9","40.2","–","town","–","Helsinki Atlas: 12 (map 3 D4)" +587,"Kulimmeri","Kulimmeri, Kullimeri, Qulmere, ChlomarĂ´n, Klimar, Gre Migro",2,"37.99107","41.1573","–","prov. capital","Ĺ ubria, Assyria","Helsinki Atlas: 12 (map 3 E2), Bagg RGTC 7 2/1: 349–350" +588,"Kullab","Kullab",1,"31.32183","45.6405","–","town","–","Helsinki Atlas: 12 (map 16 A2)" +589,"KullanÄ«a","KullanÄ«a, Kunulua, KinalĹ«a, Kullania, KunalÄ«a, KalnÄ“, Calneh, Tell TaĘżyÄ«nÄt, Tell Tayinat",1,"36.24717","36.37452","–","prov. capital","–","Helsinki Atlas: 12 (map 2 C4), <a href=https://tayinat.artsci.utoronto.ca> Tayinat Archaeological Project (TAP)</a>" +591,"Kullar","Kullar, Kolara, BaziÄn",2,"35.6365","44.96966","–","mountain","–","Helsinki Atlas: 12 (map 10 E1)" +592,"Kulmadara","Kulmadara, ChĂ´lmadara, Charmodara",1,"37.64166","38.74483","–","town","–","Helsinki Atlas: 12 (map 3 B3)" +593,"KulumÄn","KulumÄn, KilmÄn, not Kermanshah, near ḪarḫÄr","–","–","–","–","town","–","–" +594,"Kumidu","Kumidu, Kamid el-Loz","–","33.62381849627923","35.82143372904021","–","–","–","–" +595,"Kummanni","Kummanni, Comana Cappadociae, Ĺžar (?)",4,"38.33041595481895","36.32519972256748","–","–","–","–" +596,"Kumme","Kumme",3,"37.34716","42.74483","–","city","–","Helsinki Atlas: 12 (map 4 B4)" +597,"Kummuḫi","Kummuhu, KammÄnu (district), CommagÄ“nÄ“, Samosata, Samsat",1,"37.50560103152622","38.50081550200599","–","prov. capital","–","Helsinki Atlas: 12 (map 3 B3)" +598,"Kundu","Kundu, Anavarza, Kynda",1,"37.257","35.91216","–","city","–","Helsinki Atlas: 12 (map 2 B3)" +599,"Kurbail","Kurbail, ĘżAgra",4,"36.75983","43.90316","–","prov. capital","–","Helsinki Atlas: 12 (map 4 C5)" +600,"Kurbail (alt. loc.)","Kurbail (alt. loc.), ÄžarÄhÄ«ya, Ḫirbat al-ÄžarÄhÄ«ya",4,"36.6875","43.20966","–","prov. capital","–","–" +601,"KurĂ®","KurĂ®, Kourion, Episkopi",1,"34.67216001285875","32.86433366558725","–","city","–","Helsinki Atlas: 12 (map 7 A2)" +603,"Kutalla","Kutalla, Kutallu, Tell Sifr, Tell Ṣifir",1,"31.29236345808405","45.9694994372622","–","town","–","Helsinki Atlas: 12 (map 16 B2)" +604,"KutĂŞ","KutĂŞ, KĂ»tâ, KutĂ», Gudua, Kutha, Cutha, Tell IbrÄhÄ«m, Tell Ibrahim",1,"32.75989763098715","44.61289455976172","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D4)" +527,"KÄneš","KÄneš, Kaneš, Nēša, Neša, KĂĽltepe","–","38.85017107282217","35.6352947895362","–","–","–","–" +543,"KÄr-Apladad","Gleieh, GlaiĘżÄ, GlaiĘżÄ, GleiĘżeh",4,"34.30261","42.21187","–","–","Sūḫu, Iraq","RIMB 2: 327, 329" +544,"KÄr-Aššur","KÄr-Aššur, Ḫumut","–","–","–","kar-aš-šur, URU.kar-AN.Ĺ ĂR, URU.kar-aš-šur, URU.kar-<sup>d</sup>aš-šur","city","Assyria, Laḫīru province (?)","Bagg RGTC 7 2/1: 330" +545,"KÄr-Aššur-aḫu-iddina","KÄr-Aššūr-aḫu-iddina, see ṢīdĹ«nu","–","–","–","–","city","–","–" +546,"KÄr-Aššurnasirpal","KÄr-Aššurnasirpal, KÄr-Aššur-nÄṣir-apli, KÄr-Ashurnasirpal, Kar-Assurnasirpal, Jebel Masaikh","–","34.97366","40.55532","URU.kar-<sup>m</sup>AĹ -PAB-A","city","Assyria, Middle Euphrates","Bagg RGTC 7 2/1: 330–331" +547,"KÄr-IssÄr","KÄr-Ištar, Tell ĘżAÄźÄğī",4,"35.03333","43.55","–","town","–","Helsinki Atlas: 11 (map 10 C1)" +549,"KÄr-Mullissi","Kar-Mullissi, KarmallÄ«s, KeremlÄ«s, Keramlais",1,"36.30538292011827","43.40982550055244","–","city","–","Helsinki Atlas: 11 (map 4 C5)" +550,"KÄr-Nergal","KÄr-Nergal, aṣ-Ṣūwaira",4,"32.92616","44.78683","–","town","–","Helsinki Atlas: 11 (map 10 D4)" +554,"KÄr-TukultÄ«-Ninurta","KÄr-TukultÄ«-Ninurta, Kar-Tukulti-Ninurta, TulĹ«l al-ĘżAgar, Tulul el-'Aqir",1,"35.50153","43.2831","–","city","–","Helsinki Atlas: 11 (map 10 C1)" +548,"KÄr-kaššî","KÄr-kaššî, Karkaššî","–","–","–","KUR.kar-ka-ši-e, KUR.kar-kaš-ši-i, URU.kar-kaš-ši-i, KUR.kar-kaš-šá-a.a","city","Iran, Media","Parpola Toponyms: 197" +551,"KÄr-nĹ«ri","KÄr-nĹ«ri, ĘżAin SifnÄ«, Ain Sifni","–","36.69182","43.35083","URU.kar-nu-ru, URU.kar-nu-Ăş-ri, URU.ka-ru-nu-ri","town","Assyria","Bagg RGTC 7 2/1: 335" +552,"KÄr-Ĺ amaš","KÄr-Ĺ amaš",3,"34.09449","44.00033","–","town","–","Helsinki Atlas: 11 (map 10 D2)" +553,"KÄr-Ĺ amaš-nÄṣir","KÄr-Ĺ amaš-nÄṣir","–","–","–","–","town","Central Assyria","RGTC 7 2/1: 336" +560,"KÄšijÄ“ri","Kašiieri, Kašiiari, KÄšijÄ“ri, KÄšiÄru, Kašijari, Ṭūr ĘżAbdÄ«n",1,"–","–","–","mountain","–","Helsinki Atlas: 11 (map 3 D3)" +579,"Kīš","Kīš, Kiš, Kish, Ḫursagkalama, Tell Inġarra, Tell al-Uḥaimir, Uhaimir",1,"32.55189","44.59024","–","city","–","Helsinki Atlas: 11 (map 10 D4)" +584,"Kızkapanlı","Kızkapanlı, Kizkapanli, Pazarcık, KahramanmaraĹź, PazarÄźik","–","37.47166","37.25599","–","–","Turkey","–" +586,"KĹ«kab","KĹ«kab, Tell Kawkab",1,"36.53183","40.85433","–","mountain","–","Helsinki Atlas: 12 (map 3 D4)" +602,"KĹ«su","KĹ«su, Kush, Cush, Kuš, Meluḫḫa, Emeluḫḫa, Nubia","–","–","–","KUR.ku-u-si, KUR.ku-u-su, KUR.ku-Ăş-su, KUR.ku-Ăş-ši, KUR.ku-Ăş-šú, KUR.ku-si, KUR.ku-Ăş-si, URU.ku-Ăş-si, KUR.ku-ši, KUR.ku-su, ku-sa-a, ku-sa-a-a, ku-sa-a-a-te, KUR.ku-sa-a-a, KUR.ku-sa-a-e","country, territory","Africa, Nubia","Bagg RGTC 7 2/1: 356–358, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +606,"LabdĹ«du","LabdĹ«du",3,"–","–","–","tribe","–","Helsinki Atlas: 12 (map 11 A3)" +608,"LabnÄna","LabnÄna, LubnÄn, LebÄnĂ´n, Lebanon",1,"–","–","–","mountain","–","Helsinki Atlas: 12 (map 8 A3)" +605,"LabÄĘľu","Laba'u, LabaĘľu, Lebo, Labwa, LebĂ´, Tell Qasr Labwa",1,"34.20045475734132","36.34428372649153","–","city","–","Helsinki Atlas: 12 (map 8 B2)" +607,"LabÄ«ru","LabÄ«ru","–","–","–","–","town","Assyria","RGTC 7 2/1: 360" +609,"LadÄnu","LadÄnu","–","–","–","KUR.la-da-a-ni","territory","–","–" +610,"Lagaš","Lagaš, El-Hiba","–","31.4183207967609","46.41221284166029","–","–","–","–" +612,"LaglÄgu","LaglÄgu, TagalÄgu, Tagalagi, Lagalaga, Laggalagi, ĘżUlĹ«w BĹ«lÄq, Ulubulagh","–","35.5",45,"–","town","–","Helsinki Atlas: 12 (map 10 E1)" +614,"LakÄ«su","LakÄ«su, Lakišu, Lakisu, LÄkîš, Lachish, Tell al-Duweir, Tell ed-Duwer",1,"31.56525","34.84951","–",",admin. center","–","Helsinki Atlas: 12 (map 7 C5), <a href=https://sketchfab.com/3d-models/tel-lachish-2018-993a67a2138d4e6782e71ad3275ead8c>3D model</a>" +615,"Lalar","Lalar","–","–","–","KUR.la-la-ar","mountain","–","RGTC 5: 176" +618,"Larak","Larak, Tell Wilaya (?), Tell al-ḪayyÄd (?)",4,"32.31115954785168","45.66040975327528","–","city","Babylonia, Iraq","Helsinki Atlas: 12 (map 11 A4)" +619,"Larbusa","Larbusa, Larbusu, Tall Sitak, Tell Sitak, Tall SÄ«tak, ŘŞŮ„ سيتŮ","–","35.642","45.5028","URU.la-ar-bu-sa, URU.la-ar-bu-sa-a-a","fortified city","Zamua, Iraq","Bagg RGTC 7 3/1: 370, Radner (2017), A Neo-Assyrian Legal Document from Tell Sitak: 428–429" +620,"Laribda","Laribda, Gebb al-Qdeim (?), Ů‚ŘŻŮŠŮ…, aáą-Ṭajjibe (?), At Tayyibah (?), Al Taibah (?), ĘżUrd (?), Ourd Oriza (?), التيبة","–","35.08895","38.91597","URU.la-ri-ib-da","town, fortified water point","Syria","Bagg RGTC 7 1: 156" +621,"Larsa","Larsa, as-Sankara, Tulul Sinkara",1,"31.28473","45.85513","–","city","Babylonia","Helsinki Atlas: 12 (map 16 A2)" +622,"Latiḫu","Latiḫu, Latiḫi, Tell Baḥza (?), Tall Ĺ addÄda (?)",4,"36.05","40.73333","URU.la-ti-ḫi","town","Ĺ adikanni","Helsinki Atlas: 12 (map 3 D4), Bagg RGTC 7 1: 366" +613,"Laḫīru","Laḫīru, Eski Kifri",3,"34.63333","44.88333","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D2)" +623,"Lidir","Lidir, Ledroi",1,"35.16666","33.35","–","city","–","Helsinki Atlas: 12 (map 7 B1)" +624,"Luamma","Luamma, LuĘľama","–","–","–","URU.lu-a-ma","town","Assyria, Arrapḫa province","Bagg RGTC 7 2/1: 372 (Luamma 2)" +625,"Lubda","Lubda, TawĹ«q, Daquq",3,"35.13133","44.45683","–","prov. capital","–","Helsinki Atlas: 12 (map 10 D1)" +626,"Luddi","Luddi, LĹ«du, LĂ»d, לוּד, Lydia","–","–","–","lu-ud-di, KUR.lu-ud-di, לוּד","country","Anatolia","Bagg RGTC 7 1: 158" +627,"Luddin-ilu","Luddin-ilu","–","–","–","–","town","Central Assyria (?), East Tigris area (?), Laḫīru (?)","RGTC 7 2/1: 373–374" +630,"LuĘľamma","LuĘľamma, Luamma","–","–","–","URU.lu-u-am-ma","town","Central Assyria, Ḫalaḫḫu","Bagg RGTC 7 2/1: 372 (Luamma 1)" +628,"Luḫutu","Luḫutu, LuĘżaš",3,"–","–","–","country","–","Helsinki Atlas: 12 (map 2 C5)" +616,"LÄqĂŞ","LÄqĂŞ, LaqĂŞ, LaqĂ»",2,"–","–","–","territory, country, province","–","Helsinki Atlas: 12 (map 9 C1)" +617,"LÄra...","LÄra...","–","–","–","URU.la-a-ra-x-x","town","Central Assyria (?)","Bagg RGTC 7 2/2: 365" +629,"LĹ«sanda","LĹ«sanda, Lawasantia, Lwsnd, Elbistan",4,"38.2065","37.20366","–","city","–","Helsinki Atlas: 12 (map 2 D2)" +633,"Madaktu","Madaktu, Tepe Patak, Badake",4,"32.5","47.76666","–","city","–","Helsinki Atlas: 12 (map 16 D1)" +634,"Madara","Madara, Matar",2,"37.71416","40.9505","–","city","–","Helsinki Atlas: 12 (map 3 D3)" +635,"Maganiṣi","Maganiṣi","–","–","–","–","town","Central Assyria, Nineveh province","RGTC 7 2/2: 380" +636,"Maganuba","Maganuba, Maganubba, Magganubba","–","–","–","URU.ma-ag-ga-nu-ub-ba, URU.ma-ga-ni-ib, URU.ma-ga-nu-ba","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province","Bagg RGTC 7 2/2: 380–381" +637,"MagidĂ»","MagidĂ», Megiddo, MegiddĂ´n, Tell al-Mutesellim, Tell el-Mutasallim",1,"32.58534","35.18437","–","prov. capital","–","Helsinki Atlas: 13 (map 7 D4), <a href=https://ochre.lib.uchicago.edu/Megiddo/ Megiddo III Digital Archive</a>" +638,"MagrÄ«su","MagrÄ«su, Magrisu, Magarisu, Magrisi, Magarisi, MakrisÄ, Magrus, Tell Haṣaka, Tell AbĹ«-Bakr, Tell Hasaka (?)",3,"36.49907","40.75183","URU.ma-ag-ri-su, URU.ma-ga-ri-si, URU.ma-ga-ri-su","city","ḪÄbĹ«r area","Helsinki Atlas: 13 (map 3 D4), Bagg RGTC 7 2: 381" +643,"MallanÄte","MallanÄte, Mallanate, MaĘľallanate, Mallanum","–","–","–","–","town","Balīḫ basin","Bagg RGTC 7 2/2: 386" +644,"Maltai","Maltai","–","36.84055","42.94502","–","monument","Iraq , Assyria","Helsinki Atlas: 13 (map 4 B5)" +640,"MalÄḫu","MalÄḫu, Malaḥ d'EzraĘża",3,"32.79999","36.33333","–","city","–","Helsinki Atlas: 13 (map 8 B4)" +645,"Mandiru","Mandiru","–","–","–","LĂš.man-di-ra-a-a, KUR.ma-di-ra-a-a, URU.man-di-ri-a-a","town","Elam","<a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +646,"Manisa","Manisa","–","–","–","KUR.ma-ni-sa-a-a, KUR.ma-ni-sa-a-a-u",",land","–","Parpola Toponyms: 236" +647,"Manna","Manna, Minni, Mannea",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 5 B4)" +648,"ManṣuÄti","ManṣuÄti, Manṣuati, ManṣuÄte, Manṣuate, Manṣuati, ManṣuÄtu, Manṣuatu, MaṣyÄf,MaṣyÄt, MaṣyÄáą, MaṣyÄd, Mnḏt, Masyaf",2,"35.06614671547394","36.34331897024435","–","prov. capital","–","Helsinki Atlas: 13 (map 8 B1)" +649,"ManṣuÄti (alt. loc.)","ManṣuÄti (alt. loc.), Massyas, al-BiqÄĘľ",3,"33.747","35.8945","–","prov. capital","–","–" +650,"Marad","Wanna wa SadĹ«m, Tell es-Sadum",1,"32.09186862054076","44.7833573553678","–","city","–","Helsinki Atlas: 13 (map 10 D4)" +651,"MardijanĂŞ","MardijanĂŞ, Maride, MardÄ«n",3,"37.31333","40.72083","–","town","–","Helsinki Atlas: 13 (map 3 D3)" +652,"Margu","Antiokia Margiana, Merv, Erk Kala, Gyaur Kala","–","37.66893324474648","62.19383087233302","–","–","–","–" +653,"Mari","Mari, Tell Hariri","–","34.55048884495861","40.8900285084387","–","–","–","–" +654,"Mariametu","Mariametu","–","–","–","–","town","ḪÄbĹ«r area","RGTC 7 2/2: 391" +655,"Marib","Marib","–","15.42575","45.33242","–","–","–","–" +656,"MarqÄsa","Gurgum, MarqÄsa, Marqasi, Marqas, Germanikeia, MarʿĚ, KahramanmaraĹź",1,"37.58709","36.92543","–","prov. capital","Gurgum, MarqÄsa","Helsinki Atlas: 13 (map 2 C3)" +657,"Marratu","Marratu, Persian Gulf",2,"–","–","–","sea","–","Helsinki Atlas: 13 (map 17 B4)" +658,"Marubištu","Marubištu, ḪorramÄbÄd",4,"33.48733","48.3585","–","capital","–","Helsinki Atlas: 13 (map 11 D3)" +660,"Maruri","Maruri, Maruru, MarĹ«ru","–","–","–","URU.ma-ru-ri, URU.ma-ru-ru","town","Southern Babylonia, BÄ«t-IakÄ«n (?)","Bagg RGTC 7 3/1: 396" +659,"MarĹ«m","MarĹ«m, Marum, Qarn ḤiáąáąÄ«n, MerĂ´m",3,"32.8","35.46667","–","town","Israel, Galilea","Helsinki Atlas: 13 (map 8 A4), Bagg RGTC 7/1: 171–172" +661,"MasÄka","MasÄka, Amasakku, Tell Muḥammad (2)",4,"36.9255","41.1835","–","town","–","Helsinki Atlas: 13 (map 3 E4)" +665,"MatiÄtu","MatiÄtu, Matiatu, MatiÄte, Matiate, MidyÄt",1,"37.41418721778389","41.37739487559983","–","city","–","Helsinki Atlas: 13 (map 3 E3)" +666,"Maturaba","Maturaba","–","–","–","–","town","Central Assyria, Arzūḫina province","RGTC 7 2/2: 420" +668,"Mazani","Mazani (?)","–","–","–","–","village","Assyria","Bagg RGTC 7 2/2: 420" +662,"Maškan-šapir","Maškan-šapir, Tell Abu Duwari H639","–","32.40508948708455","45.22069097667509","–","–","–","–" +663,"MašqÄ«te","MašqÄ«te, MašqÄ«tu, Mašqitu","–","–","–","URU.maš-qi-te","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 2: 396–397" +639,"Maḫalliba","Maḫalliba, MaḥÄlib",1,"33.35","35.48333","–","city","–","Helsinki Atlas: 13 (map 8 A3)" +673,"Meluḫḫa","KĹ«su, Kush, Cush, Kuš, Meluḫḫa, Emeluḫḫa, Nubia","–","–","–","me-luḫ-ḫa, KUR.me-luḫ, KUR.me-luḫ-ḫa, KUR.me-luḫ-ḫi, KUR.mi-luḫ-ḫa, KUR.me-luḫ-ḫe, KUR.me-luḫ-ḫe-e, KUR.me-luḫ-ḫe-e.KI, LĂš.me-luḫ-ḫe-e, KUR.eme-luḫ-ḫa, KUR.me-lu-ḫi, KUR.me-luḫ-x-ḫa","country, territory","Africa, Nubia, India","Bagg RGTC 7 2/2: 422–424" +672,"MelÄ«di","MelÄ«di, MelÄ«de, MelitÄ“nÄ“, Melid, Meliddu, KammÄnu, Kammanu, KammanĹ«ja, Malataya Plain",1,"–","–","KUR.me-li-di, KUR.me-li-i-di, KUR.me-lid-di, KUR.me-lid-du, KUR.ma-li-da-a-a, KUR.me-li-da-a-a, KUR.me-lid-a-a, KUR.me-lid-da-a-a, KUR.mĂ©-li-da-a-a, KUR.mi-li-da-a-a, KUR.mi-lid-da-a-a, LĂš.mi-li-da-a-a, KUR.kam-ma-ni, KUR.kam-ma-nu, KUR.kam-ma-nu-a-a","state, province","Anatolia, Kummuḫi (part of since 712?), Province of turtÄnu šumÄ“lu (since 708)","Helsinki Atlas: 13 (map 3 A2), Bagg RGTC 7/1: 132, 172–174, <a href=https://pleiades.stoa.org/places/319432673</a>, <a href=https://pleiades.stoa.org/places/629040>Pleiades: Melitene</a>" +674,"Mempi","Mempi, Memphis, Memfis","–","29.85544","31.25644","URU.me-em-pi, URU.me-in-pu, URU.me-im-pi, URU.mi-in-pu","city","Egypt","Bagg RGTC 7 2/2: 424–425" +677,"MezĂŞ","MezĂŞ","–","–","–","–","town","Assyria, GĹ«zÄna province","RGTC 7 2/2: 428" +675,"Mešta","Mešta, Hasanlu",2,"37.00458","45.45889","–","city","–","Helsinki Atlas: 13 (map 5 A3)" +671,"MeḫinĂ®","MeḫinĂ®","–","–","–","–","town","–","RGTC 7 2/2: 421" +678,"Mila Mergi","Ilimmer, Ilimeri, Ilimeru, Mila Mergi, Millet Mergi",1,"37.00583","42.9135","–","monument","Iraq, Birtu (province)","Helsinki Atlas: 10 (map 4 B4), <a href=https://pleiades.stoa.org/places/649834357>Pleiades: Mila Mergi</a>" +679,"Milawanda","Milawanda, Miletos, Miletus (?)",4,"37.532214329903","27.27993258015492","–","–","–","–" +680,"Milqia","Milqia, ĘżAin Kawa, mlqy",3,"36.22916","43.99166","–","town","–","Helsinki Atlas: 13 (map 4 D5)" +681,"MinĹ«Ęľ","MinĹ«Ęľ","–","–","–","URU.mi-nu-uĘľ, URU.mu-nu-uĘľ","town","Northern Babylonia","Bagg RGTC 7 3/1: 412" +682,"Missi","Missi",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 11 C1)" +683,"MubĂ® (town)","MubĂ®","–","–","–","URU.mu-bi-a-a, LĂš.mu-bi-a-a","town","Central Assyria","Bagg RGTC 7 2/2: 430" +684,"Mugdan","Mugdan, Umm el-Jir K97 (?)",4,"32.65043710008911","44.85026956964368","–","–","–","–" +686,"Mulu...","Mulu...","–","–","–","–","city, town","Assyria","–" +685,"MulĂ®","MulĂ®, Bolgar DaÄźlari",2,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 1 D3)" +690,"Musru","Musru, Äžabal MaqlĹ«b",1,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 4 C5)" +689,"MusÄ«na-aplu-iddina","MusÄ«na-aplu-iddina","–","–","–","URU.mu-si-na-A-AĹ ","town","Arpadda province","Bagg, RGTC 7 1: 178" +694,"MutkÄ«nu","MutkÄ«nu, Tell ĘżAbÄ«r",2,"36.692","38.09983","–","town","–","Helsinki Atlas: 13 (map 3 B4)" +693,"Mušku","Mušku, Musku, Muški, Muski, Phrygia","–","–","–","–","country","Turkey","–" +691,"Muṣur","Muṣur, Egypt, Miṣraim, Miṣir",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 13 A3)" +688,"MuṣÄṣir","MuṣÄṣir, Muṣaṣir",1,"36.80353","44.59303","–","city, capital","Uraráąu","Helsinki Atlas: 13 (map 4 D5)" +631,"MÄdaba","MÄdaba, Madaba, MÄ“deba","–","31.714700808822","35.79229526122018","–","–","–","–" +632,"MÄdÄia","MÄdÄia, MÄdai, MÄ“dia, Media",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 12 A1)" +641,"MÄliki","MÄliki","–","–","–","URU.ma-la-ki, URU.ma-lak, URU.ma-li-ki, URU.ma-lak-a-a","town","RÄši, Elam","Bagg RGTC 7 3/1: 386" +642,"MÄliku","MÄliku","–","–","–","URU.ma-li-ku, URU.ma-li-ki","town","ǦazÄ«ra (?), RÄši (?)","Bagg RGTC 7 2/2: 385 (MÄliku), Bagg RGTC 7 3/1: 386 (MÄliki) (?)" +664,"MÄt TÄmti","MÄt-tâmti, MÄt TÄmti, Sealand",2,"–","–","–","territory","–","Helsinki Atlas: 13 (map 16 B2)" +667,"MÄzamua","MÄzamua, Zamua, LullumĂ», Lullu, Lullubu, Lullubum",2,"–","–","KUR.lu-ul-lu","state, province","MÄzamua, LullumĂ»","Helsinki Atlas: 13 (map 11 A1), Radner (2006), RlA 11: 51–52" +669,"MÄĘľab","MÄĘľab, MĂ´ĘľÄb, Moab",1,"–","–","–","country","–","Helsinki Atlas: 13 (map 7 D5)" +676,"MÄ“turna","MÄ“turna, MĂŞ-Turnat, MĂŞ-Turran, MĂŞ-Turan, MĂŞ-Turnu, Tell ḤaddÄd (?), Tell al-SÄ«b (?), es-Sib (?), Tulul Baradan (?), Tell Baradan (?), Haddad (?)",1,"34.18581","45.05152","–","city","–","Helsinki Atlas: 13 (map 10 D2), <a href=https://pleiades.stoa.org/places/894042>Pleiades: Me-Turnat</a>" +687,"MĹ«ru","MĹ«ru, Tibil",3,"36.692","37.01917","–","city","BÄ«t-AgĹ«si","Helsinki Atlas: 13 (map 2 D4)" +692,"Mūši","–",3,"36.53333","44.4","–","town","–","Helsinki Atlas: 13 (map 4 D5)" +695,"Nabada","Nabada, Tell Beidar","–","36.73816167702558","40.58730935539984","–","–","–","–" +696,"NabajÄti","NabajÄti, Nabâtu, NebaĘľÄti, nbyt, n<sup>e</sup>bÄyĂ´t, × Ö°×‘Ö¸×™×•Öą×Ş, nbyh, đˇŤđˇđˇ‰đˇ„","–","–","–","KUR.na-ba-a-a-te, KUR.na-ba-a-a-ti, LĂš.na-ba-a-a-ti, URU.na-ba-a-a-ti, KUR.na-ba-a-a-ta-a-a, KUR.na-ba-a-a-ti-a-a, LĂš.na-ba-a-a-ta-a-a, × Ö°×‘Ö¸×™×•Öą×Ş, đˇŤđˇđˇ‰đˇ„","tribe, territory","Arabian Peninsula","Bagg RGTC 7 2/2: 439–440" +698,"Nabula","Nabula, Nawali, Gir Nawas, Girnavaz",1,"37.10493","41.23044","–","town","–","Helsinki Atlas: 13 (map 3 E3)" +697,"NabĂ» Temple of Kalḫu","Ezida, NabĂ» Temple of Kalḫu","–","36.0970655912","43.3303415509","É.ZI.DA","temple","Central Assyria, Kalḫu province, Kalḫu","George 1993, House Most High: 160, <a href=https://pleiades.stoa.org/places/242008148>Pleiades: Ezida (Kalhu)</a>" +700,"NagiÄti","NagiÄti, Nagiati, NagiÄtu, Nagiatu",3,"34.50183","40.9165","URU.na-gi-a-te","town","–","Helsinki Atlas: 13, Bagg RGTC 7 2: 442 (map 9 C2)" +701,"Nagsu","Nagsu, U175 (?)",4,"31.69619309557163","45.7837152077515","–","–","–","–" +704,"Nahr el-Kelb","Nahr el-Kelb, Nahr al-Kalb","–","33.955434","35.597312","–","monument","Lebanon","<a href=https://pleiades.stoa.org/places/2970016>Pleiades: Nahr al-Kalb monuments</a>" +705,"Najafehabad","Najafehabad, NaÄźafabad, Najafabad","–","34.4295","47.86967","–","monument","Iran, Kišēsim","Helsinki Atlas: 28 (map 11 B2)" +706,"Nal","Nal",2,"–","–","–","mountain","–","Helsinki Atlas: 13 (map 4 B5)" +707,"Nampigu","Nampigu, Nappigi, Nappigu, MenbiÄź, MembiÄź, BambykÄ“, Manbij","–","36.52828807598983","37.95515225576806","–","city","–","Helsinki Atlas: 13 (map 3 A4)" +708,"Namri","Namri",2,"–","–","–","country","–","Helsinki Atlas: 13 (map 11 B2)" +709,"NamrÄ«tu","NamrÄ«tu, NÄudÄr","–","–","–","–","river","–","Helsinki Atlas: 13 (map 11 B2)" +710,"Napata","Napata, Jebel Barkal","–","18.53531834028109","31.83062507955553","–","–","–","–" +711,"Napisina","Napisina","–","–","–","URU.na-pi-si-na","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2: 447" +712,"Napisu","Napisu","–","–","–","URU.na-pi-su, na-pi-šá-a-a, KUR.na-pi-sá-a-a","town","Assyria, Laḫīru","Bagg RGTC 7 2: 447, " +719,"Natḫu","Natḫu, Natḫû, NathĹŤ, LeontĹŤn Polis, Leontopolis, Tall al-MuqdÄm, Tell el-Moqdam","–","30.67955","31.35798","URU.na-at-ḫu-Ăş","city","Muṣur, Egypt","Bagg RGTC 7 2/2: 451 (Natḫû 2), <a href=https://pleiades.stoa.org/places/727147>Pleiades: Leontopolis</a>" +720,"Natḫû","Natḫû, NathĹŤ, LeontĹŤn Polis, Leontopolis, Tall al-YahĹ«dÄ«ya, Tell el-Yahudiya","–","30.2921","31.33083","URU.na-at-ḫu-Ăş","city","Muṣur, Egypt","Bagg RGTC 7 2/2: 451 (Natḫû 1), <a href=https://pleiades.stoa.org/places/727146>Pleiades: Leontopolis</a>" +721,"NaĘľiri","NaĘľiri, Nairi",2,"–","–","–","region","–","Helsinki Atlas: 14 (map 3 D3)" +702,"Naḫal Muṣur (alt. loc.)","Naḫal Muṣur (alt. loc.), WÄdÄ« Ä azza","–","–","–","–","river","–","–" +703,"Naḫal-Muṣur","Naḫal-Muṣur, Naḥal Mizraim, × ×”×ś מצרים, × ×”×¨ מצרים, River of Egypt, Brook of Egypt, WÄdÄ« al-ĘżArīš, Ůادي العريش",2,"–","–","na-ḫal KUR.mu-ṣur, na-ḫal KUR.mu-uṣ-ri","river","Egypt","Helsinki Atlas: 14 (map 13 C3), Bagg RGTC 7 1: 291" +718,"Naṣībina","Naṣībina, NaṣībÄ«na, NaṣībÄ«ni, Naṣipinu, Naṣipanu, Naṣibina, Nisibis, Nuṣaybin, Nisibin, Nisibis, Nusaybin",1,"37.06887","41.21395","na-ṣi-be-na, na-ṣi-pa-ni, na-ṣib-i-na, na-ṣib-na, URU.na-ṣa-pi-na, URU.na-ṣi-bi-na, URU.na-ṣi-pi-na, URU.na-ṣib-bi-na, URU.na-ṣib-na, URU.na-ṣib-i-na, URU.na-ṣi-pi-na-a-a","prov. capital","ḪÄbĹ«r area","Helsinki Atlas: 14 (map 3 E3), Bagg RGTC 7 2: 449–450" +726,"Nerebtum","Nerebtum, Ishchali","–","33.30358590414998","44.58274622287485","–","–","–","–" +727,"Nikippa","Nikippa",2,"–","–","–","mountain","–","Helsinki Atlas: 14 (map 11 B1)" +728,"Nikkur","Nikkur, RawÄnsÄ«r",4,"34.74983","46.631","–","prov. capital","–","Helsinki Atlas: 14 (map 11 B2)" +729,"Nilibši","Nilibši, Nilabšini, Nagar, Nawar, Tell BrÄk, Tell Brak, ŘŞŮ„ براŮ","–","36.6671","41.0585","–","town","–","Helsinki Atlas: 14 (map 3 E4)" +730,"Ninâ","Nina, Surġūl, TulĹ«l -az-Zurġūl, Surghul, Ishan Durghul",1,"31.37762560029498","46.49431484186504","–","town","–","Helsinki Atlas: 14 (map 16 B2)" +732,"Nippur","Nippur, Nuffar",1,"32.12623","45.23134","–","city, provincial capital","Babylonia","Helsinki Atlas: 14 (map 10 E4), <a href=https://oi.uchicago.edu/research/projects/nippur-expedition>Nippur Expedition</a>" +733,"Nipur","Nipur, Äžudi DaÄź",2,"37.39866","42.46366","–","mountain","–","Helsinki Atlas: 14 (map 4 B4)" +734,"Nirgi","Nirgi","–","–","–","URU.ni-ir-gi","town","Central Assyria (?)","Bagg RGTC 7 2/2: 468" +735,"Nisa","Nisa","–","37.95153","58.21157","–","–","–","–" +737,"NiĘľ","NiĘľ, Thebe, Thebes, Waset, Nut","–","25.70837095778625","32.64734464125721","–","–","–","–" +738,"NiĘľu","NiĘľu, Nihi, Niḫi, Niya, Apamea, QalĘżat Maḍīq, Qal'at el-Mudiq",2,"35.4198576713808","36.392271981049","–","town","–","Helsinki Atlas: 14 (map 8 B1)" +736,"Niṣir","Niṣir, NiMUĹ , Pir-i Mukurun, Pir Omar Gudrun, Pire MagrĹ«n",2,"35.77247","45.22961","–","mountain","–","Helsinki Atlas: 14 (map 10 E1), Bagg RGTC 7 3/1: 96 (in connection with BÄru)" +740,"Nulia","Nulia, Niara, Lulia (?), Niyara, NiyÄrah, نيارة, Ǧabal SemĘżan (?), جبل سمعان, Ǧabal Barakat (?), Ĺ eiḫ Bereket (?), Ř´ŮŠŘ® برŮات","–","36.27615","36.82203","URU.nu-li-a","town","Pattinu, Syria","Bagg RGTC 7 1: 183, <a href=https://pleiades.stoa.org/places/658546>Pleiades: Niara</a>" +741,"Nuniba","Nuniba","–","–","–","URU.nu-ni-ba","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 470" +739,"Nuḫubu","Nuḫubu, Nuḫbu, Nuḫba","–","–","–","–","town","–","RGTC 7 2/2: 469" +713,"NÄr Ĺ arri","NÄr-šarri, NÄr-Ĺ arri, Nahar MalkÄ",2,"–","–","–",",canal","–","Helsinki Atlas: 13 (map 10 D3)" +714,"NÄrtu","NÄrtu",3,"–","–","–","territory","–","Helsinki Atlas: 14 (map 11 D2)" +715,"NÄrtu elÄ«tu","NÄrtu elÄ«tu, NÄrtu-elÄ«tu","–","–","–","–","river","–","Helsinki Atlas: 14 (map 12 A2)" +716,"NÄrtu šaplÄ«tu","NÄrtu šaplÄ«tu, NÄrtu-šaplÄ«tu","–","–","–","–","river","–","Helsinki Atlas: 14 (map 11 D2)" +717,"NÄru ša BÄ«t-DÄ“rÄia","NÄru-ša-BÄ«t-DÄ“rÄia, NÄru-ša-BÄ«t-DÄ“rÄja, GalÄl Badra",2,"–","–","–","river","BÄ«t-DÄ“rÄja","Helsinki Atlas: 14 (map 11 A3)" +722,"NÄ“barti-Aššur","NÄ“barti-Aššur, Tall Graiye 3, Al QurayyÄ, El QraĂŻyĂ©, القŮرية, القريا","–","34.95629","40.54139","nĂ©-bar-ti-aš-šur","town","Middle Euphrates, Syria","Bagg RGTC 7 2/2: 451–452" +723,"NÄ“med-IssÄr","NÄ“med-IssÄr, NÄ“med-Ištar, Tell ĘżAfar",4,"36.37667","42.46583","URU.ne-med-<sup>d</sup>15, URU.nĂ©-med-15, URU.nĂ©-med-<sup>d</sup>15, URU.nĂ©-med-<sup>d</sup>INANNA, URU.nĂ©-med-<sup>d</sup>15-a-a","city","Assyria, North ǦazÄ«ra, Raṣappa","Helsinki Atlas: 14 (map 4 B5), Bagg RGTC 7 2/2: 452–453" +724,"NÄ“med-Laguda","NÄ“med-Laguda, NÄ“med-Lagudu","–","–","–","UĹ -dla-gu-du.KI, URU.nĂ©-med-dla-gu-da, URU.nĂ©-me-ed-la-gu-da, nĂ©-med-dla-gu-da.KI","town","Southern Babylonia","–" +725,"NÄ“rab","NÄ“rab, NÄ«rabu, Nereb, Nayrab, Neirab",1,"36.1775","37.22708","–","city","Arpadda province","Helsinki Atlas: 14 (map 2 D4), Bagg, RGTC 7 1: 178" +731,"NÄ«nuwa","NÄ«nuwa, NÄ«nevÄ“, NÄ«nuwÄ, NÄ«nua, Nineveh, Tell QĹ«yunÄźiq, Tell Nebi Yunus",1,"36.35929","43.15199","–","capital, city","Assyria","Helsinki Atlas: 14 (map 4 C5)" +742,"Padakku","Padakku, Ha'it","–","25.98033212387223","40.4744466279597","–","–","–","–" +743,"PadÄnu","PadÄnu, Paddanu, PadÄni, Padnu","–","–","–","URU.pa-da-a-ni, URU.pa-da-ni, URU.pa-ad-nu","town","Diyala Region","Bagg RGTC 7 2/2: 472 (Padnu), Parpola Toponyms: 271 (PadÄni)" +745,"PaiĂŞ","PaiĂŞ","–","–","–","–","town","North Assyria (?)","RGTC 7 2/2: 473" +746,"Palgu ša ḪabĹ«r","Palgu-ša-ḪabĹ«r, DawwarÄ«n Canal",2,"–","–","–","canal","–","Helsinki Atlas: 14 (map 9 C1)" +747,"PallĹ«kat","PallĹ«kat, al-FallĹ«Äźa, Pallakottas",1,"33.357","43.77583","–","town","–","Helsinki Atlas: 14 (map 10 C3)" +748,"Panziš","Panziš",4,"36.41666","47.08333","–","fortress","–","Helsinki Atlas: 14 (map 5 C4)" +749,"Pappa","Pappa, Paphos, PÄphos, Kouklia",1,"34.70773537188416","32.57386157169607","–","city","–","Helsinki Atlas: 14 (map 7 A2)" +750,"PaqarḫubĹ«ni","PaqarḫubĹ«ni, Gaziantep",3,"37.06618","37.38332","–","city","–","Helsinki Atlas: 14 (map 2 D3)" +752,"Paritakka","Partakka, ParÄ“takÄ“nÄ“, IsfanÄn",2,"–","–","–","territory","–","Helsinki Atlas: 14 (map 12 A3)" +753,"Parsua","see also Parsumaš",2,"–","–","–","state, province","–","Helsinki Atlas: 14 (map 11 B2)" +754,"Parsumaš","Fars, Persis, see also Parsua",2,"–","–","–","territory","–","Helsinki Atlas: 14 (map 17 C2)" +756,"PatibÄ«ri","PatibÄ«ri, Bad-tibira, Bad-Tibira, Tell Madain, Tell Medinah, Madain",1,"31.38134980866285","46.00364502667787","–","town","–","Helsinki Atlas: 14 (map 16 A2)" +757,"Patiškun","Patiškun, Phathakon (?), Istilil (?)","–","–","–","URU.pa-ti-iš-kun (?)","town","BÄ«t-ZamÄni","Bagg RGTC 7 2: 476" +758,"Patti-Illil","Patti-Illil, Patti-Enlil",2,"–","–","–",",canal","Northern Babylonia","Helsinki Atlas: 14 (map 10 C3)" +759,"Pattinu","KullanÄ«a, Kunulua, KinalĹ«a, Kullania, KunalÄ«a, Pattinu, Patina, Patinu, Pattina, Ḫattina","–","–","–","–","state, territory, province","KullanÄ«a, Pattinu, Syria","Helsinki Atlas: 14 (map 2 C4)" +760,"Patušarra","Patušarra, Padašvar, Pateischoreis",3,"–","–","–","country","–","Helsinki Atlas: 14 (map 6 D5)" +755,"Pašime","Pašime, Tell Abu Sheeja","–","32.39476517362748","47.14907362172696","–","–","–","–" +744,"Paḫri","Paḫri, Misis",3,"36.96183","35.61333","–","city","–","Helsinki Atlas: 14 (map 2 B4)" +761,"Penzâ","Penzâ, Genç","–","38.75056","40.55417","URU.pe-en-za-a ","city","Ĺ ubria, Turkey ","Helsinki Atlas: 14 (map 3 D2), Bagg RGTC 7 2/2: 477, <a href=https://www.geonames.org/314649/genc.html>Geonames: Genç</a>" +762,"Persepolis","Persepolis, Parsa, Persai, Sat Setun, Takht-i Jamshid","–","29.9353403333","52.889437","–","–","Iran, Anšan, Elam","<a href=https://pleiades.stoa.org/places/922695>Pleiades: Persepolis/Parsa/Persai/Sat Setun</a>" +763,"Pilistu","Pilistu, Philistia, PelištĂ®",1,"–","–","–","country","–","Helsinki Atlas: 14 (map 7 C5)" +765,"Province of masennu","Province of masennu, MÄt masenni",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt masenni, map 4 B4)" +766,"Province of nÄgir ekalli","Province of nÄgir ekalli, MÄt nÄgir ekalli, MÄt-nÄgir-ekalli",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt nÄgir ekalli, map 4 D5)" +767,"Province of rab šÄqĂŞ","MÄt rab šÄqĂŞ, Province of rab šÄqĂŞ",3,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt rab šÄqĂŞ, map 4 A4)" +768,"Province of turtÄnu","TurtÄnu, MÄt turtÄni, Province of turtÄnu",2,"–","–","–","territory","–","Helsinki Atlas: 13 (MÄt turtÄni, map 3 B3)" +769,"Pulua","Pulua, Palu",4,"38.70239","39.9535","–","city","–","Helsinki Atlas: 14 (map 3 C2)" +770,"PuqĹ«du","PuqĹ«du, PeqĂ´d",3,"–","–","–","tribe","–","Helsinki Atlas: 14 (map 16 B2)" +771,"Purattu","Purattu, Euphrates, al-FurÄt",1,"–","–","–","river","–","Helsinki Atlas: 14 (map 10 B3)" +772,"Puzriš-Dagan","Puzriš-Dagan, Drehem H1001","–","32.05966976844359","45.29229603804436","–","–","–","–" +751,"PÄra","unknown, PÄra, Para, BÄra, BÄrah, بارة","–","36.3757","41.4852","–","monument","Iraq","Helsinki Atlas: 14 (map 4 A5)" +764,"PÄ«ru","PÄ«ru","–","–","–","URU.pi-i-ru","town","–","Bagg RGTC 7 2: 480" +773,"Qablit","Qablit","–","–","–","URU.qab-lit","town","Izalla","Bagg RGTC 7 2/2: 484" +774,"QadinĂŞ","QadinĂŞ, Qatnu, QaáąáąunÄn, Gudadanum, QattunÄn, Tell FadġÄmi",3,"35.918","40.88483","URU.qa-di-nĂ©-e","town","mid-ḪabĹ«r","Helsinki Atlas: 14 (map 3 D5), Bagg RGTC 7 2: 489–491" +776,"Qadumu","Qadumu, Qatma (?)","?","36.58475767424099","36.96524084139543","–","–","–","–" +775,"QadÄ«su","QadÄ«su, Qadeš, Kadeš, QÄdēš, Tell NebÄ« Mend, Tell Nebi Mendo",1,"34.5530600329926","36.51879036532772","–","town","–","Helsinki Atlas: 14 (map 8 B2)" +778,"Qallania","Qallania, Berdesur çay","–","–","–","–","river","–","Helsinki Atlas: 14 (map 4 E4)" +777,"Qal’eh-i Imam","Qal’eh-i Imam, Imam Fortress, Marivan Fortress, Qal’eh-i Marivan","–","35.49134","46.17588","–","–","Iran, Kurdistan, Marivan District","<a href=https://pleiades.stoa.org/places/858969850>Pleiades: Qal’eh-i Imam</a>" +780,"QanĂ»","QanĂ», Qanawat","–","32.7550572637493","36.61859072108363","–","–","–","–" +781,"Qarena","Qarena, Qarenabis","–","–","–","URU.qar-e-na","town","Izalla","Bagg RGTC 7 2/2: 487–488" +782,"QarnÄ«na","Qarnina, Qarnaim, Ĺ eiḫ SaĘżd, Shaykh Sa'ad?",1,"32.836875092298","36.03687665155054","–","prov. capital","–","Helsinki Atlas: 14 (map 8 B4)" +783,"Qarqar","Qarqar, Tell Qarqur",3,"35.74210088217787","36.33069731154433","–","city","–","Helsinki Atlas: 14 (map 2 C5)" +785,"Qarti-Ḫaldi","Qarti-Ḫaldi","–","–","–","URU.qar-ti—ḫal-di","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 488" +784,"Qarti-ḫadasti","Qarti-ḫadasti, Kition, Larnaca, Larnaka",1,"34.91971","33.63384","–","city","–","Helsinki Atlas: 14 (map 7 B2), <a href=https://pleiades.stoa.org/places/707556>Pleiades: Larnaka</a>" +787,"Qatna","Qatna, Qatnu, QatnĂ», Tell AšamšÄni, Tall AšamšÄnÄ«, Tell Ašamsani (?)",3,"35.8779","40.87166","KUR.qat-ni, URU.qa-at-ni, URU.qat-ni, URU.qa-at-na-a-ia, URU.qat-na-a-ia, URU.qat-ta-na-ia","town","mid-ḪabĹ«r","Helsinki Atlas: 14 (map 3 D5), Bagg RGTC 7 2: 489–491" +786,"Qaštu","Qaštu","–","–","–","URU.BAN, URU.BAN-a-a","town","Assyria","Bagg RGTC 7 2/2: 489" +788,"Qaáąna","Qaáąna, Tell Mishrifeh, Tall Mašrafa","–","34.83448","36.86609","–","–","North Levant","Bagg RGTC 7 2: 490 (under Qatna / Tall AšamšÄnÄ«), <a href=http://www.qatna.org/en-index.html>Qatna / Tell Mishrifeh Website</a>" +789,"Qedeš","Qedeš, Tel Qedesh","–","33.11314","35.52853","–","–","–","<a href=https://daily.jstor.org/the-archaeological-mystery-of-tel-kedesh/>The Archaeological Mystery of Tel Kedesh</a>" +790,"Qidru","Qidru, QÄ“dÄr, Cedrei",3,"–","–","–","country","–","Helsinki Atlas: 14 (map 15 D3)" +791,"Qilissa","Qilissa, Khlisi, Silvan",3,"38.14883","41.01266","–","town","–","Helsinki Atlas: 14 (map 3 D2)" +792,"QinnasrÄ«na","QinnasrÄ«na, QinnasrÄ«n, NebÄ«Ęľ ʿĪs, Chalcis ad Belum",2,"35.98932","37.00383","–","town","–","Helsinki Atlas: 15 (map 2 D5)" +793,"QipÄnu","QipÄnu",2,"–","–","–","district","–","Helsinki Atlas: 15 (map 3 C3)" +794,"Qirbit","Qirbit, Qirbutu, Kirbit, Ilam, IlÄm",4,"33.63497","46.41528","URU.qir-bi-it, URU.qir-bi-ti, URU.qir-bit, URU.qir-bĂt, URU.qir-bu-tu","city","East Babylonia, Ḫalēḫasta","Helsinki Atlas: 15 (map 11 B3), Bagg RGTC 7 2/2: 494–495" +795,"QubbÄte","QubbÄte","–","–","–","–","town","East ǦazÄ«ra, Raṣappa (?)","Bagg RGTC 7 2/2: 495–496" +796,"QudÄru","QudÄru","–","–","–","URU.qu-da-ru","town","Central Assyria (?)","Bagg RGTC 7 2/2: 496" +797,"Qumbuna","Qumbuna, Qunbuna","–","–","–","URU.qu-um-bu-na, URU.qu-un-bu-na","town","MÄzamua","–" +798,"QumÄ“ni","QumÄ“ni, QumanĂ®, QumÄnu, QumÄ“nu, QumanĂ», Plain of Silopi",3,"–","–","–","territory","–","Helsinki Atlas: 15 (map 4 B4), RGTC 7 2/2: 497" +799,"Quruba","Quruba","–","–","–","–","territory","North Assyria (?)","RGTC 7 2/2: 499" +800,"Qurubi","Qurubi, Qurrubu","–","–","–","–","town","–","RGTC 7 2/2: 499" +801,"QutĂ»","QutĂ», Guti, Gutium","–","–","–","–","territory","Iran","Parpola Toponyms: 138 (Gutium)" +802,"QuwĂŞ (capital)","QuwĂŞ, Que, Adana, Coa",4,"36.99333","35.34233","–","prov. capital","–","Helsinki Atlas: 15 (map 2 B4)" +803,"QuwĂŞ (country)","QuwĂŞ, Que, Coa, QewÄ“",2,"–","–","–","province","–","Helsinki Atlas: 15 (map 2 B4)" +779,"QÄna","QÄna, Ḫirbat QÄnÄ",3,"37.5",42,"–","town","–","Helsinki Atlas: 15 (map 4 B4)" +804,"RablÄ","RablÄ, RablĂŞ, RiblÄh, Tell Zira'at, Ribla",1,"34.45954691757429","36.57262261969346","–","city","–","Helsinki Atlas: 15 (map 8 B2)" +805,"RadÄnu","RadÄnu, Nahr al-ĘżUzaim, Physkos",2,"–","–","–","river","–","Helsinki Atlas: 15 (map 10 D2)" +810,"Rappâ","Rappâ","–","–","–","ĂŤD.rap-pa-a","river","–","Parpola Toponyms: 292" +807,"Rapâ (town)","Rapâ","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/2: 503" +808,"Rapīḫu","Rapihu, Raphia, Rafaḥ, Rafah",1,"31.30152961251805","34.24261667132028","–","town","–","Helsinki Atlas: 15 (map 7 C5)" +806,"Raḫimmu","Raḫimmu",3,"33.37866","43.50316","–","town","–","Helsinki Atlas: 15 (map 10 C3)" +811,"Raṣappa","Raṣappa, Sergiopolis, Resafa, Rezef, Reṣep, (al-)RuṣÄfa",3,"35.62908419489116","38.75819320314854","–","prov. capital","–","Helsinki Atlas: 15 (map 3 B5)" +812,"Reḫōv","Reḫōv, Rehob, Tel Rehov, Tell es-Sarem","–","32.45681300656256","35.49778333702537","–","–","–","–" +814,"Rummunidu","Rummunidu, Rummunina, Tell Mašīḥ (?)",3,"35.20317","40.52517","URU.ru-um-mu-ni-na","town","LÄqĂŞ","Helsinki Atlas: 15 (map 9 C1), Bagg RGTC 7 2: 511" +817,"Rusai URU.TUR","Rusai URU.TUR, Bastam","–","38.88592314900662","44.94843769009853","–","–","–","–" +815,"Rusaḫinili Eidurukai","Rusahinili Eidurukai, Ayanis, AÄźartı",1,"38.70805567683607","43.21146686196357","–","city","–","Helsinki Atlas: 15 (map 4 C3)" +816,"Rusaḫinili Qilbanikai","Rusaḫinili Qilbanikai, Rusaḫinili, Rusahinili, Toprakkale",1,"38.50998328968381","43.40639519418901","–","city","–","Helsinki Atlas: 15 (map 4 C3)" +809,"RÄpiqu","RÄpiqu, Rapiqu, Raphaka, Tell al-AnbÄr",2,"33.46666","43.25833","–","town","–","Helsinki Atlas: 15 (map 10 C3)" +813,"Rēš-Ä“ni","Rēš-Ä“ni, Rus al-ĘżAin",2,"36.54999","43.21666","–","village","–","Helsinki Atlas: 15 (map 4 C5)" +818,"Sa","Sa, Sais, Sa el-Hagar","–","30.96246207693751","30.76838085331379","–","–","–","–" +820,"SabḫÄnu","SabḫÄnu",3,"32.46666","44.3","–","fortress","–","Helsinki Atlas: 15 (map 10 D4)" +821,"SagĹ«ru","SagĹ«ru, Sagurri, SÄğūr, Nahr as-SÄğūr",1,"–","–","–","river","–","Helsinki Atlas: 15 (map 3 A4)" +825,"Sairi","Sairi, Sairu","–","–","–","URU.sa-i-ri","town","Assyria","Bagg RGTC 7 2/2: 518" +826,"SalammĂŞ","SalammĂŞ","–","–","–","–","town","Central Assyria (?), East Tigris area (?), Laḫīru (?)","RGTC 7 2/2: 519" +827,"SalimÄni","SalimÄni","–","–","–","–","town","Central Assyria, Kalḫu province","RGTC 7 2/2: 520" +828,"Sallat","Sallat, Salatu",3,"33.16667","43.91667","URU.sa-la-te","town","Northern Babylonia","Helsinki Atlas: 15 (map 10 C3)" +829,"Saluara","Saluara, Labotas, Kara su",1,"–","–","–","river","–","Helsinki Atlas: 15 (map 2 C4)" +830,"Samakku","Samakku","–","–","–","URU.sa-ma-ak-ka, URU.sa-ma-ku","town","Central Assyria","Bagg RGTC 7 2/2: 521" +831,"Samarra","Samarra","–","34.206","43.88002","–","–","–","–" +833,"SamsimurĹ«na","SamsimurĹ«na, Ğūniya","–","33.97783","35.62816","–","capital","–","Helsinki Atlas: 16 (map 8 A3)" +1058,"SamÄnu","SamÄnu","–","–","–","URU.sa-ma-na, URU.sa-ma-ni, URU.sa-ma-nu, URU.sa-am-ma-na-a-a, URU.sa-ma-na-a-a","town","Assyria, Ĺ ibanÄ«ba","Bagg, RGTC 7/2–2: 521" +834,"SamĘľalla","SamĘľalla, SamĘľal, šmĘżl, Zencirli, Zincirli, Zinçirli",1,"37.10332","36.67788","–","prov. capital","Sam'al, SamĘľalla, BÄ«t-GabbÄri","Helsinki Atlas: 15 (map 2 C3), <a href=https://zincirli.uchicago.edu>Zincirli HöyĂĽk</a>" +835,"SangarÄ«tu","SangarÄ«tu, Saggaratum, Tell AbĹ« ḤÄĘľit, Tell Abu Ha'it",3,"35.25119717279915","40.55705303323461","–","town","–","Helsinki Atlas: 16 (map 9 C1)" +836,"SangibĹ«tu","SangibĹ«tu, BÄ«t-Sangibuti, BÄ«t-SangibĹ«ti, Plain of Ḫoy, Plain of Khoy, Khowy, Ḫōy, Ř®ŮŰŚ",2,"38.5503","44.9521","KUR.É-sa-an-gi-bu-ti, KUR.sa-an-gi-bu-te, KUR.sa-an-gi-bu-ti","district, Uraráąian province","Uraráąu, Iran, West Azerbaijan","Zimansky (1990), <i>Urartian Geography and Sargon's Eighth Campaign</i>, JANES 49/1: 15, Parpola Toponyms: 88, 303, Bagg RGTC 7 3/1: 149 (BÄ«t-SangibĹ«ti 2), Helsinki Atlas: 16, 29 (SangibĹ«tu (1), map 4 D3)" +837,"SanÄ«ru","SanÄ«ru, SenĂ®r, SanÄ«r, Hermon",2,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 8 A3)" +838,"SapalÄte","SapalÄte","–","–","–","–","town","–","RGTC 7 2/2: 522" +839,"Sapirrutu","Sapirrutu, Saburutu, Sabiritu, Sapiratum, SapĂ®ratum, ÄžazÄ«rat BÄ“ÄźÄn, Bijan",3,"34.30701","42.12688","URU.sa-bi-re-te, URU.sa-bi-ru-tu, URU.sa-pi-ri-te, sa-pi-rit","town","mid-Euphrates, Sūḫu","Helsinki Atlas: 16, Bagg RGTC 7 2: 516" +842,"Sardes","Sardes, Sartmustafa","–","38.48488020937479","28.04362609584273","–","–","–","–" +843,"Sarduriḫinili","Sarduriḫinili, Sardurihinili, Chavushtepe, ÇavuĹźtepe",2,"38.35299780346134","43.46128741722196","–","city","–","Helsinki Atlas: 16 (map 4 C3)" +846,"SarrabÄnu","SarrabÄnu","–","–","–","URU.sa-rab-na-a.a, URU.sa-ar-rab-a-ni, URU.sa-ar-rab-a-nu, URU.sa-ar-ra-ba-nu, URU.sar-ra-ba-ni, URU.sa-ar-ra-ba-a-nu","city","Southern Babylonia, BÄ«t-Ĺ ilÄni","–" +847,"Sarragitu","Sarragitu, SarragÄ«tu, Ĺ arragitu","–","–","–","URU.šá-ra-gi-ti, URU.sa-ar-ra-gi-tu, sa-ra-gi-ti, sa-ar-ra-gi-ti, URU.sar-gi-te (?)","fortified city","Babylonia","<a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +844,"SarĂŞ","SarĂŞ, AltĹ«n KĹ«brÄ«",4,"35.7455","44.13983","–","town","–","Helsinki Atlas: 16 (map 10 D1)" +848,"SarĹ«gu","SarĹ«gu, Suruṣ, SarĹ«Äź","–","36.97366","38.41883","–","town","–","Helsinki Atlas: 16 (map 3 B4)" +849,"SasiqÄni","SasiqÄni, SalÄmÄ«ya",4,"36.13733","43.3195","–","town","–","Helsinki Atlas: 16 (map 4 C5)" +850,"Sazabu","Sazabu, Ĺ azabĂŞ, Tell ĘżAmarna, Ĺ aḏabu",1,"36.74532","38.01371","–","town","–","Helsinki Atlas: 16 (map 3 B4)" +851,"Sazanâ","Sazanâ, Ĺ aezana",3,"34.14366","36.75333","–","town","–","Helsinki Atlas: 16 (map 8 B2)" +852,"SaĘľarru","SaĘľarru, Ĺ aĘżÄra",1,"33.11433","36.35499","–","town","–","Helsinki Atlas: 16 (map 8 B3)" +822,"SaḫlÄla","SaḫlÄla, Tell SahlÄn",3,"36.5",39,"–","town","–","Helsinki Atlas: 16 (map 3 B4)" +823,"SaḫrÄ«na","SaḫrÄ«na",3,"32.41666","44.41666","–","town","–","Helsinki Atlas: 16 (map 10 D4)" +853,"Siannu","Siannu, Siyannu, Tell SiyÄnu, Tell Siyanu",1,"35.36539543015847","36.00295594215738","–","city","–","Helsinki Atlas: 16 (map 8 A1)" +857,"Sikiri","Sikiri, Kisiri, Kisiru, Tell Ĺ addÄda",1,"36.0325","40.76433","URU.ki-si-ri, URU.si-ki-ri","town","ḪÄbĹ«r area","Helsinki Atlas: 16 (map 3 D4), Bagg RGTC 7 1: 345 (Kisiri 1)" +856,"SikÄni","SikÄni, Sikani, SikÄnu, Sikanu, Wašukanni, Tell FaḫÄrÄ«ya, Tell Fekheriye, Tell Fekherye",1,"36.84261","40.06983","–","town","–","Helsinki Atlas: 16 (map 3 D4), <a href=https://pleiades.stoa.org/places/572048102>Pleiades: Sikani</a>" +859,"Sillu","Sillu, Soloi",1,"35.1415","32.81266","–","city","–","Helsinki Atlas: 16 (map 7 A1)" +860,"Silluwa","Silluwa, Salamis, Konstanteia",1,"35.18558206858346","33.89933423453447","–","city","–","Helsinki Atlas: 16 (map 7 B1)" +858,"Silḫazi","Silḫazi, KĹ«h-i Alwand",3,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 11 D2)" +862,"Simirria","Simirria, KĹ«h-i Ĺ aiḫ MÄret",2,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 11 B1)" +863,"Sinabir","Sinabir","–","–","–","KUR.si-na-bi-ir","mount","–","Parpola Toponyms: 310" +867,"SinaĘľini","SinaĘľini","–","–","–","URU.si-na-Ęľi-i-ni","town","Balīḫ basin (?)","Bagg RGTC 7 2/2: 532" +866,"Sinaḫulzi","Sinaḫulzi","–","–","–","KUR.si-na-ḫul-zi","mount","–","Parpola Toponyms: 310" +868,"SingÄra (mountain)","SingÄra, Singara, Äžabal SinÄźÄr, Singara",1,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 4 A5)" +869,"SingÄra (town)","SingÄra, Singara, Balad SinÄźÄr, Balad Sinjar",1,"36.32755273132588","41.85724480938713","–","town","–","Helsinki Atlas: 16 (map 4 A5)" +870,"Sinnu","Sinnu, as-Sinn",3,"35.33333","43.5","–","town","–","Helsinki Atlas: 16 (map 10 C1)" +871,"Sinzi","Sinzi, Göksu, Singas",1,"–","–","–","river","–","Helsinki Atlas: 16 (map 3 A3)" +864,"SinÄbu (1)","SinÄbu, Sinabu, Aktepe",4,"37.72451603785152","40.56932833730519","–","prov. capital","–","Helsinki Atlas: 16 (map 3 D3)" +865,"SinÄbu (2)","SinÄbu, Sinabu, MurattaĹź, Pornak",4,"37.79679781783449","40.38033037771094","–","–","–","–" +872,"Sippar","Sippar, Sippar-ṣērim, Tell AbĹ« Ḥabba, Abu Habba",1,"33.06","44.25466","–","prov. capital","–","Helsinki Atlas: 16 (map 10 D3)" +873,"Sippar-ArĹ«ru","Sippar-ArĹ«ru, Sippar-dĹ«rim, Tell ed-DÄ“r, Tell ed-Der",2,"33.09812236862174","44.29948761295098","–","town","–","Helsinki Atlas: 16 (map 10 C3)" +875,"Sirdakka","Sirdakka, Zirdiakka",4,"35.1","47.16666","–","fortress","–","Helsinki Atlas: 16 (map 11 C1)" +876,"Sirqu","Sirqu, Terqa, Tell ĘżAšÄra, Ashara, ŘŞŮ„ الأشارة",1,"34.92225","40.56841","–","city","–","Helsinki Atlas: 16 (map 9 C2)" +874,"SirÄra","SirÄra, Anti-Lebanon",3,"–","–","–","mountain","–","Helsinki Atlas: 16 (map 8 B3)" +877,"SissĂ»","SissĂ», SÄ«s, Kozan, Sission",1,"37.4475","35.82666","–","city","–","Helsinki Atlas: 16 (map 2 B3)" +878,"SiĘľimmĂŞ","SiĘľimmĂŞ, Tell ǦilÄga",4,"36.96666","41.83333","–","prov. capital","–","Helsinki Atlas: 16 (map 4 A5)" +879,"Subartu","Subartu, Ĺ ubartu, North Mesopotamia","–","–","–","su-bar-tum, su-bar-tum.KI, SU.BIR<sub>4</sub>, SU.BIR<sub>4</sub>.KI, SU.KI, šu-bar-ti, KUR.su-bar-ti, KUR.SU.BIR<sub>4</sub>","territory","North Assyria","Bagg RGTC 7 2: 538–539" +880,"Sueia","Sueia","–","–","–","KUR.su-e-ia (?)","mount","Nairi","Bagg RGTC 7 2: 539" +883,"Sumbu","Sumbu, Sumbi, Plain of SulaimÄnÄ«ya",2,"–","–","–","district","–","Helsinki Atlas: 16 (map 11 A1)" +884,"Sumurzu","Sumurzu, Plain of Dehra/Sar-i-PĹ«l ZuhÄb",3,"–","–","–","territory","–","Helsinki Atlas: 16 (map 11 A2)" +885,"SumuĘľil","SumuĘľil, SumuĘľel","–","–","–","KUR.su-mu-ìl, LĂš.su-mu-uĘľ-ìl","tribe","desert to the west of Babylonia","Bagg RGTC 7 2/2: 543–544" +887,"Supnat","Supnat, Subnat, Sufan çay",2,"–","–","ĂŤD.su-ub-na-at, ĂŤD.su-ub-nat","river","–","Helsinki Atlas: 16 (map 4 B4), Bagg RGTC 7 2: 687–688" +889,"Sura","Sura, Suriya","–","35.89692739079189","38.77896278946255","–","–","–","–" +890,"Surappu","Surappu, RĹ«dḫÄne-ye CangĹ«le",2,"–","–","–","river","–","Helsinki Atlas: 16 (map 11 B4)" +891,"Surikaš","Ĺ urikaš, Surikaš",3,"–","–","KUR.su-ri-ka-áš","district","Mannea","Helsinki Atlas: 16 (map 11 B1), Parpola Toponyms: 319" +892,"SurmarrÄti","SĹ«r-marrati, SurmarrÄti, SÄmarÄĘľ, Surra-man-rÄĘľ, Sur-marrati, Gurmarriti, Samarra",1,"34.20983","43.89167","–","town","–","Helsinki Atlas: 16 (map 10 C2), <a href=https://pleiades.stoa.org/places/894082>Pleiades: Samarra/â€Sumere’</a>" +832,"SÄmerÄ«na","SÄmerÄ«na, Samerina, Samaria, Ĺ omerĂ´n, Shomron",1,"32.27663","35.18862","–","prov. capital","–","Helsinki Atlas: 16 (map 7 D4), <a href=https://www.telshimronexcavations.com>Tel Shimron Excavations</a>" +841,"SÄqi","SÄqi","–","–","–","URU.sa-a-qi","town","–","–" +882,"SĹ«ia","SĹ«ia, SĹ«ja, SĹ«ya, SĂ», SĹ«a","–","–","–","KUR.su-Ăş-ia, KUR.su-Ăş, KUR.su-Ăş-a","mount","MÄzamua","Parpola Toponyms: 316" +894,"SĹ«ru (1)","SĹ«ru, Suru, Tell FidÄ“n",1,"35.35883","40.53217","URU.su-Ăş-ri, URU.su-ru","town","BÄ«t-ḪalupĂŞ","Helsinki Atlas: 16 (map 9 C1), Bagg RGTC 7 2: 546 (SĹ«ru 1)" +895,"SĹ«ru (2)","SĹ«ru, Suru, SĹ«r, Sur Telbis, SĹ«r TelbÄ«s",3,"34.36899","42.05814","URU.su-ru, URU.su-Ăş-ru, URU.su-Ăş-ri","town","Sūḫu","Helsinki Atlas: 16 (map 10 B2), Bagg RGTC 7 2: 547" +896,"SĹ«runu","SĹ«runu, Tell ṢūrÄn, Ĺ ewirin",3,"36.56643","37.21078","–","town","–","Helsinki Atlas: 16 (map 2 D4)" +881,"Sūḫu","Sūḫu, Sūḫi, Ĺ oaĘż",1,"–","–","–","country, province","–","Helsinki Atlas: 16 (map 9 D2)" +929,"Tabite","Tabite, Tabitu, Thebeta (2), Tell AbĹ« Arzala, Tall AbĹ« Arzala",3,"36.634","41.04133","URU.ta-bi-te, URU.ta-bi-ti","town","Ḫarmiš","Helsinki Atlas: 16 (map 3 E4), Bagg RGTC 7 2: 581" +927,"TabÄl","TabÄl, Tubal, Cappadocia",2,"–","–","–","region","–","Helsinki Atlas: 16 (map 1 D3)" +930,"Tadmar","Tadmar, Tadmur, Palmyra, Tadmor",2,"34.54724142003493","38.27402120752187","–","city","–","Helsinki Atlas: 16 (map 8 D2)" +933,"Taidu","Taidu, Tell ḤamidÄ«ya, Tell Hamidiya",3,"36.81577174902419","41.16411788377453","–","city","–","Helsinki Atlas: 16 (map 3 E4)" +934,"Tajâ","Tajâ, Taiâ, Kefr Tai, KÉ™far Ṭai, Kafr TÄyÄ, ŮŮر تايا, Kafr NÄyÄ, ŮŮر نايا, Ṭaáąaya (?), طاطية (?)","–","36.4201","37.07461","URU.ta-ia-a","city","Pattinu, Syria","Bagg RGTC 7 1: 247, Astour (1963), JNES 22, Place-Names from the Kingdom of Alalaḫ...: 237, no. 153" +935,"Takritain","Takritain, TagaritejÄni, Birta, Tikrit, Takrit, TakrÄ«t, TikrÄ«t, ṬrÄ«hÄn",4,"34.6012","43.6925","–","–","–","–" +936,"Talbiš","Talbiš, Talmiš, Thilutha, Telbis, Thilabous",1,"34.34466","42.08483","–","town","–","Helsinki Atlas: 17 (map 10 B2)" +937,"Tall ZirÄâ€a","Tall ZirÄâ€a, Tell ZirÄâ€a","–","32.6206","35.65588","–","city","Southern Levant","<a href=http://www.tallziraa.de/Tall-Zira'a/1_106.html>The Gadara Region Project</a>" +938,"TalmĹ«sa","TalmĹ«sa, Gir-e pan",4,"36.776","42.9355","–","prov. capital","–","Helsinki Atlas: 17 (map 4 B5)" +939,"Tamarana","Tamarana, Talid...","–","–","–","–","town","ḪarrÄnu area (?), Central Assyria (?)","RGTC 7 2/2: 585" +940,"Tamessu","Tamesu, Tamassos, Politikou",1,"35.02935209404931","33.24632521688231","–","city","–","Helsinki Atlas: 17 (map 7 B1)" +941,"Tamna","Tamna, Timnah, TimnÄh, Tel Baáąaš, Tel Batash",2,"31.78414897289624","34.91169775911752","–","town","–","Helsinki Atlas: 17 (map 7 C5)" +942,"TamnĹ«na","TamnĹ«na, Tell ǦikÄn",3,"36.61666","42.83333","–","prov. capital","–","Helsinki Atlas: 17 (map 4 B5)" +948,"Tang-i Var","Tang-i Var, TangÄ« Var, تنگي Ůر‎","–","34.9962","46.6183","–","monument","Iran, Karalla (?), Parsua (?)","Helsinki Atlas: 17 (map 11 B2)" +949,"Tanis","Tanis, San el-Hagar","–","30.97589714736804","31.88377780122345","–","–","–","–" +950,"Tapigga","Tapigga, MaĹźat HöyĂĽk","–","40.14831086580463","35.76242077279552","–","–","–","–" +951,"Tarbiṣu","Tarbiṣu, Tarbiṣi, Tell Ĺ arÄ«f ḪÄn, Sharif Khan",1,"36.40915","43.08089","–","city","–","Helsinki Atlas: 17 (map 4 C5)" +953,"Tarmanazi","Tarmanazi, Tarmanaše, TurmÄnÄ«n",3,"36.232","36.82183","–","town","–","Helsinki Atlas: 17 (map 2 C4)" +954,"Tarninu","Tarninu","–","–","–","URU.tar-ni-nu, URU.tar-NINA","town","Central Assyria (?)","Bagg RGTC 7 2/2: 589" +955,"TartÄra","TartÄra, Tartaru, Tharthar, Nahr aṯ-áą®arṯÄr, WÄdÄ« ath TharthÄr, Ůادي الثرثار, الثرثار",1,"34.97575","43.07063","ĂŤD.tar-ta-ri, ĂŤD.tar-ta-ra","river","Iraq","Helsinki Atlas: 17 (map 10 C2), <a href=https://pleiades.stoa.org/places/897854>Pleiades: Tartaru/Tharthar</a>, <a href=https://www.geonames.org/90169/buhayrat-ath-tharthar.html>Geonames: Buḩayrat ath TharthÄr</a>, <a href=https://www.geonames.org/90167/wadi-ath-tharthar.html>Geonames: WÄdÄ« ath TharthÄr</a>, <a href=https://www.geonames.org/90157/wadi-tharthar.html>Geonames: WÄdÄ« TharthÄr</a>" +956,"Tarzi","Tarzi, Tarsa, Tarsus, Tarsos, GözlĂĽ Kule",1,"36.91268346363448","34.89736190801483","–","city","–","Helsinki Atlas: 17 (map 1 D4)" +952,"Tarḫuntašša","Tarḫuntašša, Tarhuntašša, KızıldaÄź (?)",4,"37.49241267862221","33.0758453490096","–","–","–","–" +957,"Tas","Tas, BÄwiyÄn, Bavian",2,"36.78133","43.4075","–","mountain","–","Helsinki Atlas: 17 (map 4 C5)" +959,"TastiÄti","TastiÄti",4,"36.46416","42.95466","–","town","–","Helsinki Atlas: 17 (map 4 B5)" +960,"TaĘżnak","TaĘżnak, TaĘżannach","–","32.52160394899919","35.21993788223087","–","–","–","–" +932,"Taḫazimuna","Tahazimuna, Dazimon, Tokat",4,"40.31747950970083","36.54935398805887","–","–","–","–" +961,"Tebiltu","Negub Tunnel","–","36.022095","43.405813","–","monument, canal","Assyria, Iraq","Helsinki Atlas: 17 (map 4 C5), <a href=https://pleiades.stoa.org/places/413309737>Pleiades: Negub tunnel</a>" +962,"Teišebai URU","Teišebai URU, Karmir-blur","–","40.15358685587648","44.45269887985066","–","–","–","–" +1068,"Tel Motza","Tel Motza, Tel Moza, Khirbet Mizza, Motza, Mozah, Motsa, מֹּצָה, מוֹצָ×‎, Ammaous, Kolonia, Qaluniya, قالŮنيا‎","–","31.79445","35.16378","מֹּצָה, מוֹצָ×","village, temple","Iaʾūdu, Israel","Joshua 18:26, <a href=https://pleiades.stoa.org/places/687979>Pleiades: Moza/Ammaous/Kolonia</a>, <a href=https://www.geonames.org/294148/moza.html>Geonames: Moáş•a</a>" +964,"Tell Razzuq","Tell Razzuq","–","–","–","–","–","Sūḫu, Iraq, ḤadÄ«tha area, ḤamrÄ«n area","RIMB 2: 328" +963,"Tell al-Hawa","Tell al-Hawa","–","36.763329","42.319867","–","–","Iraq, Assyria","<a href=https://pleiades.stoa.org/places/874728>Pleiades: Tell al-Hawa</a>" +965,"TemaĘľ","TemaĘľ, Tayma","–","27.62679170802305","38.54894299042446","–","–","–","–" +967,"Tigris Tunnel","Tigris Tunnel, Birkleyn, Berkilin, Berkilin Çay, Birklin","–","38.52966","40.54764","–","monument","Turkey","Helsinki Atlas: 17 (map 3 D2)" +968,"Til-Abnu","Til-Abnu, Tell Qitar (?)",4,"36.38339418330214","38.18058176413058","–","–","–","–" +969,"Til-Barsib","Til-Barsib, Til-Barsip, TarbusÄ«bi, KÄr-SalmÄnu-ašarÄ“d, KÄr-Salmaneser, KÄr-Ĺ ulmÄnu-ašarÄ“d, Masuwari, Tell Aḥmar, Tell Ahmar",1,"36.67443","38.12095","–","prov. capital","–","Helsinki Atlas: 17 (map 3 B4)" +970,"Til-BaserĂŞ","Til-BašerĂŞ, Tell Bašir, TilbeĹźar",2,"36.8724936391149","37.56017941010104","–","town","–","Helsinki Atlas: 17 (map 2 D4)" +977,"Til-TĹ«ri","Til-TĹ«ri, ĘżAǧÄmÄ«, Tell TĹ«rin, Thiltauri",1,"36.426","37.671","–","city","–","Helsinki Atlas: 17 (map 2 D4)" +973,"Til-lÄ«ni","Til-lÄ«ni","–","–","–","URU.DU₆-li-i-ni (URU.DU₆!-li!-i-ni!), URU.DU₆-li-ni","town","ḪarrÄnu area","Bagg RGTC 7 2/2: 601" +974,"Til-naḫīri","Til-naḫīri","–","–","–","–","town","Assyria, ḪÄbĹ«r territory","RGTC 7 2/2: 603-604" +975,"Til-raḫajÄte","Til-raḫajÄte","–","–","–","–","town","Central Assyria, East ǦazÄ«ra","RGTC 7 2/2: 605" +976,"Til-ša-AbtÄni","Til-ša-AbtÄni, Tell as-Sulaima",3,"34.08333",45,"–","town","–","Helsinki Atlas: 17 (map 10 E2)" +971,"Til-ḫarrapina","Til-ḫarrapina, Til-ḫardušina","–","–","–","–","town","Assyria","RGTC 7 2/2: 598" +972,"Til-ḫauar","Til-ḫauar, Til-ḫawar, Bad-ḫawar, Badḫawar","–","–","–","URU.til-ḫa-Ăş-ar","town","Central Assyria","Bagg RGTC 7 2/2: 599" +978,"Tilgarimmu","Tilgarimmu, TÄ«l-Garimme, GĂĽrĂĽn, TĂ´garmÄh/Tagarama",3,"38.7175","37.27683","–","city","–","Helsinki Atlas: 17 (map 2 D2)" +979,"TillĂŞ","TillĂŞ, Tell RumailÄn",4,"36.94837","41.96987","–","prov. capital","–","Helsinki Atlas: 17 (map 4 A5)" +980,"Tilmun","Tilmun, Dilmun, Failaka, al-Baḥrain,Tylos",2,"–","–","–","territory","–","Helsinki Atlas: 17 (map 17 A4)" +981,"TimnaĘľ","TimnaĘľ","–","15.01919","45.80467","–","–","–","–" +982,"Timur","Timur","–","–","–","–","fortress","QuwĂŞ (country)","–" +983,"Tirza","Tirza, Tirzah, Tell el-Far'ah, Tell el-Far'ah (north)","–","32.287387","35.337803","תִּרְצָה","royal city","Israel, BÄ«t-ḪumrĂ®","–" +984,"TiĘľi","TiĘľi","–","–","–","URU.ti-Ęľi-i","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province","Bagg RGTC 7 2/2: 596" +986,"Tubliaš","Tubliaš, Tupliaš, TupliĘľaš, Tubuliaš, TubliĘľaš, Nahr aáą-Ṭīb, RĹ«dkhÄneh-ye Meymeh",2,"–","–","ĂŤD.tu-bu-li-Ęľa-áš","river, territory","East Babylonia","Helsinki Atlas: 17 (map 11 C4)" +987,"Tugliš","Tugliš, Tubliš",2,"34.31316","46.17383","–","region","–","Helsinki Atlas: 17 (map 11 B2)" +989,"Tulul al-Lak","Tulul al-Lak, Qaryat al-Lak","–","36.299303","43.263063","–","–","Iraq, Assyria","<a href=https://pleiades.stoa.org/places/741318296>Pleiades: Qaryat al-Lak</a>" +990,"Tumme","Tumme",2,"–","–","–","territory","–","Helsinki Atlas: 17 (map 4 D5)" +991,"Tunip","Tunip, Asharneh, al-AšÄrina, Ašarne, Tell Ašarne, Tell Asharneh, Qarqar (alt. loc.), Tell Acharneh, â€Acharneh, Acharneh",4,"35.2839","36.39936","–","–","–","Helsinki Atlas: 17 (map 8 B1), <a href=http://www.acharneh.hst.ulaval.ca/english/frameInter.html>Tell Acharneh Project</a>" +992,"Tunna","Tunna, Dunna, Aladaǧ",2,"–","–","–","mountain","–","Helsinki Atlas: 17 (map 2 B3)" +993,"Turlu HöyĂĽk","Turlu HöyĂĽk, Tell Turlu","–","37.75892","37.06912","–","–","Turkey","<a href=https://pleiades.stoa.org/places/201144661>Pleiades: Turlu HöyĂĽk</a>" +994,"Turna","Turna, DiyÄla",1,"–","–","–","river","–","Helsinki Atlas: 17 (map 10 D3)" +995,"TurnĂ»","TurnĂ»","–","–","–","URU.tur-nu-a-a","town","Central Assyria","Bagg RGTC 7 2/2: 614" +996,"TursÄna","TursÄna, TuršÄ, TuršÄn, Tell MÄḥūz",2,"35.49155","43.83659","–","town","–","Helsinki Atlas: 17 (map 10 C1)" +999,"Tuttul","Tuttul, Tell Bi'a","–","35.95769717739928","39.04765257021229","–","–","–","–" +1000,"Tutub","Tutub, Khafaja","–","33.35566","44.55556","–","–","–","–" +998,"Tušḫan","Tušḫan, Tušhan, ZiyÄret Tepe, Ziyaret Tepe",3,"37.79324242090923","40.79327286803895","–","prov. capital","–","Helsinki Atlas: 17 (map 3 D3)" +1001,"TuĘľammu","TuĘľammu, Tuwwama (?)",4,"36.19342674839879","36.81142717481402","–","–","–","–" +988,"Tuḫana","Tuḫana, Tuhana, Tuwanuwa, Kemerhisar, Tyana, Tuwan",2,"37.82544537714595","34.5646292998379","–","city","–","Helsinki Atlas: 17 (map 1 D3)" +943,"TÄmtu elÄ«tu","TÄmtu elÄ«tu, TÄmtu rabÄ«tu, Mediterranean Sea",2,"–","–","–","sea","–","–" +944,"TÄmtu elÄ«tu ša NaĘľiri","TÄmtu elÄ«tu ša NaĘľiri, TÄmtu ša NaĘľiri, Lake Van",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 4 B3)" +945,"TÄmtu ša Kaldi","TÄmtu ša Kaldi, Persian Gulf",2,"–","–","–","sea","–","Helsinki Atlas: 17 (map 17 B4)" +946,"TÄmtu ša Zamua","TÄmtu ša Zamua, Lake Zeribor",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 11 B1)" +947,"TÄmtu šaplÄ«tu ša NaĘľiri","TÄmtu šaplÄ«tu ša NaĘľiri, TÄmtu ša NaĘľiri, Lake Urmia",2,"–","–","–",",lake","–","Helsinki Atlas: 17 (map 5 A3)" +958,"TÄsa","TÄsa, Taṣdelen, Taše",4,"38.83333","38.5","–","town","–","Helsinki Atlas: 17 (map 3 B2)" +966,"TÄ«du","TÄ«du, Tidu, Kerh, Charcha, Üç Tepe, Kurkh",2,"37.82591","40.54008","–","fortress","–","Helsinki Atlas: 17 (map 3 D3)" +1002,"TĹ«Ęľimmu","TĹ«Ęľimmu, TaĘľum",3,"35.97983","36.75816","–","town","–","Helsinki Atlas: 17 (map 2 C5)" +1072,"Uatzunza","Uatzunza","–","–","–","URU.Ăş-at-zu-un-za, 𒌷𒌑𒀜𒍪𒌦𒍝","fortified city","SangibĹ«tu, Iran","Bagg RGTC 7 3/2: 579" +1073,"Ubabara","Ubabara","–","–","–","URU.Ăş-ba-ba-ra, đ’Ś·đ’Ś‘đ’€đ’€đ’ŠŹ","fortified city","AukanĂŞ, Iran","Bagg RGTC 7 3/2: 581" +1003,"UbasĂŞ","UbasĂŞ, Tell Ḥuwaiš",3,"35.58733","43.25516","–","town","–","Helsinki Atlas: 17 (map 10 C1)" +1004,"Udu","Udu, Arpatepe (?)",4,"37.14136","40.79761","URU.Ăş-da, URU.Ăş-di","town, fortress","Nirdun","Bagg RGTC 7 2: 621–622" +1005,"UdĹ«mu","UdĹ«mu, Edom, EdĂ´m",1,"–","–","–","country","–","Helsinki Atlas: 17 (map 14 C3)" +1006,"Ugarit","Ugarit, Ras Shamra","–","35.60212","35.78557","–","–","–","<a href=https://ochre.lib.uchicago.edu/RSTI>Ras Shamra Tablet Inventory (RSTI)</a>, <a href=https://www.ras-shamra.ougarit.mom.fr>Ugarit Website</a>" +1007,"Ukku","Ukku, Sirnak",4,"37.51666","42.46816","–","city","–","Helsinki Atlas: 17 (map 4 B4)" +1009,"Ulluba","Ulluba, Birtu, Plain of ZÄḫū","–","–","–","–","district, province","–","Helsinki Atlas: 17 (map 4 B4), RGTC 7 2/1: 105–106 (Birtu 2)." +1010,"Uluruš","Uluruš","–","–","–","–","mountain","–","Helsinki Atlas: 18 (map 3 C2)" +1011,"Umma","Umma, Tell Jokha","–","31.66743001625768","45.88767609164621","–","–","–","–" +1012,"Unniga","Unniga, Unchae, Onchae",3,"36.26666","36.58333","–","town","–","Helsinki Atlas: 18 (map 2 C4)" +1013,"Unqi","Unqi, Ężmg, al-ĘżAmq, ĘżAmuq","–","–","–","–","territory","–","Helsinki Atlas: 18 (map 2 C4)" +1014,"Upâ","Upâ, KĹ«h-i-Ḫiplak",2,"–","–","–","mountain","–","Helsinki Atlas: 18 (map 11 B1)" +1015,"UpĂ®","Ă”pis, Tell al-MuǧailÄt, Tulul Mujaili'",1,"33.18443235498685","44.7019290937689","–","city","–","Helsinki Atlas: 18 (map 10 D3)" +1016,"UpĹ«mu","UpĹ«mu, FĹ«m",3,"38.3685","40.74067","–","prov. capital","–","Helsinki Atlas: 18 (map 3 D2)" +1017,"UqnĂ»","UqnĂ»",2,"–","–","–","river","–","Helsinki Atlas: 18 (map 11 B4)" +1018,"Urakka","Urakka, Urkeš, Urkiš, Tell MĹ«zÄn, Tell Mozan",2,"37.05770819862687","40.99640254169595","–","city","–","Helsinki Atlas: 18 (map 3 D3)" +1019,"Uraráąu","Uraráąu, Uruaáąri, Uraáąru, Urartu, Ararat",2,"–","–","–","country, state","Turkey, Armenia","Helsinki Atlas: 18 (map 4 B3)" +1021,"Urrubnu","Urrubnu","–","–","–","KUR.ur-ru-ub-nu","mount","–","–" +1022,"Urrus","Urrus, Orossus, Arsuz, Uluçinar, Rhosos",2,"36.40516","35.89133","–","town","–","Helsinki Atlas: 18 (map 2 B4)" +1023,"Ursalimmu","Ursalimmu, Jerusalem, Yerūšalaim",1,"31.77461","35.23595","–","capital","Iaʾūdu","Helsinki Atlas: 18 (map 7 D5)" +1025,"Uruk","Uruk, Warka, Erech",1,"31.32263","45.63961","–","prov. capital","–","Helsinki Atlas: 18 (map 16 A2)" +1027,"Urzunapi","Urzunapi","–","–","–","–","town","Central Assyria (?)","RGTC 7 2/2: 635" +1026,"Urzâ","Urzâ","–","–","–","URU.ur-za, URU.ur-za-a","town","Central Assyria (?)","Bagg RGTC 7 2/2: 634" +1028,"Usalâ","Usalâ, Tell Ṣuwwar, Tell Suwwar",3,"35.50987","40.66151","URU.Ăş-sa-la-a","town","LÄqĂŞ","Helsinki Atlas: 18 (map 9 C1), Bagg RGTC 7 2: 635" +1029,"UsnĂ»","UsnĂ», Paltos",1,"35.29316","35.95","–","city","–","Helsinki Atlas: 18 (map 8 A1)" +1033,"UzuoÄźlan Tepe","UzuoÄźlan Tepe, Ferhatli, Ferhatlı, Uzunuglantepe","–","37.60767","35.96467","–","monument","Turkey, Cilicia, Ḫilakku (?), QuwĂŞ (country) (?)","Helsinki Atlas: 18 (map 2 B3), O. AytuÄź TaĹźyĂĽrek, Some New Assyrian Rock-Reliefs in Turkey: 169" +1030,"Ušiši","Ušiši","–","–","–","URU.Ăş-ši-ši","town","Iran, Media (?)","–" +1031,"Ušqaia","Ušqaia, Uski",3,"37.91666","46.16666","–","fortress","–","Helsinki Atlas: 18 (map 5 B3)" +1032,"Ušû","Ušû, Tell RašīdÄ«ya, Palaityros",1,"33.23673","35.21616","–","city","–","Helsinki Atlas: 18 (map 8 A3)" +1034,"Wadi Bastura Tunnel","Wadi Bastura Tunnel, Qala Mortka","–","36.35169","44.11584","–",",canal, monument","Iraq, Assyria","Helsinki Atlas: 18 (map 4 D5), <a href=https://pleiades.stoa.org/places/359792984>Wadi Bastura Tunnel Inscription</a>" +1035,"Waisi","Waisi, Qalatgah",3,"37.0354","45.2209","–","prov. capital","–","Helsinki Atlas: 18 (map 4 E4)" +1036,"Wauš","Wauš, Uauš, KĹ«h-e Sahand",2,"–","–","–","mountain","–","Helsinki Atlas: 18 (map 5 B3)" +1037,"Wilusa","Wilusa, Wiluša, Troy, Hisarlik","–","39.95751754939872","26.23830411661108","–","–","–","–" +1038,"Wišdiš","Wišdiš, Uišdiš, Plain of Marand",3,"–","–","–","district","–","Helsinki Atlas: 18 (map 5 A3)" +1041,"Zabalam","Zabalam, Tulul Ibzaikh","–","31.74472924832169","45.87575461093312","–","–","–","–" +1042,"Zabannu","Zabannu, SabaĘľa, Tell Umm ĘżAqrubba",4,"35.66165","41.19707","–","town, monument","–","Helsinki Atlas: 18 (map 9 D1)" +1043,"Zabban","Zabban",3,"34.5","44.83333","–","city","–","Helsinki Atlas: 18 (map 10 D2)" +1044,"ZadidÄni","ZadidÄni, ZadidÄnu, ruins al-Mḥddâde (?)","–","–","–","URU.za-di-da-a-ni","town","mid-Euphrates","Bagg RGTC 7 2: 641" +1045,"ZakrĹ«ti","ZakrĹ«ti","–","–","–","–","district","–","Helsinki Atlas: 18 (map 12 A2)" +1046,"Zamaḫâ","Zamaḫâ, Qatara, Qattara, Qaáąáąara, Zamahe, Karana (?), Tell al-RimÄḥ, Tell Rimah, Tell al-Rimah",2,"36.25677","42.45019","–","town","–","Helsinki Atlas: 18 (map 4 B5), <a href=https://pleiades.stoa.org/places/356369838>Pleiades: Qattara?/Karana?</a>" +1047,"ZanbÄja","ZanbÄja, Zanba","–","–","–","URU.za-an-ba-a-a","town","Central Assyria, Nineveh province (?)","Bagg RGTC 7 2/2: 643" +1048,"Zaralulu","Zaralulu, Tell ed-Diba'i","–","33.322758019531","44.48194432052211","–","–","–","–" +1049,"Zaranda","Zaranda, Plain of EvoġlÄ«",3,"–","–","–","region","–","Helsinki Atlas: 18 (map 4 E3)" +1050,"Zawiyeh","Zawiyeh, ZawiyyÄ, Zawiyah, ZÄwiyah","–","34.29263"," 42.1725","–","–","Sūḫu, Iraq","RIMB 2: 323" +1051,"Zikirtu","Zikirtu",2,"–","–","–","country","–","Helsinki Atlas: 18 (map 5 A3)" +1052,"ZikkĂ»","ZikkĂ», YÄramǧa, Yaremjeh, يارمجة",4,"36.3005","43.19083","URU.zi-ik-ku-u, URU.zi-ik-ku-Ăş","town","Central Assyria","Helsinki Atlas: 18 (map 4 C5), Bagg RGTC 7 2/2: 645–646" +1053,"ZitÄnu","ZitÄnu, ZaytÄn",1,"36.05839","37.01205","–","town","–","Helsinki Atlas: 18 (map 2 D4)" +1054,"Zuqarru","Zuqarru",3,"37.06133","37.8645","–","town","–","Helsinki Atlas: 18 (map 3 A3)" +1039,"ZÄba elĂ»","ZÄba-elĂ», Upper Zab, az-ZÄb al-aĘżlÄ",1,"–","–","–","river","–","Helsinki Atlas: 18 (map 4 C5)" +1040,"ZÄba šaplĂ»","ZÄba-šaplĂ», az-ZÄb al-asfal, Lower Zab",1,"–","–","–","river","–","Helsinki Atlas: 18 (map 10 C1)" +32,"Ä€l-Adad","Ä€l-Adad","–","–","–","URU-<sup>d</sup>IM","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 14 (Ä€l-Adad 2)" +34,"Ä€l-DaiÄn-Adad","Ä€l-DaiÄn-Adad, Äl DaiÄn-Adad, BÄ«t-DaiÄn-Adad, DaiÄn-Adad",4,"36.16667","37.16667","–","town, village, city","Ḫatti","Helsinki Atlas: 5 (map 2 D4)" +35,"Ä€l-DannÄia","Ä€l-DannÄia, Ä€l-DannÄja","–","–","–","URU.da-na-a-a","town","Central Assyria (?), Nineveh province (?)","Bagg RGTC 7 2/1: 19" +36,"Ä€l-Naḫal-Muṣur","Ä€l-Naḫal-Muṣur, Äl Naḫal Muṣur, City of the Brook of Egypt, Ężngrn, al-ĘżArīš, العريش‎, Rhinocolura, Rhinokoloura, ῬινοκόĎουĎα",3,"31.1285","33.8075","URU.na-ḫal-mu-ṣur, URU.na-ḫal-mu-uṣ-ri","town","Muṣur, Egypt","Helsinki Atlas: 5 (map 13 C2), Bagg RGTC 7 1: 5–6, <a href=https://pleiades.stoa.org/places/688016>Pleiades: Rhinocolura</a>" +33,"Ä€l-ašlÄkÄni","Ä€l-ašlÄkÄni, Town of the washers, Fuller Town","–","–","–","–","town","Central Assyria, Nineveh province (?)","RGTC 7 2/1: 16" +37,"Ä€l-rÄdi-imÄri","Ä€l-rÄdi-imÄri, RÄdi-emÄri, Town of the Donkey Drivers, Donkey-Driver Town","–","–","–","URU-UĹ -ANĹ E","town","Central Assyria","RGTC 7 2/1: 24–25" +40,"Ä€l-sirÄšî","Ä€l-sirÄšî, Brewers' village, Brewers' town","–","–","–","URU-LUNGA.MEĹ , URU-LĂšNGA.MEĹ , URU-LĂš.LĂšNGA.MEĹ ","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province (?), Kalḫu province (?)","Bagg RGTC 7 2/1: 25–26" +41,"Ä€l-sĹ«sÄnÄ«","Ä€l-sĹ«sÄnÄ«, Horse Trainer Town, Horse-Trainer Town‏‎","–","–","–","–","town","Assyria, Arbail (province)","Bagg, RGTC 7 2/1: 26" +39,"Ä€l-ṢÄṣi","Ä€l-ṢÄṣi, ṢÄṣu","–","–","–","URU.2-ṣa-a-ṣi","town","Central Assyria","Bagg RGTC 7 2/1: 27" +38,"Ä€l-ṣarrÄpÄ«","Ä€l-ṣarrÄpÄ«, Town of the Goldsmiths, Goldsmith Town","–","–","–","URU-SIMUG.KUG.GI","town","Central Assyria","RGTC 7 2/1: 26–27" +50,"Ä€lu-ša-LibbÄlÄja","Ä€lu-ša-LibbÄlÄja, Ä€lu-ša-LibbÄlÄia, Ä€lu-ša-Libbi-ÄlÄja, YÄramǧa, Yaremjeh, يارمجة","–","36.3031","43.17633","URU-šá-ŠÀ-URU-a-a, URU-šá-LĂš.ŠÀ-URU-a-a","town","Central Assyria","Bagg RGTC 7 2/1: 35" +1070,"Ä€lu-ša-Lulûʾa","Ä€lu-ša-Lulûʾa","–","–","–","URU.ša-mlu-lu-Ăş-a","town","Central Assyria (?), Iraq (?)","Bagg RGTC 7 3/2: 957 (add. to 7/2)" +51,"Ä€lu-ša-rÄáąÄtīšu","Ä€lu-ša-rÄáąÄtīšu, Plumbers' Town, Maláąeh Naṣara, MÄláąah NaṣÄrÄ, مالطة نصارى","–","36.85276","42.93362","URU-ša-ra-áąa-áąi-šú","town","Central Assyria, Kurbail","Bagg RGTC 7 2/1: 38" +52,"Ä€lu-ša-rēšÄni","Ä€lu-ša-rēšÄni, Eunuch Town","–","–","–","URU.2.LĂš.SAG.MEĹ , URU.LĂš.SAG.MEĹ ","town","Central Assyria, Kalḫu province (?)","Bagg RGTC 7 2/1: 38–39" +49,"Ä€lu-ša-ḪarÄni","Ä€lu-ša-ḪarÄni, Älu ša ḪarÄni, Ĺ a-ḪarÄni, Tall Ḫanḏal, Tall AbĹ« ḤÄĘľit (?)",2,"35.25","40.51667","URU.šá-<sup>m</sup>ḫa-ra-a-ni","village","BÄ«t-ḪalupĂŞ, LÄqĂŞ (?)","Helsinki Atlas: 5 (map 9 C1), Bagg RGTC 7 2/1: 32–33, <a href=https://pleiades.stoa.org/places/894106>Pleiades: Tell Abu Hait/Sangarite?/Sachare?</a>" +55,"Ä€midu","Ä€midu, AmÄ“du, Amidu, Amidi, Amida, Amedu, Ä€mid, Diyarbakir, Diyarbakır",1,"37.9101","40.23852","URU.a-me-di, a-me-di, a-me-du, URU.a-me-du, URU.a-mi-di, URU.a-med-a-a","city, capital, province","Ä€midu (province), BÄ«t-ZamÄni, Turkey, BÄ«t-ZamÄni","Helsinki Atlas: 5 (map 3 D3), Bagg RGTC 7 2/1: 43–44 (AmÄ“du)" +63,"Ä€mul","Ä€mul, Amul, Ä€mol",4,"36.47083","52.34933","URU.a-mul","city","Zagros mountains, Iran","Helsinki Atlas: 5 (map 6 D4)" +67,"Ä€nat","Ä€nat, Anat, Anatu, Ḫanat, Ana, Ä€natha, Ä€natho, Qal'at 'Ana, Anah, ʾĀna, عانة‎",1,"34.46761","41.97943","URU.a-na-at, URU.an-at, LĂš.an-at-a-a, URU.ana-te","city, island","Sūḫu, Iraq","Helsinki Atlas: 5 (map 10 B1), Bagg RGTC 7 2/1: 46–47 (Anat), <a href=https://pleiades.stoa.org/places/893936>Pleiades: Anatho</a>, <a href=https://books.openedition.org/cdf/4564#tocfrom2n39>MTT I/2 (HIGEOMES Nr. 196)</a>" +503,"ÄŞtu","ÄŞtu, ÄŞdu, Idu, Ida, Is, Idi, Hit, HÄ«t, هيت",1,"33.64391811933405","42.82314138727005","URU.i-te, URU.itu5 (= URU.ĂŤD)","town","Sūḫu, Iraq","Bagg RGTC 7 2/1: 259, Helsinki Atlas: 10 (ÄŞdu, map 10 B3), Parpola Toponyms: 179" +897,"Ĺ abirēšu","Ĺ abirēšu, Basorin",4,"37.15179","42.34429","–","city","–","Helsinki Atlas: 15 (map 4 B4)" +898,"Ĺ abuqu","Ĺ abuqu","–","–","–","KUR.šá-bu-qa-a.a, LĂš.šá-bu-qa-a.a","territory (?), tribe (?)","–","<a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +899,"Ĺ adikanni","Ĺ adikanni, Ĺ adikannu, ĘżArbÄn, Arabana, Tell ĘżAÄźÄÄźa, Tell 'Ajaja",1,"36.2081","40.72067","šá-URU.di-kan-ni, URU.šá-di-kan-ni, di-ka-ni-a, KUR.di-ka-na-a-ia, URU.di-kan-a-a, URU.šá-di-kan-a-a, URU.še-di-kan-a-a","city","ḪÄbĹ«r area","Helsinki Atlas: 15 (map 3 D4), Bagg RGTC 7 2: 559" +900,"Ĺ aduppĂ»m","Ĺ aduppĂ»m, Tell Harmal","–","33.30978245280799","44.46657571197006","–","–","–","–" +902,"Ĺ akmu","Ĺ akmu, Shechem, Ĺ ekem, Tell Balata","–","32.2135081628689","35.28222003429811","–","–","–","–" +903,"Ĺ apinuwa","Ĺ apinuwa, Ortaköy","–","40.25443121418439","35.23660208437604","–","–","–","–" +905,"Ĺ arišša","Ĺ arišša, KuĹźaklı","–","39.30842871867329","36.90967428160425","–","–","–","–" +906,"Ĺ arru-iddina (city)","Ĺ arru-iddina","–","–","–","–","city","Central Assyria, Aššur province","RGTC 7 2/2: 564" +904,"Ĺ arēši","Ĺ arēši, Tell Ĺ arÄ«sÄ«",4,"36.83333","41.33333","–","town","–","Helsinki Atlas: 15 (map 3 E4)" +901,"Ĺ aḫuppa","Ĺ aḫuppa, Saḫuppa, Ĺ uḫuppa, Katmuḫi, Katmuḫu, Kadmuḫi","–","–","–","URU.šá-ḫu-up-pa, URU.sa-ḫu-up-pa, ša-ḫup-pa, URU.šá-ḫu-pa, URU.šá-ḫup-pa, URU.šú-ḫu-pa","city, province","Assyria","Bagg RGTC 7 2/2: 560–561, <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>" +907,"Ĺ ibanÄ«ba","Ĺ ibanÄ«ba, Ĺ ibaniba, Tell Billa",1,"36.43376","43.34825","–","prov. capital","–","Helsinki Atlas: 15 (map 4 C5)" +908,"Ĺ iddi nÄri","Ĺ iddi nÄri, Ĺ iddi-nÄri, Parapotamia","–","–","–","–","district","–","Helsinki Atlas: 15 (map 3 B5)" +909,"Ĺ iddi-asika","Ĺ iddi-asika","–","–","–","–","town","Assyria","Bagg RGTC 7 2/2: 568" +910,"Ĺ iddi-ḫirÄ«ti","Ĺ iddi-ḫirÄ«ti, Ušḫiriti","–","–","–","URU.UĹ -ḫi-ri-ti","town","Central Assyria, DĹ«r-Ĺ arrukÄ«n province (?)","Bagg RGTC 7 2/2: 568–569" +913,"Ĺ ingiša","Ĺ ingiša","–","37.6","40.88","–","town","–","Helsinki Atlas: 15 (map 3 D3)" +914,"Ĺ inuḫtu","Ĺ inuḫtu, NiÄźde",3,"37.97583","34.69516","–","city","–","Helsinki Atlas: 15 (map 1 D3)" +915,"Ĺ iru Malikta","Ĺ iru-Malikta, Ĺ iru Malikta","–","36.74466","43.06116","–","monument","Central Assyria, TalmĹ«sa province","–" +916,"Ĺ išlu","Ĺ išil, Ĺ išlu, Ĺ išda, Ĺ ašilĹ«, Ĺ ilšil, Ĺ ašillÄnu, al-QayyÄra, QayyÄra, القيارة",4,"35.8025","43.29133","URU.ši-iš-li, URU.ši-iš-lu, URU.ši-šil, URU.ši-šil-a-a","town","Iraq","Helsinki Atlas: 15 (map 4 C6), Bagg RGTC 7 2/2: 572–573 (Ĺ išil)" +918,"Ĺ ubarĂ»","Ĺ ubarĂ», Ĺ ubarĂ»m, SubarĂ», Subaru, Ĺ ubaru, Subir, Ĺ ubartum","–","–","–","KUR.šu-ba-re-e, KUR.šu-ba-ri-i, KUR.šu-pa-re-e","territory","–","Bagg RGTC 7 2: 573" +919,"Ĺ ubat-Enlil","Ĺ ubat-Enlil, Ĺ eḫna, Tell Leilan","–","36.9585300465899","41.5062658743722","–","–","–","–" +920,"Ĺ ubria","Ĺ ubria",1,"–","–","–","country","–","Helsinki Atlas: 15 (map 2 D2)" +921,"Ĺ uksu","Ĺ uksu, Tell Sukas","–","35.30587310836101","35.92274244299347","–","–","–","–" +922,"Ĺ urda","Ĺ urda","–","–","–","–","country, region","Iran, Zagros Mountains","–" +924,"Ĺ uruppak","Ĺ uruppak, Fara","–","31.7776323654228","45.50974801317648","–","–","–","–" +926,"Ĺ ušarra","Ĺ ušarra, Tell Shemshara","–","36.20064","44.93869","–","–","–","–" +911,"Ĺ Ä«mu","Ĺ Ä«mu, SiĘľimĂŞ","–","–","–","–","city","Central Assyria, Province of Ĺ Ä«mu","RGTC 7 2/2: 569–570" +912,"Ĺ Ä«mu (province)","Ĺ Ä«mu, SiĘľimĂŞ","–","–","–","–","province","Central Assyria","RGTC 7 2/2: 569–570" +917,"Ĺ Ä«tamrat","Ĺ Ä«tamrat",2,"–","–","–","mountain","–","Helsinki Atlas: 15 (map 3 B4)" +923,"Ĺ Ĺ«ru","Ĺ Ĺ«ru, Sauras, Tzauras",1,"–","–","–","town","–","Helsinki Atlas: 15 (map 3 D3)" +925,"Šūšan","Susa, Šūš, SĹ«sa, Šûšan",1,"32.18977297421221","48.25205205147439","–","capital","–","Helsinki Atlas: 15 (map 17 Al)" +1008,"ĹŞlÄia","Ulai, Eulaios, Karḫe, Karkhe",2,"–","–","–","river","–","Helsinki Atlas: 17 (map 17 A2)" +1024,"ĹŞru","ĹŞru, Ă›r, Ur, Tell al-Muqayyar, Tell Muqayyar",1,"30.9618","46.10512","–","prov. capital","Babylonia","Helsinki Atlas: 18 (map 16 B3)" +1055,"ĘľAtaroth","Khirbet 'Ataruz (?), Khirbat Ataruz, עֲ×ָרוֹת, ĘżÄáąÄrĂ´t",4,"31.57431","35.66511","עֲ×ָרוֹת","city","MÄĘľab, Transjordania, Israel","<a href=http://www.ataruz.org>Khirbat Ataruz Project</a>, <a href=https://www.thetorah.com/article/ataroth-and-the-inscribed-altar-who-won-the-war-between-moab-and-israel>Ataroth and the Inscribed Altar</a>" +1056,"ĘżAqaba","Aqaba, ĘżAqaba, Al-ĘżAkĹ«ba (?), Aqabah (?), العŮŮبة, BaĘľqĹ«ba (?), Baqubah (?), بعقŮبة",3,"33.52954","42.91286","URU.a-qa-ba","town","Babylonia, MÄt-tâmti (?), Iraq","Helsinki Atlas: 6 (map 10 B3), Bagg RGTC 7 3/1: 46–47" +383,"ḪabrĹ«ri","ḪabrĹ«ri (province), ḤerÄ«r Plain",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 4 D5)" +384,"ḪabĹ«r","ḪabĹ«r, ḪÄbĹ«r, Khabur",1,"–","–","–","river","–","Helsinki Atlas: 9 (map 9 C1)" +379,"Ḫabḫu","Ḫabḫu",3,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 5 A4)" +380,"Ḫabḫu ša bÄ“tÄni (1)","Ḫabḫu ša bÄ“tÄni",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 4 B4)" +381,"Ḫabḫu ša bÄ“tÄni (2)","Ḫabḫu ša bÄ“tÄni_(1)",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 4 D5)" +382,"Ḫabḫu ša pÄn Ḫatti","Ḫabḫu ša pÄn Ḫatti",2,"–","–","–","mountain","–","Helsinki Atlas: 9 (map 3 C3)" +385,"Ḫadattu","Ḫadatu, Ḫadattu, Hadatu, Hadattu, ArslÄn ṬÄš, Arslan Tash",1,"36.84938","38.40774","–","city","–","Helsinki Atlas: 9 (map 3 B4)" +386,"Ḫadina","Ḫadina",4,"–","–","–","river","–","Helsinki Atlas: 9 (map 8 B2)" +387,"Ḫalab","Ḫalab, Ḫalman, Halab, Aleppo, Ḥalab",1,"36.19911","37.16416","–","city","–","Helsinki Atlas: 9 (map 2 D4), Bagg RGTC 7 1: 84 (Ḫalman 1)" +388,"Ḫalaḫḫu","Ḫalaḫḫu, חֲלַח",2,"–","–","–","district","–","Helsinki Atlas: 9 (map 4 C5), Bagg RGTC 7 2/1: 194–195" +389,"Ḫaldini Ziuquni","Haldini Ziuquni, Kef Kalesi (?)",4,"38.8305","42.72728","–","–","–","–" +391,"ḪalmÄn","ArmÄn, Ḥolwa, ḤulwÄn",1,"34.45983","45.86266","–","city","–","Helsinki Atlas: 9 (map 11 A2)" +392,"Ḫalpi","Ḫalpi, Gölbasi",2,"–","–","–","district","–","Helsinki Atlas: 9 (map 2 D3)" +393,"ḪalulĂŞ","ḪalulĂŞ",3,"34.16666","43.86666","–","town","–","Helsinki Atlas: 9 (map 10 C2)" +394,"Ḫalzi-atbÄri","Ḫalzi-atbÄri",2,"–","–","–","province","–","Helsinki Atlas: 9 (map 4 B4), RGTC 7 2/1: 201–202." +395,"Ḫalziluḫa","Ḫalziluḫa","–","–","–","URU.ḫal-zi-lu-ḫa","town","Turkey","Bagg RGTC 7 2/1: 202" +396,"Ḫalzu","Ḫalzu, Ḫalzi",2,"–","–","–","city","Central Assyria, Province of Ḫalzu","Helsinki Atlas: 9 (map 4 C5), RGTC 7 2/1: 200" +397,"Ḫalzu (province)","Ḫalzu, Ḫalzi",2,"–","–","–","province","Central Assyria","Helsinki Atlas: 9 (map 4 C5), RGTC 7 2/1: 200" +390,"Ḫalēḫasta","Ḫalēḫasta, Ḫarēḫasta","–","–","–","KUR.ḫa-le-e-ḫa-as-ta, URU.ḫa-le-e-ḫa-as-ta, URU.ḫa-re-e-ḫa-as-ta, URU.ḫa-re-ḫa-as-ta","mount, territory","East Babylonia","Bagg RGTC 7 2/1: 196–197" +398,"Ḫamanu","Ḫamanu, ḪamÄnu, Amanus",2,"–","–","KUR.ḫa-ma-na, KUR.ḫa-ma-ni, KUR.ḫa-ma-nim, KUR.ḫa-ma-nu, KUR.ḫa-ma-a-ni, KUR.ḫa-ma-a-nu, ḫa-ma-ni","mountain","–","Helsinki Atlas: 9 (ḪamÄnu, map 2 C4), <a href=http://oracc.museum.upenn.edu/saao/knpp/peoplegodsplaces/index.html>Knowledge and Power: People, gods & places</a>, <a href=https://www.ucl.ac.uk/sargon/peoplegodsplaces>Assyrian empire builders</a>" +399,"ḪamÄnu","ḪamÄnu","–","–","–","URU.ḫa-ma-a-nu, KUR.ḫa-ma-nu, URU.ḫa-ma-nu","city","Elam","–" +400,"ḪamÄt","ḪamÄt, Amattu, Amatu, ḤamÄt, ḤamÄ, Hama, Hamath",1,"35.13589896027996","36.74949783765234","–","city, capital, state","Syria, ḪamÄt","Helsinki Atlas: 9 (map 8 B1)" +401,"ḪamĹ«ru","ḪamĹ«ru","–","–","–","–","tribe in Babylonia, living near Borsippa","–","PNA 2/2: 256; PNA 2/2: 728; PNA 3/2: 1283; Vera Chamaza (2002): ''Die Omnipotenz Aššurs'' (AOAT 295): 30–31" +402,"Ḫanigalbat","Ḫanigalbat",2,"–","–","–","territory, Middle Assyrian province","Turkey, Syria, territory of the KÄšijÄ“ri mountains","Helsinki Atlas: 9 (map 3 D4), Bagg RGTC 7 2/1: 206" +403,"ḪanqÄti","ḪanqÄti","–","–","–","URU.ḫa-an-qa-a-ti","town","Central Assyria (?)","Bagg RGTC 7 2/1: 207" +404,"Ḫanusa","Ḫinnis, Khinis, Hinnis",2,"36.75617","43.41486","–","village","–","Helsinki Atlas: 9 (map 4 C5)" +405,"Ḫappati","Ḫappati","–","–","–","URU.ḫa-ap-pa-ti","town","Central Assyria (?), Nineveh province","Bagg RGTC 7 2/1: 208" +407,"Ḫarbe","Harbe, Tell Huera","–","36.64698549413157","39.49853194903646","–","–","–","–" +408,"ḪarbĂŞ","ḪarbĂŞ, ḪarbĂ»","–","–","–","URU.ḫar-bĂ©-e","town","mid-Euphrates, Sūḫu, al-Koáąbijje (?)","Bagg RGTC 7 1: 210" +410,"Ḫariḫumba","Ḫariḫumba","–","–","–","URU.ḫa-ri-ḫum-ba, URU.ḫar-ḫum-ba","town","Central Assyria, Kalḫu province","Bagg RGTC 7 1: 211–212" +411,"Ḫariṣû","Ḫariṣû, Ḥariṣṣa",2,"33.97816","35.67416","–","town","–","Helsinki Atlas: 9 (map 8 A3)" +413,"Ḫarmiš","Ḫarmiš, ÄžaġğÄġ, HarmÄs",2,"–","–","–","river","–","Helsinki Atlas: 9 (map 3 E4)" +412,"ḪarmÄsu","ḪarmÄsu, ḪarmÄše",4,"36.79999","43.5","–","town","–","Helsinki Atlas: 9 (map 4 C5)" +414,"ḪarrÄnia","ḪarrÄnia, RÄniya",3,"36.25817","44.90183","–","town","–","Helsinki Atlas: 9 (map 4 D5)" +415,"ḪarrÄnu","ḪarrÄnu, Harran, ḤarrÄn, Carrhae",1,"36.8666","39.03039","–","prov. capital","–","Helsinki Atlas: 9 (map 3 C4)" +409,"ḪarḫÄr","ḪarḫÄr, Ḫarḫar, KÄr-Ĺ arrukÄ«n, Malayer, Tepe Giyan",4,"34.18139","48.24361","–","prov. capital","–","Helsinki Atlas: 9 (map 12 A2), Radner 2018: The “Lost Tribes of Israel” in the Context of the Resettlement Programme of the Assyrian Empire, p. 110." +416,"Ḫasamu","Ḫasamu, ḤasmÄ« ṬūrÄ, Teke DaÄźi",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 3 C3)" +420,"Ḫatallu","Ḫatallu, Ḫaáąallu, Ḫadallu","–","–","–","KUR.ḫa-da-lu, KUR.ḫa-tal-li, KUR.ḫa-ta-li, KUR.ḫa-ta-lim, LĂš.ḫa-tal-la-a-a, LĂš.ḫa-tal-a-a, LĂš.ḫa-tal-la, LĂš.ḫa-tal-li, LĂš.ḫa-tal-lu, LĂš.ḫa-tal-lum",",Aramean tribe, territory","Iraq, Raṣappa province (?)","Bagg RGTC 7 2/1: 220–221" +421,"Ḫatarikka","Hatarikka, ḪadrÄk, ḥzrk, ĘżAḏrÄ, Hadra",3,"33.60616","36.51216","–","prov. capital","–","Helsinki Atlas: 10 (map 8 B3)" +424,"Ḫatti","Ḫatti",2,"–","–","–","territory","–","Helsinki Atlas: 10 (map 2 C4)" +425,"Ḫattuša","Hattuša, BoÄźazköy","–","40.01438533090195","34.6140544346557","–","–","–","–" +423,"Ḫattâ","Ḫattâ, Ḫatâ","–","–","–","URU.ḫat-ta-a, URU.ḫa-ta-a","town","Central Assyria, TalmĹ«sa province (?)","PNA 1/1: 4, Bagg RGTC 7 2/1: 222, SAA 6 268" +426,"ḪaurÄni","ḪaurÄni, ḤawÄr an-Nahr",3,"36.51433","37.25233","–","town","–","Helsinki Atlas: 10 (map 2 D4)" +429,"Ḫazi","Hazi, Tell Hizzin (?)",4,"33.96514007015759","36.10399255635561","–","–","–","–" +431,"Ḫazzat","Hazzat, Gaza, Ä azza, Ężazza, Tell Harube, Tell 'Azza",1,"31.54755980011124","34.51377704279476","–","capital","–","Helsinki Atlas: 10 (map 7 C5)" +428,"ḪazÄzu","ḪazÄzu, Hazazu, ĘżAzÄz, 'Azaz",1,"36.58626410781966","37.04525182513137","–","city","–","Helsinki Atlas: 10 (map 2 D4)" +419,"Ḫašmar","Ḫašmar, Darband-e ḪÄn",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 11 A1)" +417,"Ḫaṣōr","Ḫaṣōr, Hazor","–","33.01724381534079","35.56794736461505","–","–","–","–" +433,"ḪešbĹŤn","ḪešbĹŤn, Heshbon, Tell Hesban","–","31.80133725149214","35.809734682461","–","–","–","–" +435,"Ḫilakku","Ḫilakku, Cilicia",2,"–","–","–","country","–","Helsinki Atlas: 10 (map 1 C4)" +436,"Ḫildua","Hildua, ḪÄn el-Ḫulda, ḪuldÄ, Ḫalde, Khalda",1,"33.78912076105539","35.47415191117009","–","town","–","Helsinki Atlas: 10 (map 8 A3)" +439,"Ḫindaru","Ḫindaru, Ḫindiru","–","–","–","–",",Aramean tribe","Babylonia","–" +438,"ḪindÄnu","Hindanu, Giddan, 'Eddana, al-ÄžÄbirÄ«ya, Karable",2,"34.38484","41.06521","–","city, country, province","–","Helsinki Atlas: 10 (map 9 D2)" +440,"ḪinnatĹ«na","ḪinnatĹ«na, Ḫinatuna, Hinatuna, Hinnatuna, Hannaton, Tell al-BadawÄ«ya, ḤannatĂ´n, Tel Hannaton, Tell el-Badawiya, ḤinnÄtĂ´n, AsĹŤchis, Tel Ḥanaton",1,"32.78574","35.25794","–","town","Israel","Helsinki Atlas: 10 (map 8 A4), Bagg RGTC 7/1: 107–108" +441,"Ḫinnis Monuments","Ḫinnis Monuments, Kharusa Monuments, Hinnis Monuments, Bavian Monuments, Khinis Monuments, Bawian Monuments, Khinnis Monuments","–","36.76156","43.41999","–","monument","Iraq, Assyria","Helsinki Atlas: 10 (map 4 C5)" +442,"ḪiptĹ«nu","ḪiptĹ«nu, Hefton, Tell ḤaftĹ«n",3,"36.65","44.25","–","town","–","Helsinki Atlas: 10 (map 4 D5)" +443,"ḪirÄ«tu","ḪirÄ«tu","–","–","–","–","river","BabyloĂ©nia, GambĹ«lu","–" +445,"Ḫubišna","Ḫubišna, Ḫupišna, Ḫubušna, Hubišna, Hupišna, Hubušnu, Kybistra, Cybistra, KarahĂĽyĂĽk,'Eregli",1,"37.66234693212137","34.22669200769285","–","city","–","Helsinki Atlas: 10 (map 1 D3)" +446,"Ḫubuškia","Ḫubuškia, Ḫubušku, ḪÄne Plain",2,"–","–","–","country","–","Helsinki Atlas: 10 (map 4 E5)" +444,"ḪubÄba","ḪubÄba","–","–","–","–","town","Central Assyria, Province of Ĺ Ä«mu","RGTC 7 2/1: 235" +447,"Ḫudubili","Ḫudubili, Ḫudubilu","–","–","–","URU.ḫu-du-bi-li","town","mid-Euphrates, Sūḫu","Bagg RGTC 7 1: 236" +448,"ḪukkurĹ«na","ḪukkurĹ«na, al-LaÄźÄ",2,"–","–","–","region","–","Helsinki Atlas: 10 (map 8 B4)" +449,"ḪulbĹ«nu","ḪulbĹ«nu, ḤelbĂ´n, ḤalbĹ«n",2,"–","–","–","mountain","–","Helsinki Atlas: 10 (map 8 B3)" +450,"ḪulḫulÄ«tu","ḪulḫulÄ«tu, Ḫalḫala, ḤulḥulÄ“",2,"33.06133","36.53316","–","town","–","Helsinki Atlas: 10 (map 8 B3)" +451,"Ḫundur","Ḫundur, Ḫundiru","–","–","–","URU.ḫu-un-dĂr-a-a, LĂš.ḫu-un-du-ru-a-a, URU.ḫu-un-du-ur, URU.ḫu-un-du-ur-a-a","city","Iran","Parpola Toponyms: 169 (Ḫundiru and Ḫundur)" +452,"Ḫupšana","Ḫupšana, Hupšana, Deh-e Now","–","32.06884773403157","48.57295649754241","–","–","–","–" +453,"Ḫuri-ṣubuĘľi","Huri-ṣubuĘľi, Khraṣbo?","–","35.61418771815032","35.87285278541339","–","–","–","–" +454,"Ḫurmu","Ḫurmu, ḤÄrim",3,"36.20724","36.51909","–","town","–","Helsinki Atlas: 10 (map 2 C4)" +455,"Ḫursagkalama","Ḫursagkalama, Hursagkalama, Inġarra, Ingharra, see also Kiš","–","32.54463","44.613","–","city","–","Helsinki Atlas: 10 (map 10 D4)" +456,"Ḫusur","Ḫusur, Ḫosr",1,"–","–","–","river","–","Helsinki Atlas: 10 (map 4 C5)" +457,"Ḫuzarra","Ḫuzarra, Ḥazra al-ĘżAtÄ«qa",3,"36.244","36.79333","–","town","–","Helsinki Atlas: 10 (map 2 C4)" +459,"Ḫuzirina","ḪuzirÄ«na, Ḫuzirina, Ḫaziri, ḪuzÄ«rÄnu, ʿĀmĹ«dÄ",3,"37.10333","40.87867","URU.ḫu-zi-ri-na","town","Ḫanigalbat","Helsinki Atlas: 10 (map 3 D3), Bagg RGTC 7 1: 238–239, Postgate, RlA 4: 535–536" +460,"ḪuzirÄ«na","ḪuzirÄ«na, Huzirina, Huzarad, HuzariĘľum, Hostra, Sultantepe",1,"37.05035","38.90587","URU.ḫu, URU.ḫu-zir-na, URU.ḫu-zir-i-na, URU.ḫu-zir-ri-na","city","Balīḫ basin","Helsinki Atlas: 10 (map 3 B3), Bagg RGTC 7 1: 238–239, Postgate, RlA 4: 535–536" +458,"ḪuzÄza","ḪuzÄza, Ḥuzaiz, ḤuzÄ“z",3,"34.5","36.76666","–","town","–","Helsinki Atlas: 10 (map 8 B2)" +378,"ḪÄba","ḪÄba","–","–","–","URU.ḫa-a-ba","town","Balīḫ basin (?)","Bagg RGTC 7 2/1: 244" +406,"ḪÄradu","Ḫaradu, Ḫarada, Haradu, Ḫirbat ad-DÄ«nÄ«ya, Ḫirbat ad-DÄ«nÄ«yah, Khirbet ed-Diniye",3,"34.46176","41.59212","–","town","–","Helsinki Atlas: 10 (map 9 D2)" +427,"ḪÄurÄ«na","ḪÄurÄ«na, ḤawÄrÄ«n",2,"34.2695","37.08433","–","prov. capital","–","Helsinki Atlas: 10 (map 8 C2)" +430,"ḪÄzur","ḪÄzur, ḪÄzir",1,"–","–","–","river","–","Helsinki Atlas: 10 (map 4 C5)" +432,"Ḫēsa","Ḫēsa, ḪasÄ«ya, Hasya, Hassia",3,"34.41333","36.76433","–","town","–","Helsinki Atlas: 10 (map 8 B2)" +434,"ḪīdÄlu","ḪīdÄlu, Ḫaidalu, ArdjÄn",1,"30.96666",50,"–","capital","–","Helsinki Atlas: 10 (map 17 C3)" +824,"Ṣaidinu","Ṣaidinu, Ṣaidini, Ṣaidina, Ṣaidi, Zaidinu","–","–","–","–","town","ḪarrÄnu area","RGTC 7 2/2: 550" +840,"Ṣapuna","Ṣapuna, Ṣafon, Tell es-Sa'idiyeh","–","32.26772147669001","35.5771886219876","–","–","–","–" +845,"Ṣariptu","Ṣariptu, Sarephtha, aṣ-Ṣarafand, Sarepta, Ras el-Qantara",1,"33.46443052775337","35.29507077977482","–","city","–","Helsinki Atlas: 15 (map 8 A3)" +854,"Ṣibur","Ṣibur, Ṣibar, Ṣimaš, Ṣibara, Ṣiburaja","–","–","–","URU.ṣi-bu-ur, URU.ṣi-bar, URU.ṣi-ba-ra-a-a, URU.ṣi-ba-ra","city","Media, Western Iran, Gizilbunda","PNA B–G: 270, Parpola Toponyms: 321" +861,"Ṣimirra","Ṣimirra, Ṣumur, Simyra, Tell Kazel, Ṣumra",1,"34.70849380585606","35.9861363536706","–","prov. capital","–","Helsinki Atlas: 15 (map 8 A2)" +888,"Ṣupru","Ṣupru, Tell Abu Hasan (?)",4,"34.65467","40.88574","–","–","–","–" +893,"Ṣurru","Ṣurru, Tyros, Tyre, Ṣūr, Ṣôr, Sur",1,"33.27028907957312","35.19597034995852","–","prov. capital","–","Helsinki Atlas: 15 (map 8 A3)" +855,"ṢīdĹ«nu","ṢīdĹ«nu, Sidon, ṢīdĂ´n, ṢaidÄ",1,"33.56243","35.36933","–","city","–","Helsinki Atlas: 15 (map 8 A3)" +886,"Ṣūpat","Ṣūpat, Ṣupat, Ṣubat, Ḥoms, Zobah/ṢôbÄ",4,"34.7205","36.717","–","prov. capital","–","Helsinki Atlas: 15 (map 8 B2), Bagg RGTC 7 1: 233–234" +985,"Ṭuba","Ṭuba, Umm el-Marra (?)",4,"36.13471","37.69422","–","–","–","<a href=https://web.archive.org/web/20051124034827/http://www.jhu.edu/neareast/uem/index.html>Umm el-Marra Website</a>" +997,"Ṭurušpâ","Ṭušpa, Tušpa, Ṭurušpâ, Turušpa, Van, Thospia",1,"38.50114487332675","43.33814728564371","–","capital","–","Helsinki Atlas: 17 (map 4 C3)" +928,"ṬÄbÄ“te","ṬÄbÄ“te, ṬabÄ“te, ṬÄbÄtu, Ṭabatu, Ṭabitu, Ṭabatun, Tell TÄbÄn, Tall TÄbÄn, Thebeta (1), Tell Ta'ban",2,"36.33621","40.78773","URU.DĂ™G.GA-e-te, URU.DĂ™G.GA-ta-ia, URU.áąa-bĂ©-te","city","ḪÄbĹ«r area","Helsinki Atlas: 17 (map 3 D4), Bagg RGTC 7 2: 617" diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties new file mode 100644 index 0000000000000000000000000000000000000000..787b21dc8609c5828e92f4d720215fa329e3f928 --- /dev/null +++ b/backend/src/main/resources/application.properties @@ -0,0 +1,19 @@ +spring.datasource.url=jdbc:postgresql://localhost:5432/test +spring.datasource.username=test +spring.datasource.password=Password.123 + +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.generate-ddl=true +spring.jpa.open-in-view=false +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect +spring.jpa.properties.hibernate.format_sql=true +#spring.jpa.show-sql=true + + +application.jwt.secretKey=securesecuresecuresecuresecuresecuresecuresecuresecuresecuresecuresecuresecure +application.jwt.tokenPrefix=Bearer +application.jwt.tokenExpirationAfterMinutes=15 +application.jwt.refreshTokenExpirationAfterMonths=6 +application.jwt.accessTokenName=access_token +application.jwt.refreshTokenName=refresh_token +application.jwt.claimAuthoritiesName=authorities diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepositoryTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9b3aa1eb2c2ac45c79cda17df51fdfdf98dde16b --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemRepositoryTest.java @@ -0,0 +1,326 @@ +package cz.zcu.kiv.backendapi.catalog; + +import cz.zcu.kiv.backendapi.alternativename.AlternativeName; +import cz.zcu.kiv.backendapi.country.Country; +import cz.zcu.kiv.backendapi.type.Type; +import cz.zcu.kiv.backendapi.type.TypeRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +import java.util.List; +import java.util.Set; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +@DataJpaTest +class CatalogItemRepositoryTest { + + @Autowired + private CatalogItemRepository underTest; + + @Autowired + private TypeRepository typeRepository; + + private CatalogItem catalogItem1; + private CatalogItem catalogItem2; + private CatalogItem catalogItem3; + private CatalogItem catalogItem4; + private CatalogItem catalogItem5; + + @BeforeEach + void setUp() { + Type typeCountry = new Type("country"); + Type typeCity = new Type("city"); + Type typeCapitalCity = new Type("capital city new"); + Type typeCityUpper = new Type("City"); + Type typeCountri = new Type("countri"); + typeRepository.saveAll(List.of(typeCountry, typeCity, typeCapitalCity, typeCityUpper, typeCountri)); + + String nameFirst = "first"; + String nameFirstUpper = "First"; + String nameSecond = "second"; + String nameSedond = "sedond"; + String nameThird = "third"; + String nameTwelve = "twelve"; + String nameTwentyUpper = "TWENTY"; + + String countryAaa = "aaa"; + String countryAaaUpper = "AAA"; + String countryBbb = "bbb"; + String countryBccb = "bccb"; + String countryCcc = "ccc"; + String countryDdd = "ddd"; + String countryDcd = "dcd"; + + catalogItem1 = new CatalogItem(); + catalogItem2 = new CatalogItem(); + catalogItem3 = new CatalogItem(); + catalogItem4 = new CatalogItem(); + catalogItem5 = new CatalogItem(); + + catalogItem1.setName(nameFirst); + catalogItem1.setTypes(Set.of(typeCountry, typeCity)); + catalogItem1.setCountries(Set.of(new Country(countryAaa, catalogItem1), new Country(countryDcd, catalogItem1))); + + catalogItem2.setName(nameSecond); + catalogItem2.setAlternativeNames(Set.of(new AlternativeName(nameTwelve, catalogItem2), new AlternativeName(nameThird, catalogItem2))); + catalogItem2.setTypes(Set.of(typeCountry, typeCityUpper)); + catalogItem2.setCountries(Set.of(new Country(countryAaa, catalogItem2), new Country(countryBbb, catalogItem2))); + + catalogItem3.setName(nameThird); + catalogItem3.setAlternativeNames(Set.of(new AlternativeName(nameTwentyUpper, catalogItem3), new AlternativeName(nameSedond, catalogItem3))); + catalogItem3.setTypes(Set.of(typeCountri, typeCapitalCity)); + catalogItem3.setCountries(Set.of(new Country(countryAaaUpper, catalogItem3), new Country(countryCcc, catalogItem3))); + + + catalogItem4.setAlternativeNames(Set.of(new AlternativeName(nameTwelve, catalogItem4), new AlternativeName(nameFirstUpper, catalogItem4))); + catalogItem4.setTypes(Set.of(typeCountri, typeCountry)); + catalogItem4.setCountries(Set.of(new Country(countryBccb, catalogItem4), new Country(countryDdd, catalogItem4))); + + + catalogItem5.setName(nameSedond); + catalogItem5.setAlternativeNames(Set.of(new AlternativeName(nameThird, catalogItem5))); + catalogItem5.setTypes(Set.of(typeCountri)); + + underTest.saveAll(List.of(catalogItem1, catalogItem2, catalogItem3, catalogItem4, catalogItem5)); + + + } + + @AfterEach + void tearDown() { + underTest.deleteAll(); + } + + @Test + void itShouldReturnAll() { + // given + String name = ""; + String country = ""; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(5); + } + + @Test + void testName() { + // given + String name = "first"; + String country = ""; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem4)); + } + + @Test + void testWildcardCharacterName() { + // given + String name = "se_ond"; + String country = ""; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(3); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + assertTrue(filterResult.contains(catalogItem5)); + } + + @Test + void testWildcardCharactersName() { + // given + String name = "twe%"; + String country = ""; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(3); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + assertTrue(filterResult.contains(catalogItem4)); + } + + @Test + void testCountry() { + // given + String name = ""; + String country = "aaa"; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(3); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + } + + @Test + void testWildcardCharacterCountry() { + // given + String name = ""; + String country = "d_d"; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem4)); + } + + @Test + void testWildcardCharactersCountry() { + // given + String name = ""; + String country = "b%b"; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem4)); + } + + + @Test + void testType() { + // given + String name = ""; + String country = ""; + String type = "city"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem2)); + } + + @Test + void testWildcardCharacterType() { + // given + String name = ""; + String country = ""; + String type = "countr_"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(5); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + assertTrue(filterResult.contains(catalogItem4)); + assertTrue(filterResult.contains(catalogItem5)); + } + + @Test + void testWildcardCharactersType() { + // given + String name = ""; + String country = ""; + String type = "%city%"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(3); + assertTrue(filterResult.contains(catalogItem1)); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + } + + @Test + void testNameAndCountry() { + // given + String name = "third"; + String country = "aaa"; + String type = ""; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem2)); + assertTrue(filterResult.contains(catalogItem3)); + } + + @Test + void testNameAndType() { + // given + String name = "third"; + String country = ""; + String type = "countri"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(2); + assertTrue(filterResult.contains(catalogItem3)); + assertTrue(filterResult.contains(catalogItem5)); + } + + @Test + void testCountryAndType() { + // given + String name = ""; + String country = "ddd"; + String type = "country"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(1); + assertTrue(filterResult.contains(catalogItem4)); + } + + @Test + void testAll() { + // given + String name = "third"; + String country = "AAA"; + String type = "countri"; + + // when + Set<CatalogItem> filterResult = underTest.filterCatalog(name, country, type); + + // then + assertThat(filterResult.size()).isEqualTo(1); + assertTrue(filterResult.contains(catalogItem3)); + } +} \ No newline at end of file diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImplTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..51bf71acc5750a799e5d9c43601032a62ea1f733 --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/catalog/CatalogItemServiceImplTest.java @@ -0,0 +1,313 @@ +package cz.zcu.kiv.backendapi.catalog; + +import cz.zcu.kiv.backendapi.alternativename.AlternativeName; +import cz.zcu.kiv.backendapi.bibliography.Bibliography; +import cz.zcu.kiv.backendapi.country.Country; +import cz.zcu.kiv.backendapi.exception.ApiRequestException; +import cz.zcu.kiv.backendapi.type.Type; +import cz.zcu.kiv.backendapi.type.TypeServiceImpl; +import cz.zcu.kiv.backendapi.writtenform.WrittenForm; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.*; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class CatalogItemServiceImplTest { + + @Mock + private CatalogItemRepository catalogItemRepository; + + @Mock + private TypeServiceImpl typeService; + + + private CatalogItemServiceImpl underTest; + + @BeforeEach + void setUp() { + underTest = new CatalogItemServiceImpl(catalogItemRepository, typeService); + } + + @Test + void saveCatalog() { + // given + Type type = new Type("type"); + + CatalogItem catalogItem = new CatalogItem(); + catalogItem.setName("aaacbbbbbbbaa"); + catalogItem.setBibliography(Set.of(new Bibliography("bibl", catalogItem))); + catalogItem.setTypes(Set.of(type)); + catalogItem.setAlternativeNames(Set.of(new AlternativeName("altName", catalogItem))); + catalogItem.setCountries(Set.of(new Country("aaaabbaa", catalogItem))); + catalogItem.setWrittenForms(Set.of(new WrittenForm("written", catalogItem))); + catalogItem.setCertainty(0); + catalogItem.setLatitude(0.1); + catalogItem.setLongitude(0.2); + + CatalogItem catalogItem2 = new CatalogItem(); + catalogItem2.setName("name"); + catalogItem2.setBibliography(Set.of(new Bibliography("bibl", catalogItem2))); + catalogItem2.setTypes(Set.of(type)); + catalogItem2.setAlternativeNames(Set.of(new AlternativeName("aaaabbbbbbaa", catalogItem2))); + catalogItem2.setCountries(Set.of(new Country("aaaabbcccefaa", catalogItem2))); + catalogItem2.setWrittenForms(Set.of(new WrittenForm("written", catalogItem2))); + catalogItem2.setCertainty(1); + catalogItem2.setLatitude(1.1); + catalogItem2.setLongitude(1.2); + + List<CatalogItem> catalog = List.of(catalogItem, catalogItem2); + + given(typeService.getTypeByName(anyString())).willReturn(Optional.of(type)); + + // when + underTest.saveCatalog(catalog); + + // then + verify(typeService, never()).saveType(type); + verify(catalogItemRepository).save(catalogItem); + verify(catalogItemRepository).save(catalogItem2); + } + + @Test + void testSaveCatalogItem() { + // given + CatalogItemDto catalogItemDto = new CatalogItemDto(); + catalogItemDto.setName("name"); + catalogItemDto.setBibliography(Set.of("bibl")); + catalogItemDto.setTypes(Set.of("type")); + catalogItemDto.setAlternativeNames(Set.of("altName")); + catalogItemDto.setCountries(Set.of("country")); + catalogItemDto.setWrittenForms(Set.of("written")); + catalogItemDto.setCertainty(0); + catalogItemDto.setLatitude(0.1); + catalogItemDto.setLongitude(0.2); + + Type type = new Type("type"); + + CatalogItem catalogItem = new CatalogItem(); + catalogItem.setName("name"); + catalogItem.setBibliography(Set.of(new Bibliography("bibl", catalogItem))); + catalogItem.setTypes(Set.of(type)); + catalogItem.setAlternativeNames(Set.of(new AlternativeName("altName", catalogItem))); + catalogItem.setCountries(Set.of(new Country("country", catalogItem))); + catalogItem.setWrittenForms(Set.of(new WrittenForm("written", catalogItem))); + catalogItem.setCertainty(0); + catalogItem.setLatitude(0.1); + catalogItem.setLongitude(0.2); + + given(typeService.getTypeByName(anyString())).willReturn(Optional.of(type)); + + // when + underTest.saveCatalogItem(catalogItemDto); + + // then + ArgumentCaptor<CatalogItem> argumentCaptor = ArgumentCaptor.forClass(CatalogItem.class); + + verify(catalogItemRepository).save(argumentCaptor.capture()); + verify(typeService, never()).saveType(type); + + CatalogItem capturedItem = argumentCaptor.getValue(); + + assertThat(capturedItem).isEqualTo(catalogItem); + + } + + @Test + void testCanUpdateCatalogItem() { + // given + UUID id = UUID.randomUUID(); + + CatalogItemDto catalogItemDto = new CatalogItemDto(); + catalogItemDto.setName("name"); + catalogItemDto.setBibliography(Set.of("bibl")); + catalogItemDto.setTypes(Set.of("type")); + catalogItemDto.setAlternativeNames(Set.of("altName")); + catalogItemDto.setCountries(Set.of("country")); + catalogItemDto.setWrittenForms(Set.of("written")); + catalogItemDto.setCertainty(0); + catalogItemDto.setLatitude(0.1); + catalogItemDto.setLongitude(0.2); + + Type type = new Type("type"); + Type typeOld = new Type("old"); + + CatalogItem catalogItem = new CatalogItem(); + catalogItem.setName("name"); + catalogItem.setBibliography(Set.of(new Bibliography("bibl", catalogItem))); + catalogItem.setTypes(Set.of(type)); + catalogItem.setAlternativeNames(Set.of(new AlternativeName("altName", catalogItem))); + catalogItem.setCountries(Set.of(new Country("country", catalogItem))); + catalogItem.setWrittenForms(Set.of(new WrittenForm("written", catalogItem))); + catalogItem.setCertainty(0); + catalogItem.setLatitude(0.1); + catalogItem.setLongitude(0.2); + + CatalogItem oldCatalogItem = new CatalogItem(); + oldCatalogItem.setName("old"); + oldCatalogItem.setBibliography(Set.of(new Bibliography("old", oldCatalogItem))); + oldCatalogItem.setTypes(Set.of(typeOld)); + oldCatalogItem.setAlternativeNames(Set.of(new AlternativeName("old", oldCatalogItem))); + oldCatalogItem.setCountries(Set.of(new Country("old", oldCatalogItem))); + oldCatalogItem.setWrittenForms(Set.of(new WrittenForm("old", catalogItem))); + oldCatalogItem.setCertainty(10); + oldCatalogItem.setLatitude(10.1); + oldCatalogItem.setLongitude(10.2); + + given(catalogItemRepository.findById(id)).willReturn(Optional.of(oldCatalogItem)); + given(typeService.getTypeByName(anyString())).willReturn(Optional.empty()); + + // when + + underTest.updateCatalogItem(id, catalogItemDto); + + // then + verify(typeService).saveType(type); + + ArgumentCaptor<CatalogItem> argumentCaptor = ArgumentCaptor.forClass(CatalogItem.class); + + verify(catalogItemRepository).save(argumentCaptor.capture()); + + CatalogItem capturedCatalogItem = argumentCaptor.getValue(); + + assertThat(capturedCatalogItem).isEqualTo(catalogItem); + } + + @Test + void testCanNotUpdateCatalogItem() { + // given + UUID id = UUID.randomUUID(); + + CatalogItemDto catalogItemDto = new CatalogItemDto(); + catalogItemDto.setName("name"); + catalogItemDto.setBibliography(Set.of("bibl")); + catalogItemDto.setTypes(Set.of("type")); + catalogItemDto.setAlternativeNames(Set.of("altName")); + catalogItemDto.setCountries(Set.of("country")); + catalogItemDto.setWrittenForms(Set.of("written")); + catalogItemDto.setCertainty(0); + catalogItemDto.setLatitude(0.1); + catalogItemDto.setLongitude(0.2); + + // when + // then + assertThatThrownBy(() -> underTest.updateCatalogItem(id, catalogItemDto)) + .isInstanceOf(ApiRequestException.class) + .hasMessageContaining("Catalog item not found"); + + verify(catalogItemRepository, never()).save(any()); + verify(typeService, never()).saveType(any()); + } + + @Test + void testCanDeleteCatalogItem() { + // given + UUID id = UUID.randomUUID(); + given(catalogItemRepository.existsById(id)).willReturn(true); + + // when + underTest.deleteCatalogItem(id); + + // then + verify(catalogItemRepository).deleteById(id); + } + + @Test + void testCanNotDeleteCatalogItem() { + // given + UUID id = UUID.randomUUID(); + given(catalogItemRepository.existsById(id)).willReturn(false); + + // when + // then + assertThatThrownBy(() -> underTest.deleteCatalogItem(id)) + .isInstanceOf(ApiRequestException.class) + .hasMessageContaining("Catalog item not found"); + + verify(catalogItemRepository, never()).deleteById(any()); + } + + @Test + void getCatalog() { + // given + String name = "aaa?bb*aa"; + String country = "aaa?bb*aa"; + String type = "aaa?bb*aa"; + String nameChanged = "aaa_bb%aa"; + String countryChanged = "aaa_bb%aa"; + String typeChanged = "aaa_bb%aa"; + + Type typeEntity = new Type(type); + + CatalogItem catalogItem = new CatalogItem(); + catalogItem.setName("aaacbbbbbbbaa"); + catalogItem.setBibliography(Set.of(new Bibliography("bibl", catalogItem))); + catalogItem.setTypes(Set.of(typeEntity)); + catalogItem.setAlternativeNames(Set.of(new AlternativeName("altName", catalogItem))); + catalogItem.setCountries(Set.of(new Country("aaaabbaa", catalogItem))); + catalogItem.setWrittenForms(Set.of(new WrittenForm("written", catalogItem))); + catalogItem.setCertainty(0); + catalogItem.setLatitude(0.1); + catalogItem.setLongitude(0.2); + + CatalogItem catalogItem2 = new CatalogItem(); + catalogItem2.setName("name"); + catalogItem2.setBibliography(Set.of(new Bibliography("bibl", catalogItem2))); + catalogItem2.setTypes(Set.of(typeEntity)); + catalogItem2.setAlternativeNames(Set.of(new AlternativeName("aaaabbbbbbaa", catalogItem2))); + catalogItem2.setCountries(Set.of(new Country("aaaabbcccefaa", catalogItem2))); + catalogItem2.setWrittenForms(Set.of(new WrittenForm("written", catalogItem2))); + catalogItem2.setCertainty(1); + catalogItem2.setLatitude(1.1); + catalogItem2.setLongitude(1.2); + + CatalogItemDto catalogItemDto = new CatalogItemDto(); + catalogItemDto.setName("aaacbbbbbbbaa"); + catalogItemDto.setBibliography(Set.of("bibl")); + catalogItemDto.setTypes(Set.of("aaa?bb*aa")); + catalogItemDto.setAlternativeNames(Set.of("altName")); + catalogItemDto.setCountries(Set.of("aaaabbaa")); + catalogItemDto.setWrittenForms(Set.of("written")); + catalogItemDto.setCertainty(0); + catalogItemDto.setLatitude(0.1); + catalogItemDto.setLongitude(0.2); + + CatalogItemDto catalogItemDto2 = new CatalogItemDto(); + catalogItemDto2.setName("name"); + catalogItemDto2.setBibliography(Set.of("bibl")); + catalogItemDto2.setTypes(Set.of("aaa?bb*aa")); + catalogItemDto2.setAlternativeNames(Set.of("aaaabbbbbbaa")); + catalogItemDto2.setCountries(Set.of("aaaabbcccefaa")); + catalogItemDto2.setWrittenForms(Set.of("written")); + catalogItemDto2.setCertainty(1); + catalogItemDto2.setLatitude(1.1); + catalogItemDto2.setLongitude(1.2); + + given(catalogItemRepository.filterCatalog(nameChanged, countryChanged, typeChanged)).willReturn(Set.of(catalogItem, catalogItem2)); + + // when + List<CatalogItemDto> results = underTest.getCatalog(name, country, type); + + // then + assertThat(results.size()).isEqualTo(2); + assertTrue(results.contains(catalogItemDto)); + assertTrue(results.contains(catalogItemDto2)); + + verify(catalogItemRepository).filterCatalog(nameChanged, countryChanged, typeChanged); + } +} \ No newline at end of file diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementationTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..61a333a4578237fa1b302eb542e2554e34bbeab8 --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/titlepage/TitlePageServiceImplementationTest.java @@ -0,0 +1,97 @@ +package cz.zcu.kiv.backendapi.titlepage; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class TitlePageServiceImplementationTest { + + @Mock + private TitlePageRepository titlePageRepository; + + private TitlePageServiceImplementation underTest; + + @BeforeEach + void setUp() { + underTest = new TitlePageServiceImplementation(titlePageRepository); + } + + @Test + void testAddTitlePage() { + // given + long id = 1; + TitlePage titlePage = new TitlePage(); + titlePage.setTitle("title"); + titlePage.setContent("content"); + + // when + underTest.updateTitlePage(titlePage); + + // then + ArgumentCaptor<TitlePage> argumentCaptor = ArgumentCaptor.forClass(TitlePage.class); + + verify(titlePageRepository).save(argumentCaptor.capture()); + + TitlePage capturedTitlePage = argumentCaptor.getValue(); + + assertThat(capturedTitlePage.getId()).isEqualTo(id); + + assertThat(capturedTitlePage).isEqualTo(titlePage); + + } + + @Test + void testGetTitlePageWhenExists() { + // given + long id = 1; + TitlePage titlePage = new TitlePage(id, "title", "content"); + + given(titlePageRepository.findById(id)).willReturn(Optional.of(titlePage)); + + // when + TitlePage result = underTest.getTitlePage(); + + // then + verify(titlePageRepository).findById(id); + verify(titlePageRepository, never()).save(any()); + + assertThat(result).isEqualTo(titlePage); + + } + + @Test + void testGetTitlePageWhenNotExists() { + // given + long id = 1; + TitlePage titlePage = new TitlePage(id, "", ""); + + given(titlePageRepository.findById(id)).willReturn(Optional.empty()); + + // when + underTest.getTitlePage(); + + // then + verify(titlePageRepository).findById(id); + + ArgumentCaptor<TitlePage> argumentCaptor = ArgumentCaptor.forClass(TitlePage.class); + + verify(titlePageRepository).save(argumentCaptor.capture()); + + TitlePage capturedTitlePage = argumentCaptor.getValue(); + + assertThat(capturedTitlePage).isEqualTo(titlePage); + + } +} \ No newline at end of file diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/type/TypeServiceImplTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/type/TypeServiceImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..51fcda503beb8d67a3169df768704fd766322451 --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/type/TypeServiceImplTest.java @@ -0,0 +1,52 @@ +package cz.zcu.kiv.backendapi.type; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class TypeServiceImplTest { + + @Mock + private TypeRepository typeRepository; + + private TypeServiceImpl underTest; + + @BeforeEach + void setUp() { + underTest = new TypeServiceImpl(typeRepository); + } + + @Test + void saveType() { + // when + Type type = new Type("type"); + underTest.saveType(type); + + // then + ArgumentCaptor<Type> argumentCaptor = ArgumentCaptor.forClass(Type.class); + + verify(typeRepository).save(argumentCaptor.capture()); + + Type capturedType = argumentCaptor.getValue(); + + assertThat(capturedType).isEqualTo(type); + } + + @Test + void getTypeByName() { + // when + String typeName = "type"; + underTest.getTypeByName(typeName); + + // then + verify(typeRepository).findById(typeName); + } +} \ No newline at end of file diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserRepositoryTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..291a616939af495d73c191e6892331c253bde9f9 --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserRepositoryTest.java @@ -0,0 +1,48 @@ +package cz.zcu.kiv.backendapi.user; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +@DataJpaTest +class UserRepositoryTest { + + @Autowired + private UserRepository underTest; + + @AfterEach + void tearDown() { + underTest.deleteAll(); + } + + @Test + void itShouldFindByEmail() { + // given + String email = "user@user.com"; + UserEntity userEntity = new UserEntity("User", email, "password", (byte) 0, false); + underTest.save(userEntity); + + // when + Optional<UserEntity> userFoundByEmail = underTest.findByEmail(email); + + // then + assertTrue(userFoundByEmail.isPresent()); + } + + @Test + void itShouldNotFindByEmail() { + // given + String email = "user@user.com"; + + // when + Optional<UserEntity> userFoundByEmail = underTest.findByEmail(email); + + // then + assertTrue(userFoundByEmail.isEmpty()); + } +} \ No newline at end of file diff --git a/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserServiceImplTest.java b/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserServiceImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..7fcbd4f0e434b193b375a0772779680af4bd9d43 --- /dev/null +++ b/backend/src/test/java/cz/zcu/kiv/backendapi/user/UserServiceImplTest.java @@ -0,0 +1,328 @@ +package cz.zcu.kiv.backendapi.user; + +import cz.zcu.kiv.backendapi.exception.ApiRequestException; +import cz.zcu.kiv.backendapi.user.password.PasswordDto; +import cz.zcu.kiv.backendapi.user.permission.PermissionDto; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class UserServiceImplTest { + + @Mock + private UserRepository userRepository; + + @Mock + private BCryptPasswordEncoder bCryptPasswordEncoder; + + private UserServiceImpl underTest; + + @BeforeEach + void setUp() { + underTest = new UserServiceImpl(userRepository, bCryptPasswordEncoder); + } + + @Test + void testCanLoadUserByUsername() { + // given + String email = "test@test.com"; + UserEntity userEntity = new UserEntity("John Doe", email, "password", (byte) 1, false); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + + // when + UserEntity user = (UserEntity) underTest.loadUserByUsername(email); + + // then + verify(userRepository).findByEmail(email); + assertThat(user).isEqualTo(userEntity); + } + + @Test + void testCanNotLoadUserByUsername() { + String email = "test@test.com"; + + // when + // then + assertThatThrownBy(() -> underTest.loadUserByUsername(email)) + .isInstanceOf(UsernameNotFoundException.class) + .hasMessageContaining("User with username " + email + " not found"); + + verify(userRepository).findByEmail(email); + } + + @Test + void testCanGetUserByName() { + // given + String email = "test@test.com"; + UserEntity userEntity = new UserEntity("John Doe", email, "password", (byte) 1, false); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + + // when + UserEntity user = underTest.getUserByName(email); + + // then + verify(userRepository).findByEmail(email); + assertThat(user).isEqualTo(userEntity); + } + + @Test + void testCanNotGetUserByName() { + String email = "test@test.com"; + + // when + // then + assertThatThrownBy(() -> underTest.getUserByName(email)) + .isInstanceOf(UsernameNotFoundException.class) + .hasMessageContaining("User with username " + email + " not found"); + + verify(userRepository).findByEmail(email); + } + + @Test + void canRegisterNewUser() { + // given + String email = "test@test.com"; + String password = "password"; + UserDto userDto = new UserDto("John Doe", email, new PermissionDto(), new PasswordDto(password, password)); + UserEntity userEntity = new UserEntity(userDto.getName(), userDto.getEmail(), bCryptPasswordEncoder.encode(password), (byte) 0, false); + // when + underTest.registerNewUser(userDto); + + // then + ArgumentCaptor<UserEntity> argumentCaptor = ArgumentCaptor.forClass(UserEntity.class); + + verify(userRepository).save(argumentCaptor.capture()); + + UserEntity capturedUser = argumentCaptor.getValue(); + + assertThat(capturedUser).isEqualTo(userEntity); + } + + @Test + void canNotRegisterNewUser() { + // given + String email = "test@test.com"; + String password = "password"; + UserDto userDto = new UserDto("John Doe", email, new PermissionDto(), new PasswordDto(password, password)); + + + given(userRepository.findByEmail(anyString())).willReturn(Optional.of(new UserEntity())); + + // when + // then + assertThatThrownBy(() -> underTest.registerNewUser(userDto)) + .isInstanceOf(ApiRequestException.class) + .hasMessageContaining("User with username " + email + " already exists"); + + verify(userRepository, never()).save(any()); + } + + @Test + void testCanUpdatePermissions() { + // given + String email = "test@test.com"; + String password = "password"; + UserEntity userEntity = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(password), (byte) 0, false); + UserEntity userEntityWithChangedPermissions = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(password), (byte) 7, false); + PermissionDto permissionDto = new PermissionDto(true, true, true); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + + // when + underTest.updatePermissions(email, permissionDto); + + // then + ArgumentCaptor<UserEntity> argumentCaptor = ArgumentCaptor.forClass(UserEntity.class); + + verify(userRepository).save(argumentCaptor.capture()); + + UserEntity capturedUser = argumentCaptor.getValue(); + + assertThat(capturedUser).isEqualTo(userEntityWithChangedPermissions); + } + + @Test + void testCanNotUpdatePermissions() { + // given + String email = "test@test.com"; + PermissionDto permissionDto = new PermissionDto(); + given(userRepository.findByEmail(anyString())).willReturn(Optional.empty()); + + // when + // then + assertThatThrownBy(() -> underTest.updatePermissions(email, permissionDto)) + .isInstanceOf(UsernameNotFoundException.class) + .hasMessageContaining("User with username " + email + " not found"); + + verify(userRepository, never()).save(any()); + } + + @Test + void testCanResetPassword() { + // given + String email = "test@test.com"; + String password = "password"; + String newPassword = "password123"; + UserEntity userEntity = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(password), (byte) 0, false); + UserEntity userEntityWithChangedPassword = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(newPassword), (byte) 0, false); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + + // when + underTest.resetPassword(email, newPassword); + + // then + ArgumentCaptor<UserEntity> argumentCaptor = ArgumentCaptor.forClass(UserEntity.class); + + verify(userRepository).save(argumentCaptor.capture()); + + UserEntity capturedUser = argumentCaptor.getValue(); + + assertThat(capturedUser).isEqualTo(userEntityWithChangedPassword); + } + + @Test + void testCanNotResetPassword() { + // given + String email = "test@test.com"; + String newPassword = "password123"; + given(userRepository.findByEmail(anyString())).willReturn(Optional.empty()); + + // when + // then + assertThatThrownBy(() -> underTest.resetPassword(email, newPassword)) + .isInstanceOf(UsernameNotFoundException.class) + .hasMessageContaining("User with username " + email + " not found"); + + verify(userRepository, never()).save(any()); + } + + @Test + void testCanDeleteUser() { + // given + String email = "test@test.com"; + given(userRepository.existsById(email)).willReturn(true); + // when + underTest.deleteUser(email); + + // then + verify(userRepository).deleteById(email); + } + + @Test + void testCanNotDeleteUser() { + // given + String email = "test@test.com"; + given(userRepository.existsById(email)).willReturn(false); + // when + assertThatThrownBy(() -> underTest.deleteUser(email)) + .isInstanceOf(UsernameNotFoundException.class) + .hasMessageContaining("User with username " + email + " not found"); + + // then + verify(userRepository, never()).deleteById(email); + } + + @Test + void getAllUsers() { + // given + UserEntity userEntity1 = new UserEntity("first", "first@test.com", "password", (byte) 0, false); + UserEntity userEntity2 = new UserEntity("second", "second@test.com", "password2", (byte) 1, false); + UserEntity userEntity3 = new UserEntity("third", "third@test.com", "password3", (byte) 7, true); + + UserDto userDto1 = new UserDto("first", "first@test.com", new PermissionDto(), null); + UserDto userDto2 = new UserDto("second", "second@test.com", new PermissionDto(true, false, false), null); + UserDto userDto3 = new UserDto("third", "third@test.com", new PermissionDto(true, true, true), null); + + given(userRepository.findAll()).willReturn(List.of(userEntity1, userEntity2, userEntity3)); + + // when + List<UserDto> allUsers = underTest.getAllUsers(); + + // then + assertThat(allUsers.size()).isEqualTo(3); + assertTrue(allUsers.contains(userDto1)); + assertTrue(allUsers.contains(userDto2)); + assertTrue(allUsers.contains(userDto3)); + + + verify(userRepository).findAll(); + } + + @Test + void testCanChangePassword() { + // given + String email = "test@test.com"; + String oldPassword = "password"; + String newPassword = "password123"; + given(bCryptPasswordEncoder.encode(oldPassword)).willReturn("encodedOldPassword"); + given(bCryptPasswordEncoder.encode(newPassword)).willReturn("encodedNewPassword"); + UserEntity userEntity = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(oldPassword), (byte) 0, false); + UserEntity userEntityWithChangedPassword = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(newPassword), (byte) 0, false); + given(bCryptPasswordEncoder.matches(any(), any())).willReturn(true); + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + given(securityContext.getAuthentication()).willReturn(authentication); + SecurityContextHolder.setContext(securityContext); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(email, null, Collections.emptySet()); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + given(SecurityContextHolder.getContext().getAuthentication().getPrincipal()).willReturn(email); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + // when + underTest.changePassword(oldPassword, newPassword); + + // then + ArgumentCaptor<UserEntity> argumentCaptor = ArgumentCaptor.forClass(UserEntity.class); + + verify(userRepository).save(argumentCaptor.capture()); + + UserEntity capturedUser = argumentCaptor.getValue(); + + assertThat(capturedUser).isEqualTo(userEntityWithChangedPassword); + } + + @Test + void testCanNotChangePassword() { + // given + String email = "test@test.com"; + String oldPassword = "password"; + String newPassword = "password123"; + UserEntity userEntity = new UserEntity("John Doe", email, bCryptPasswordEncoder.encode(oldPassword), (byte) 0, false); + given(bCryptPasswordEncoder.matches(any(), any())).willReturn(false); + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + given(securityContext.getAuthentication()).willReturn(authentication); + SecurityContextHolder.setContext(securityContext); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(email, null, Collections.emptySet()); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + given(SecurityContextHolder.getContext().getAuthentication().getPrincipal()).willReturn(email); + given(userRepository.findByEmail(email)).willReturn(Optional.of(userEntity)); + + // when + // then + assertThatThrownBy(() -> underTest.changePassword(oldPassword, newPassword)) + .isInstanceOf(ApiRequestException.class) + .hasMessageContaining("Old password does not match"); + + verify(userRepository, never()).save(any()); + } +} \ No newline at end of file diff --git a/backend/src/test/resources/application.properties b/backend/src/test/resources/application.properties new file mode 100644 index 0000000000000000000000000000000000000000..40e4da488406eb2804a6475772a1446fb34490ca --- /dev/null +++ b/backend/src/test/resources/application.properties @@ -0,0 +1,12 @@ +spring.datasource.url=jdbc:h2://mem:db;DB_CLOSE_DELAY=-1 +spring.datasource.username=sa +spring.datasource.password=sa +spring.datasource.driver-class-name=org.h2.Driver + +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.generate-ddl=true +spring.jpa.open-in-view=false +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=true + diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000000000000000000000000000000000000..ae3abf8f093cb9db6236ce4dd3eb20320ad09cc1 --- /dev/null +++ b/frontend/.env @@ -0,0 +1 @@ +REACT_APP_API_BASE_URL=/api \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..85f30939ae4f0f1f7ba4c3a07b5630dd483e10ae --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +./yarn.lock \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..85193d51794bccf19f57f81bea0115b77acd914a --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,37 @@ +# STAGE 1 - build the react app # set the base image to build from +# This is the application image from which all other subsequent +# applications run. Alpine Linux is a security-oriented, lightweight #(~5Mb) Linux distribution. +FROM node:alpine as build +# set working directory +# this is the working folder in the container from which the app. # will be running from +WORKDIR /app + +# add the node_modules folder to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# copy package.json file to /app directory for installation prep +COPY ./package.json /app/ + +# install dependencies +RUN yarn --silent + +# copy everything to /app directory +COPY . /app + +# build the app +RUN yarn build + +# STAGE 2 - build the final image using a nginx web server +# distribution and copy the react build files +FROM nginx:alpine +COPY --from=build /app/build /usr/share/nginx/html + +# needed this to make React Router work properly +RUN rm /etc/nginx/conf.d/default.conf +COPY nginx/nginx.conf /etc/nginx/conf.d + +# Expose port 80 for HTTP Traffic +EXPOSE 80 + +# start the nginx web server +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b58e0af830ec5dbc90534e641396406fd17bf11c --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,46 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/frontend/nginx/nginx.conf b/frontend/nginx/nginx.conf new file mode 100644 index 0000000000000000000000000000000000000000..4a52cb86b1aa76ad41134a63830c06a9823dd02c --- /dev/null +++ b/frontend/nginx/nginx.conf @@ -0,0 +1,18 @@ +upstream app { + server app:8080; +} +server { + listen 80; + + root /usr/share/nginx/html; + + location / { + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location /api { + rewrite /api/(.*) /$1 break; + proxy_pass http://app; + } +} \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000000000000000000000000000000000000..9851cc8b31f4840455ba469626d78efaee7beff6 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,68 @@ +{ + "name": "frontend", + "type": "module", + "version": "0.1.0", + "private": true, + "dependencies": { + "@emotion/react": "^11.8.2", + "@emotion/styled": "^11.8.1", + "@faker-js/faker": "^6.0.0", + "@mui/icons-material": "^5.5.1", + "@mui/material": "^5.5.2", + "@reduxjs/toolkit": "^1.8.1", + "axios": "^0.26.0", + "dotenv": "^16.0.0", + "formik": "^2.2.9", + "jwt-decode": "^3.1.2", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-redux": "^7.2.6", + "react-router-dom": "^6.2.2", + "react-scripts": "5.0.0", + "redux": "^4.1.2", + "redux-persist": "^6.0.0", + "redux-thunk": "^2.4.1", + "swagger-typescript-api": "^9.3.1", + "ts-node": "^10.7.0", + "typescript": "^4.4.2", + "web-vitals": "^2.1.0", + "yup": "^0.32.11" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "gen:swagger": "swagger-typescript-api -p http://localhost:8080/v3/api-docs -o ./src/swagger --modular" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^12.0.0", + "@testing-library/user-event": "^13.2.1", + "@types/jest": "^27.0.1", + "@types/node": "^16.7.13", + "@types/react": "^17.0.43", + "@types/react-dom": "^17.0.9", + "@types/react-redux": "^7.1.23", + "@types/redux-persist": "^4.3.1", + "@types/yup": "^0.29.13" + } +} diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a Binary files /dev/null and b/frontend/public/favicon.ico differ diff --git a/frontend/public/index.html b/frontend/public/index.html new file mode 100644 index 0000000000000000000000000000000000000000..aa069f27cbd9d53394428171c3989fd03db73c76 --- /dev/null +++ b/frontend/public/index.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta name="theme-color" content="#000000" /> + <meta + name="description" + content="Web site created using create-react-app" + /> + <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> + <!-- + manifest.json provides metadata used when your web app is installed on a + user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ + --> + <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> + <!-- + Notice the use of %PUBLIC_URL% in the tags above. + It will be replaced with the URL of the `public` folder during the build. + Only files inside the `public` folder can be referenced from the HTML. + + Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will + work correctly both with client-side routing and a non-root public URL. + Learn how to configure a non-root public URL by running `npm run build`. + --> + <title>React App</title> + </head> + <body> + <noscript>You need to enable JavaScript to run this app.</noscript> + <div id="root"></div> + <!-- + This HTML file is a template. + If you open it directly in the browser, you will see an empty page. + + You can add webfonts, meta tags, or analytics to this file. + The build step will place the bundled scripts into the <body> tag. + + To begin the development, run `npm start` or `yarn start`. + To create a production bundle, use `npm run build` or `yarn build`. + --> + </body> +</html> diff --git a/frontend/public/logo192.png b/frontend/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 Binary files /dev/null and b/frontend/public/logo192.png differ diff --git a/frontend/public/logo512.png b/frontend/public/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e47a6545bc15971f8f63fba70e4013df88a664 Binary files /dev/null and b/frontend/public/logo512.png differ diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..080d6c77ac21bb2ef88a6992b2b73ad93daaca92 --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt new file mode 100644 index 0000000000000000000000000000000000000000..e9e57dc4d41b9b46e05112e9f45b7ea6ac0ba15e --- /dev/null +++ b/frontend/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/frontend/requests/login.http b/frontend/requests/login.http new file mode 100644 index 0000000000000000000000000000000000000000..9c402c2cb933c63e40269f88098054df6be77352 --- /dev/null +++ b/frontend/requests/login.http @@ -0,0 +1,9 @@ +POST /login +Host: /api +Content-Type: application/json + +{ + "username": "ultrabanger", + "email": "ultra@banger.com", + "password": "thereisnone" +} \ No newline at end of file diff --git a/frontend/requests/register.http b/frontend/requests/register.http new file mode 100644 index 0000000000000000000000000000000000000000..0eeab65b64651f9d17932933a15595bf192c1910 --- /dev/null +++ b/frontend/requests/register.http @@ -0,0 +1,12 @@ +POST /register +Host: /api +Content-Type: application/json + + +{ + "name": "ultrabanger3000", + "email": "ultra@banger.com", + "canRead": true, + "canWrite": true, + "canDelete": true +} \ No newline at end of file diff --git a/frontend/src/.env b/frontend/src/.env new file mode 100644 index 0000000000000000000000000000000000000000..ae3abf8f093cb9db6236ce4dd3eb20320ad09cc1 --- /dev/null +++ b/frontend/src/.env @@ -0,0 +1 @@ +REACT_APP_API_BASE_URL=/api \ No newline at end of file diff --git a/frontend/src/App.css b/frontend/src/App.css new file mode 100644 index 0000000000000000000000000000000000000000..74b5e053450a48a6bdb4d71aad648e7af821975c --- /dev/null +++ b/frontend/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e760950c9ffa89bfdb6759d75ecc40eb67fcf337 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,37 @@ +import './App.css' +import { Routes, Route, Link } from 'react-router-dom' +import Home from './features/Home/Home' +import Catalog from './features/Catalog/Catalog' +import NotFound from './features/NotFound/NotFound' +import { Container, Paper, Theme } from '@mui/material' +import { ThemeProvider } from '@emotion/react' +import { useSelector } from 'react-redux' +import { RootState } from './features/redux/store' +import Login from './features/Auth/Login' +import CatalogItemDetail from './features/Catalog/CatalogItemDetail' +import Navigation from './features/Navigation/Navigation' + +const App = () => { + const theme: Theme = useSelector((state: RootState) => state.theme.theme) + + return ( + <ThemeProvider theme={theme}> + <Navigation> + <Container> + <Routes> + <Route path="/" element={<Home />} /> + <Route path="/catalog" element={<Catalog />} /> + <Route + path="/catalog/:itemId" + element={<CatalogItemDetail />} + /> + <Route path="/login" element={<Login />} /> + <Route path="*" element={<NotFound />} /> + </Routes> + </Container> + </Navigation> + </ThemeProvider> + ) +} + +export default App diff --git a/frontend/src/api/api.ts b/frontend/src/api/api.ts new file mode 100644 index 0000000000000000000000000000000000000000..7cabf90eae7dcdbdf743a3e1196dbc410d07682a --- /dev/null +++ b/frontend/src/api/api.ts @@ -0,0 +1,99 @@ +import axios from 'axios' +import { Store } from 'redux' +import conf from '../config/conf' +import config from '../config/conf' +import { AppStore } from '../features/redux/store' + +let store: AppStore // this will get injected in index.tsx + +export const injectStore = (_store: Store) => { + store = _store +} + +// Error +export interface ApiError {} + +const createBaseInstance = () => + axios.create({ + baseURL: config.baseUrl, + headers: {} + }) + +const axiosInstance = createBaseInstance() + +axiosInstance.interceptors.request.use( + (config) => { + const accessToken = store.getState().user.accessToken // get the access token from the store + if (accessToken) { + // @ts-ignore (axios typescript types are a crime and this will always be defined) + config.headers['Authorization'] = accessToken as string + } + + return config + }, + (err) => { + Promise.reject(err) + } +) + +axiosInstance.interceptors.response.use( + (res) => res, + async (err) => { + const originalConfig = err.config + + + // Original URL might be login in which case we don't want to refresh the access token + // Since the user just failed to log in and no token expired + if (originalConfig.url === '/login' || !err.response) { + return Promise.reject(err) + } + + // If the error is not a 401 reject this + if (err.response.status !== 401) { + return Promise.reject(err) + } + + // We need to set the refresh token in the auth header + const oldRefreshToken = store.getState().user.refreshToken + + // If there is no refresh token we simply log the user out + if (!oldRefreshToken) { + store.dispatch({ type: 'user/logout' }) + } + + // Try refreshing the JWT + try { + // For some reason axios refuses to create instance here so just use fetch + // Send the request + const res = await fetch(`${conf.baseUrl}/users/token`, { + method: 'GET', + // credentials: 'include', + headers: { + 'Authorization': oldRefreshToken as string + } + }) + + const json = await res.json() + const [ accessToken, refreshToken ] = [json.access_token, json.refresh_token] + + // Set the new tokens + store.dispatch({ + type: 'user/refreshTokens', + payload: { accessToken, refreshToken }, + }) + + // Set this to retry the request that failed + originalConfig.retry = true + + // Return the failed instance so it can retry + return axiosInstance(originalConfig) + } catch (err: any) { + // If the refresh token fails we log the user out + store.dispatch({ type: 'user/logout' }) + originalConfig.retry = false // do not retry we are logged out + return originalConfig + } + } +) + +export default axiosInstance diff --git a/frontend/src/config/conf.ts b/frontend/src/config/conf.ts new file mode 100644 index 0000000000000000000000000000000000000000..7c592a317d2799ee429584d951aaaeb2594dc4cb --- /dev/null +++ b/frontend/src/config/conf.ts @@ -0,0 +1,5 @@ +const conf = { + baseUrl: '/api' +} + +export default conf; \ No newline at end of file diff --git a/frontend/src/features/Auth/Login.tsx b/frontend/src/features/Auth/Login.tsx new file mode 100644 index 0000000000000000000000000000000000000000..5effcc9b76ea87f743095f1556d4331e03bacfea --- /dev/null +++ b/frontend/src/features/Auth/Login.tsx @@ -0,0 +1,105 @@ +import { Button, TextField, Typography } from '@mui/material' +import { useFormik } from 'formik' +import { Fragment, useEffect } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { useNavigate } from 'react-router-dom' +import * as yup from 'yup' +import { SchemaOf } from 'yup' +import { RootState } from '../redux/store' +import { logIn } from './userThunks' + +interface LoginFields { + username: string + password: string +} + +const Login = () => { + const validationSchema: SchemaOf<LoginFields> = yup.object().shape({ + username: yup.string().required('Username is required'), + password: yup.string().required('Password is required'), + }) + + const dispatch = useDispatch() + const formik = useFormik({ + initialValues: { + username: '', + password: '', + }, + validationSchema, + onSubmit: () => { + dispatch( + logIn({ + username: formik.values.username, + password: formik.values.password, + }) + ) + }, + }) + + // Redirect to home if the user is logged in + const userLoggedIn = useSelector( + (state: RootState) => state.user.isLoggedIn + ) + const navigate = useNavigate() + useEffect(() => { + if (userLoggedIn) { + navigate('/') + } + }, [userLoggedIn, navigate]) + + return ( + <Fragment> + <Typography variant="h3">Login</Typography> + <p>Credentials = admin:password</p> + + <form onSubmit={formik.handleSubmit}> + <TextField + label="Username" + name="username" + fullWidth + sx={{ mb: 2 }} + value={formik.values.username} + onChange={formik.handleChange} + error={ + Boolean(formik.errors.username) && + formik.touched.username + } + helperText={ + formik.errors.username && + formik.touched.username && + formik.errors.username + } + /> + <TextField + type="password" + label="Password" + name="password" + fullWidth + value={formik.values.password} + onChange={formik.handleChange} + error={ + Boolean(formik.errors.password) && + formik.touched.password + } + helperText={ + formik.errors.password && + formik.touched.password && + formik.errors.password + } + sx={{ mb: 2 }} + /> + <Button + size="large" + variant="contained" + color="primary" + type="submit" + fullWidth + > + Login + </Button> + </form> + </Fragment> + ) +} + +export default Login diff --git a/frontend/src/features/Auth/Register.tsx b/frontend/src/features/Auth/Register.tsx new file mode 100644 index 0000000000000000000000000000000000000000..4833a02bc1243f3f3bb34f7d4c833848aae99189 --- /dev/null +++ b/frontend/src/features/Auth/Register.tsx @@ -0,0 +1,2 @@ + +export default {} \ No newline at end of file diff --git a/frontend/src/features/Auth/userSlice.ts b/frontend/src/features/Auth/userSlice.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c8c0ab6cdad5a26b0dfd47574e2d5fa41c79c23 --- /dev/null +++ b/frontend/src/features/Auth/userSlice.ts @@ -0,0 +1,67 @@ +import { createSlice } from '@reduxjs/toolkit' +import { persistReducer } from 'redux-persist' +import storage from 'redux-persist/lib/storage' +import { logIn } from './userThunks' + +export interface UserState { + accessToken?: string + refreshToken?: string + username: string + roles: string[] + isLoggedIn: boolean + lastErr?: string // consumable for errors during thunks +} + +const persistConfig = { + key: 'auth', + storage, // localStorage for browsers +} + +// Default state when user first starts the application +const initialState: UserState = { + roles: [], + isLoggedIn: false, + username: '', +} + +export const userSlice = createSlice({ + name: 'user', // name to generate action types + + initialState, // default state + + // Reducers that update the state + reducers: { + logout: () => initialState, // Reset to the inital state + refreshTokens: (state, action) => ({ + ...state, + accessToken: action.payload.accessToken, + refreshToken: action.payload.refreshToken, + }), + setErr: (state, action) => ({ + ...state, + lastErr: action.payload, + }), + setUserState: (state, action) => { + return ({ ...state, ...action.payload }) + }, + }, + + // Thunks + extraReducers: (builder) => { + builder.addCase(logIn.fulfilled, (state, action) => { + return ({ ...state, ...action.payload }) + }) + builder.addCase(logIn.rejected, (state, action) => { + if (action.payload && typeof action.payload === 'string') { + return ({ ...state, lastErr: action.payload }) + } + }) + }, +}) + + +const userReducer = persistReducer(persistConfig, userSlice.reducer) + +export const { logout, refreshTokens, setErr, setUserState } = userSlice.actions + +export default userReducer diff --git a/frontend/src/features/Auth/userThunks.ts b/frontend/src/features/Auth/userThunks.ts new file mode 100644 index 0000000000000000000000000000000000000000..a7a16d7cb77111e81d2d3a8970b5794a783b0d76 --- /dev/null +++ b/frontend/src/features/Auth/userThunks.ts @@ -0,0 +1,51 @@ +import { createAsyncThunk } from '@reduxjs/toolkit' +import axiosInstance from '../../api/api' +import { UserState } from './userSlice' +import jwt from 'jwt-decode' + +const loginError = + 'Server error occurred while logging in. Please contact help service to resolve this issue or try again later.' + +// This is not present in the swagger since spring generates +export interface UserLogin { + username: string, + password: string +} + +export const logIn = createAsyncThunk( + 'user/login', + async (userDto: UserLogin, { getState }) => { + try { + // @ts-ignore + if (getState().user.isLoggedIn) { + return Promise.reject(undefined) + } + + const { data, status } = await axiosInstance.post('/login', userDto) + const [ accessToken, refreshToken ] = [data.access_token, data.refresh_token] + if (status !== 200) { + // TODO read API err + return Promise.reject(loginError) + } + + // Strip bearer from access token + const userInfo = jwt(accessToken.replace('Bearer ', '')) as any + const { sub, authorities } = userInfo + if (!sub || !authorities) { + return Promise.reject(loginError) + } + + const userState: UserState = { + accessToken, + refreshToken, + username: sub, + roles: authorities, + isLoggedIn: true + } + + return userState + } catch (err: any) { + return Promise.reject(loginError) + } + } +) diff --git a/frontend/src/features/Catalog/Catalog.tsx b/frontend/src/features/Catalog/Catalog.tsx new file mode 100644 index 0000000000000000000000000000000000000000..eac9af309b25478ff8fb692b90022d9a0484f5e1 --- /dev/null +++ b/frontend/src/features/Catalog/Catalog.tsx @@ -0,0 +1,98 @@ +import { + Box, + Button, + Collapse, + Container, + Grid, + Paper, + Stack, + TextField, + Typography, +} from '@mui/material' +import CatalogTable from './CatalogTable' +import { Fragment, useState } from 'react' + +const Catalog = () => { + const [filterOpen, setFilterOpen] = useState(false) + const toggleFilter = () => { + setFilterOpen(!filterOpen) + } + + return ( + <Fragment> + <Paper + sx={{ py: 2, mt: 2 }} + variant="outlined" + style={{ minHeight: '50vh' }} + > + <Container sx={{ mt: 4 }}> + <Typography variant="h3" sx={{mb: 2}} fontWeight="bold" >Catalog</Typography> + <Button variant="outlined" color="primary" onClick={toggleFilter}> + Filter + </Button> + <Collapse in={filterOpen} timeout="auto" unmountOnExit> + <Grid container spacing={1} alignItems="stretch"> + <Grid item xs={6}> + <Stack + direction="column" + spacing={1} + sx={{ mt: 2 }} + > + <Stack direction="row" spacing={2}> + <TextField + size="small" + id="name" + label="Name" + /> + <TextField + size="small" + id="type" + label="Type" + /> + <TextField + size="small" + id="coordinates" + label="Coordinates" + /> + </Stack> + <Stack direction="row" spacing={2}> + <TextField + size="small" + id="writtenForm" + label="Written form" + /> + <TextField + size="small" + id="stateOrTerritory" + label="State or territory" + /> + <TextField + size="small" + id="groupBy" + label="Group by" + /> + </Stack> + </Stack> + </Grid> + <Grid item xs sx={{ mt: 'auto', ml: 1, mb: 1 }}> + <Stack + direction="row" + justifyContent="flex-start" + alignItems="flex-end" + > + <Button variant="outlined">Search</Button> + </Stack> + </Grid> + </Grid> + </Collapse> + + <Box sx={{ mt: 4 }}> + <CatalogTable /> + </Box> + </Container> + </Paper> + </Fragment> + ) +} + +export default Catalog diff --git a/frontend/src/features/Catalog/CatalogItemDetail.tsx b/frontend/src/features/Catalog/CatalogItemDetail.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d2424677e4be314141aa202678d8c0e3ab463135 --- /dev/null +++ b/frontend/src/features/Catalog/CatalogItemDetail.tsx @@ -0,0 +1,149 @@ +import { + Box, + Divider, + Grid, + Paper, + Skeleton, + Typography, +} from '@mui/material' +import { Fragment, useEffect, useState } from 'react' +import { useParams } from 'react-router-dom' +import axiosInstance from '../../api/api' +import { CatalogItemDto } from '../../swagger/data-contracts' +import ShowErrorIfPresent from '../Reusables/ShowErrorIfPresent' +import ContentLoading from '../Reusables/ContentLoading' + +const apiError = + 'Error while fetching data from the server, please try again later.' + +const CatalogItemDetail = () => { + // itemId from query params + const { itemId } = useParams() + + const [item, setItem] = useState<CatalogItemDto | undefined>(undefined) + const [isItemLoading, setIsItemLoading] = useState(true) + const [err, setErr] = useState<string | undefined>(undefined) + + // Fetch the item from the api after mounting the component + useEffect(() => { + // Function to fetch the item from the api + const fetchItem = async () => { + try { + const { data, status } = await axiosInstance.get( + `/catalog-items/${itemId}` + ) + if (status !== 200) { + setErr(apiError) + return + } + + setItem(data) + setIsItemLoading(false) + } catch (err: any) { + setErr(apiError) + } + } + + fetchItem() + }, []) + + // Maps catalogItem property to corresponding table row + const mapToRow = (rowName: string, items: string[]) => ( + <Fragment> + <Grid sx={{ my: 2 }} container justifyContent="space-around"> + <Grid item xs={8} sx={{ px: 1 }}> + <Typography fontWeight={500}>{rowName}</Typography> + </Grid> + <Grid item xs={4} sx={{ ml: 'auto' }}> + {items.map((item) => ( + <Typography>{item}</Typography> + ))} + </Grid> + </Grid> + </Fragment> + ) + + // Catalog item rows + const rows = [ + { + rowName: 'Name', + items: [item?.name], + }, + { + rowName: 'Alternative Names', + items: item?.alternativeNames, + }, + { + rowName: 'Written Forms', + items: item?.writtenForms, + }, + { + rowName: 'Type', + items: item?.types, + }, + { + rowName: 'State or Territory', + items: item?.countries, + }, + { + rowName: 'Coordinates', + items: [`${item?.longitude}°, ${item?.latitude}°`], + }, + { + rowName: 'Certainty', + items: [item?.certainty], + }, + { + rowName: 'Bibliography', + items: item?.bibliography, + }, + ] + + return ( + // TODO remove min height + <Paper style={{ minHeight: '100vh', borderRadius: 0 }} elevation={2}> + <ShowErrorIfPresent err={err} /> + + {isItemLoading && !err ? <ContentLoading /> : null} + {!isItemLoading && item ? ( + <Grid container justifyContent="space-around"> + <Grid item xs={6} sx={{ px: 2 }}> + {rows.map((row, idx) => { + const maxIdx = rows.length - 1 + return ( + <Fragment> + {mapToRow( + row.rowName as string, + row.items as string[] + )} + {idx === maxIdx ? null : <Divider />} + </Fragment> + ) + })} + </Grid> + + <Grid item xs={6}> + <Box sx={{ px: 2, py: 4 }}> + <Typography + variant="h4" + sx={{ mb: 4 }} + fontWeight="bold" + > + Map + </Typography> + + <Skeleton + animation="pulse" + variant="rectangular" + width="100%" + height={400} + /> + </Box> + </Grid> + </Grid> + ) : null} + </Paper> + ) +} + +export default CatalogItemDetail diff --git a/frontend/src/features/Catalog/CatalogTable.tsx b/frontend/src/features/Catalog/CatalogTable.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d1318bf258747b43e1c2979a78767aa316740bf0 --- /dev/null +++ b/frontend/src/features/Catalog/CatalogTable.tsx @@ -0,0 +1,158 @@ +import { + Link, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TablePagination, + TableRow, +} from '@mui/material' +import { Fragment, useEffect, useState } from 'react' +import { Link as RouterLink } from 'react-router-dom' +import { CatalogItemDto } from '../../swagger/data-contracts' +import ShowErrorIfPresent from '../Reusables/ShowErrorIfPresent' +import ContentLoading from '../Reusables/ContentLoading' +import axiosInstance from '../../api/api' + +const apiError = + 'Error while fetching data from the server, please try again later.' + +// Catalog table component +const CatalogTable = () => { + const [page, setPage] = useState(0) // currently shown page + const rowsPerPage = [5, 10, 15, 20] // number of rows per page + + // Selected rows per page + const [selectedRowsPerPage, setSelectedRowsPerPage] = useState( + rowsPerPage[0] + ) + + const [items, setItems] = useState<CatalogItemDto[]>([]) + const [areItemsLoading, setAreItemsLoading] = useState(true) + const [err, setErr] = useState<string | undefined>(undefined) + + // When changing rows per page set the selected number and reset to the first page + const onRowsPerPageChange = ( + event: React.ChangeEvent<HTMLInputElement> + ) => { + setSelectedRowsPerPage(Number(event.target.value)) + setPage(0) + } + + // Use effect hook to fetch rows from the server + useEffect(() => { + // Function to fetch items from the API + const fetchItems = async () => { + try { + const { data, status } = await axiosInstance.get( + '/catalog-items' + ) + if (status !== 200) { + setErr(apiError) + return + } + + setItems(data) + setAreItemsLoading(false) + } catch (err: any) { + setErr(apiError) + } + } + + fetchItems() + }, []) + + // Name of columns in the header + const columns = [ + 'Name', + 'Alternative Names', + 'Written form', + 'Type', + 'State or Territory', + 'Coordinates', + 'Certainty', + ] + + const mapValueOrDefault = (value?: string) => ( + <TableCell align="center">{value || 'N/A'}</TableCell> + ) + + // Maps catalogItem to corresponding table row + const mapItemColumnValues = (item: CatalogItemDto) => ( + <Fragment> + {/* {mapValueOrDefault(item.name)} */} + <TableCell align="center"> + <Link + component={RouterLink} + to={`/catalog/${item.id as string}`} + > + {item.name} + </Link> + </TableCell> + {mapValueOrDefault(item.alternativeNames?.join(', '))} + {mapValueOrDefault(item.writtenForms?.join(', '))} + {mapValueOrDefault(item.types?.join(', '))} + {mapValueOrDefault(item.countries?.join(', '))} + {mapValueOrDefault( + item.latitude && item.longitude + ? `${item.latitude}, ${item.longitude}` + : undefined + )} + {mapValueOrDefault( + item.certainty ? `${item.certainty}` : undefined + )} + </Fragment> + ) + + return ( + <Fragment> + <ShowErrorIfPresent err={err} /> + {areItemsLoading && !err ? <ContentLoading /> : null} + {!areItemsLoading && !err ? ( + <Fragment> + <TableContainer> + <Table + stickyHeader + sx={{ minWidth: 400 }} + aria-label="catalogTable" + > + <TableHead> + <TableRow> + {columns.map((col, idx) => ( + <TableCell key={idx} align="center"> + {col} + </TableCell> + ))} + </TableRow> + </TableHead> + <TableBody> + {items + .slice( + page * rowsPerPage[0], + page * rowsPerPage[0] + rowsPerPage[0] + ) + .map((row, idx) => ( + <TableRow hover tabIndex={-1} key={idx}> + {mapItemColumnValues(row)} + </TableRow> + ))} + </TableBody> + </Table> + </TableContainer> + <TablePagination + rowsPerPageOptions={rowsPerPage} + component="div" + count={items.length} + rowsPerPage={selectedRowsPerPage} + page={page} + onPageChange={(_, newPage) => setPage(newPage)} + onRowsPerPageChange={onRowsPerPageChange} + /> + </Fragment> + ) : null} + </Fragment> + ) +} + +export default CatalogTable diff --git a/frontend/src/features/Home/Home.tsx b/frontend/src/features/Home/Home.tsx new file mode 100644 index 0000000000000000000000000000000000000000..0ca56df7e528e777211cba0582e509dba1f4e553 --- /dev/null +++ b/frontend/src/features/Home/Home.tsx @@ -0,0 +1,31 @@ +import { Button } from '@mui/material' +import { Fragment } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { logout } from '../Auth/userSlice' +import { RootState } from '../redux/store' + +const Home = () => { + const dispatch = useDispatch() + + const userLoggedIn = useSelector( + (state: RootState) => state.user.isLoggedIn + ) + + return ( + <Fragment> + <h1>Home</h1> + {userLoggedIn ? ( + <Button + size="large" + variant="contained" + color="primary" + onClick={() => dispatch(logout())} + > + Logout + </Button> + ) : null} + </Fragment> + ) +} + +export default Home diff --git a/frontend/src/features/Navigation/Navigation.tsx b/frontend/src/features/Navigation/Navigation.tsx new file mode 100644 index 0000000000000000000000000000000000000000..989d087eea97a82b656e2faf834da01666efe072 --- /dev/null +++ b/frontend/src/features/Navigation/Navigation.tsx @@ -0,0 +1,120 @@ +import * as React from 'react' +import { styled, useTheme } from '@mui/material/styles' +import Box from '@mui/material/Box' +import Drawer from '@mui/material/Drawer' +import CssBaseline from '@mui/material/CssBaseline' +import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar' +import Toolbar from '@mui/material/Toolbar' +import List from '@mui/material/List' +import Typography from '@mui/material/Typography' +import Divider from '@mui/material/Divider' +import IconButton from '@mui/material/IconButton' +import MenuIcon from '@mui/icons-material/Menu' +import ChevronLeftIcon from '@mui/icons-material/ChevronLeft' +import ChevronRightIcon from '@mui/icons-material/ChevronRight' +import ListItem from '@mui/material/ListItem' +import ListItemIcon from '@mui/material/ListItemIcon' +import ListItemText from '@mui/material/ListItemText' +import InboxIcon from '@mui/icons-material/MoveToInbox' +import MailIcon from '@mui/icons-material/Mail' +import { FunctionComponent } from 'react' +import NavigationMenu from './NavigationMenu' +import { Paper } from '@mui/material' + +const drawerWidth = 240 + +const Main = styled('main', { shouldForwardProp: (prop) => prop !== 'open' })<{ + open?: boolean +}>(({ theme, open }) => ({ + flexGrow: 1, + // padding: theme.spacing(3), + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + marginLeft: `-${drawerWidth}px`, + ...(open && { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + marginLeft: 0, + }), +})) + +interface AppBarProps extends MuiAppBarProps { + open?: boolean +} + +const AppBar = styled(MuiAppBar, { + shouldForwardProp: (prop) => prop !== 'open', +})<AppBarProps>(({ theme, open }) => ({ + transition: theme.transitions.create(['margin', 'width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + ...(open && { + width: `calc(100% - ${drawerWidth}px)`, + marginLeft: `${drawerWidth}px`, + transition: theme.transitions.create(['margin', 'width'], { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + }), +})) + +const DrawerHeader = styled('div')(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + padding: theme.spacing(0, 1), + // necessary for content to be below app bar + ...theme.mixins.toolbar, + justifyContent: 'flex-end', +})) + +export interface DrawerProps { + children: React.ReactNode +} + +const PersistentDrawerLeft: FunctionComponent<DrawerProps> = ({ children }) => { + const [open, setOpen] = React.useState(false) + + const onOpenDrawer = () => { + setOpen(true) + } + + return ( + <Box sx={{ display: 'flex' }}> + <CssBaseline /> + <AppBar position="fixed" open={open}> + <Toolbar> + <IconButton + color="inherit" + aria-label="open drawer" + onClick={onOpenDrawer} + edge="start" + sx={{ mr: 2, ...(open && { display: 'none' }) }} + > + <MenuIcon /> + </IconButton> + <Typography variant="h6" noWrap component="div"> + Assyrian Toponyms App Prototype + </Typography> + </Toolbar> + </AppBar> + <NavigationMenu + open={open} + drawerWidth={drawerWidth} + setOpen={setOpen} + /> + <Main open={open} sx={{ mt: 2 }}> + <Paper style={{ minHeight: '100vh', borderRadius: 0 }}> + <DrawerHeader /> + {children} + </Paper> + </Main> + </Box> + ) +} + +export default PersistentDrawerLeft diff --git a/frontend/src/features/Navigation/NavigationMenu.tsx b/frontend/src/features/Navigation/NavigationMenu.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b8007f1d237702ed0d4d2c8c55125883e542ae5a --- /dev/null +++ b/frontend/src/features/Navigation/NavigationMenu.tsx @@ -0,0 +1,102 @@ +import { styled, useTheme } from '@mui/material/styles' +import { FunctionComponent, useEffect, useState } from 'react' +import ChevronLeftIcon from '@mui/icons-material/ChevronLeft' +import ChevronRightIcon from '@mui/icons-material/ChevronRight' +import { + Divider, + Drawer, + IconButton, + Link, + List, + ListItem, + ListItemIcon, + ListItemText, +} from '@mui/material' +import { useSelector } from 'react-redux' +import { RootState } from '../redux/store' +import getNavigationItems from './navigationMenuItems' +import { Link as RouterLink } from 'react-router-dom' + +export interface NavigationMenuProps { + open: boolean + drawerWidth: number + setOpen: (open: boolean) => void +} + +const DrawerHeader = styled('div')(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + padding: theme.spacing(0, 1), + // necessary for content to be below app bar + ...theme.mixins.toolbar, + justifyContent: 'flex-end', +})) + +const NavigationMenu: FunctionComponent<NavigationMenuProps> = ({ + open, + drawerWidth, + setOpen, +}) => { + const theme = useTheme() + + const onCloseDrawer = () => { + setOpen(false) + } + + // We need user roles to determine which pages will be accessible from the navigation menu + const userRoles = useSelector((state: RootState) => state.user.roles) + + // List of all menu items + const [menuItems, setMenuItems] = useState(getNavigationItems(userRoles)) + + // Use effect to update menu items should the user roles change + useEffect(() => { + setMenuItems(getNavigationItems(userRoles)) + }, [userRoles]) + + return ( + <Drawer + sx={{ + width: drawerWidth, + flexShrink: 0, + '& .MuiDrawer-paper': { + width: drawerWidth, + boxSizing: 'border-box', + }, + }} + variant="persistent" + anchor="left" + open={open} + > + <DrawerHeader> + <IconButton onClick={onCloseDrawer}> + {theme.direction === 'ltr' ? ( + <ChevronLeftIcon /> + ) : ( + <ChevronRightIcon /> + )} + </IconButton> + </DrawerHeader> + <Divider /> + + <List> + {menuItems.map((item, idx) => ( + <Link + underline="none" + color="inherit" + component={RouterLink} + to={item.path} + key={idx} + > + <ListItem button> + <ListItemIcon><item.icon /></ListItemIcon> + <ListItemText>{item.name}</ListItemText> + </ListItem> + </Link> + ))} + </List> + </Drawer> + ) +} + +export default NavigationMenu diff --git a/frontend/src/features/Navigation/navigationMenuItems.ts b/frontend/src/features/Navigation/navigationMenuItems.ts new file mode 100644 index 0000000000000000000000000000000000000000..69dfcec638b6ae1efceff015b8b2dd2d1e8738ae --- /dev/null +++ b/frontend/src/features/Navigation/navigationMenuItems.ts @@ -0,0 +1,88 @@ +import { OverridableComponent } from '@mui/material/OverridableComponent' +import HomeIcon from '@mui/icons-material/Home' +import { MenuBook } from '@mui/icons-material' +import LibraryBooksIcon from '@mui/icons-material/LibraryBooks' +import MapIcon from '@mui/icons-material/Map' +import PersonIcon from '@mui/icons-material/Person' +import LoginIcon from '@mui/icons-material/Login' +import { SvgIconTypeMap } from '@mui/material' + +export interface NavigationMenuItem { + name: string + path: string + // All privileges that can access this menu item + accessibleTo: Set<string> + icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>> + position: number +} + +const visitorRole = 'VISITOR' +const visitorRoleOnly = 'VISITOR_ONLY' +const visitorAccess = new Set([visitorRole]) + +const items: NavigationMenuItem[] = [ + { + name: 'Home', + path: '/', + accessibleTo: visitorAccess, + icon: HomeIcon, + position: 0, + }, + { + name: 'Catalog', + path: '/catalog', + accessibleTo: visitorAccess, + icon: MenuBook, + position: 1, + }, + { + name: 'Map', + path: '/map', + accessibleTo: visitorAccess, + icon: MapIcon, + position: 2, + }, + { + name: 'Sources', + path: '/sources', + accessibleTo: visitorAccess, + icon: LibraryBooksIcon, + position: 3, + }, + // TODO add statistics + { + name: 'Admin', + path: '/admin', + accessibleTo: new Set(['ADMIN']), + icon: PersonIcon, + position: 4, + }, + // TODO move this to the top + { + name: 'Login', + path: '/login', + accessibleTo: new Set([visitorRoleOnly]), + icon: LoginIcon, + position: 5, + }, +] + +const getNavigationItems = (_userRoles: string[]): NavigationMenuItem[] => { + const userRoles: string[] = [..._userRoles] + // Add visitor role if not present and visitor role only if user has no roles + if (!userRoles || userRoles.length === 0) { + userRoles.push( visitorRole, visitorRoleOnly) + } else { + userRoles.push(visitorRole) + } + + return items // else return everything the user has privileges to + .filter((item) => { + // If the user has any of the roles that are required to access this item + // then return it + return userRoles.some((role) => item.accessibleTo.has(role)) + }) + .sort((a, b) => a.position - b.position) +} + +export default getNavigationItems diff --git a/frontend/src/features/NotFound/NotFound.tsx b/frontend/src/features/NotFound/NotFound.tsx new file mode 100644 index 0000000000000000000000000000000000000000..ef17bc21fcfc9ece1d8a411628ea473107c140ad --- /dev/null +++ b/frontend/src/features/NotFound/NotFound.tsx @@ -0,0 +1,14 @@ +import { Button, Stack } from "@mui/material" +import { Link as RouterLink } from 'react-router-dom' + +const NotFound = () => { + + return ( + <Stack alignItems={"center"} sx={{my: 4}}> + <h1>Page Not Found đź”</h1> + <Button variant="outlined" component={RouterLink} to="/" >Return Home</Button> + </Stack> + ) +} + +export default NotFound \ No newline at end of file diff --git a/frontend/src/features/Reusables/ContentLoading.tsx b/frontend/src/features/Reusables/ContentLoading.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d3c7c9e7cdf8c683c8451c8dea2926c4de16a5a3 --- /dev/null +++ b/frontend/src/features/Reusables/ContentLoading.tsx @@ -0,0 +1,19 @@ +import { CircularProgress, Stack, Typography } from '@mui/material' +import { Fragment } from 'react' + +/** + * Component that shows a skeleton while the specified item is loading + * @returns + */ +const ContentLoading = () => ( + <Fragment> + <Typography align="center" fontWeight={400}> + Loading ... + </Typography> + <Stack sx={{ mt: 2 }} justifyContent="center" alignItems="center"> + <CircularProgress /> + </Stack> + </Fragment> +) + +export default ContentLoading diff --git a/frontend/src/features/Reusables/ShowErrorIfPresent.tsx b/frontend/src/features/Reusables/ShowErrorIfPresent.tsx new file mode 100644 index 0000000000000000000000000000000000000000..84b730b698df3870382924f72ac00837f31d2fca --- /dev/null +++ b/frontend/src/features/Reusables/ShowErrorIfPresent.tsx @@ -0,0 +1,19 @@ +import { Typography } from '@mui/material' +import { Fragment, FunctionComponent } from 'react' + +export interface ShowErrorProps { + err?: string +} + +// Utility component for showing error messages +const ShowErrorIfPresent: FunctionComponent<ShowErrorProps> = ({ err }) => ( + <Fragment> + {err ? ( + <Typography align="center" variant="h6" fontWeight="400"> + {err} + </Typography> + ) : null} + </Fragment> +) + +export default ShowErrorIfPresent diff --git a/frontend/src/features/Reusables/TableNavigation.tsx b/frontend/src/features/Reusables/TableNavigation.tsx new file mode 100644 index 0000000000000000000000000000000000000000..69353c9f17dcf63fa54518e82b57771239f9dc9a --- /dev/null +++ b/frontend/src/features/Reusables/TableNavigation.tsx @@ -0,0 +1,86 @@ +import { KeyboardArrowLeft, KeyboardArrowRight } from '@mui/icons-material' +import { Box, IconButton, useTheme } from '@mui/material' +import FirstPageIcon from '@mui/icons-material/FirstPage' +import LastPageIcon from '@mui/icons-material/LastPage' + +// Props for the pagination +export interface TablePaginationActionsProps { + count: number + page: number + rowsPerPage: number + onPageChange: ( + event: React.MouseEvent<HTMLButtonElement>, + newPage: number + ) => void +} + +// Actions that can be performed +const TablePaginationActions = (props: TablePaginationActionsProps) => { + const { count, page, rowsPerPage, onPageChange } = props + + const theme = useTheme() + + const onFirstPageButtonClick = ( + event: React.MouseEvent<HTMLButtonElement> + ) => onPageChange(event, 0) + const onPreviousPageButtonClick = ( + event: React.MouseEvent<HTMLButtonElement> + ) => onPageChange(event, page - 1) + const onNextPageButtonClick = ( + event: React.MouseEvent<HTMLButtonElement> + ) => onPageChange(event, page + 1) + const onLastPageButtonClick = ( + event: React.MouseEvent<HTMLButtonElement> + ) => onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)) + + return ( + <Box sx={{ flexShrink: 0, ml: 2.5 }}> + <IconButton + onClick={onFirstPageButtonClick} + disabled={page === 0} + aria-label="first page" + > + {theme.direction === 'rtl' ? ( + <LastPageIcon /> + ) : ( + <FirstPageIcon /> + )} + </IconButton> + <IconButton + onClick={onPreviousPageButtonClick} + disabled={page === 0} + aria-label="previous page" + > + {theme.direction === 'rtl' ? ( + <KeyboardArrowRight /> + ) : ( + <KeyboardArrowLeft /> + )} + </IconButton> + <IconButton + onClick={onNextPageButtonClick} + disabled={page >= Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === 'rtl' ? ( + <KeyboardArrowLeft /> + ) : ( + <KeyboardArrowRight /> + )} + </IconButton> + <IconButton + onClick={onLastPageButtonClick} + disabled={page >= Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === 'rtl' ? ( + <FirstPageIcon /> + ) : ( + <LastPageIcon /> + )} + </IconButton> + </Box> + ) +} + +export default TablePaginationActions \ No newline at end of file diff --git a/frontend/src/features/Theme/ThemeChanger.tsx b/frontend/src/features/Theme/ThemeChanger.tsx new file mode 100644 index 0000000000000000000000000000000000000000..56004c9f9e0627ae25f38e9fbe5848d8078663e3 --- /dev/null +++ b/frontend/src/features/Theme/ThemeChanger.tsx @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/frontend/src/features/Theme/themeReducer.ts b/frontend/src/features/Theme/themeReducer.ts new file mode 100644 index 0000000000000000000000000000000000000000..504142aab89c012a89d1843c0066ef3a9f50b9a1 --- /dev/null +++ b/frontend/src/features/Theme/themeReducer.ts @@ -0,0 +1,53 @@ +import { createTheme, Theme } from '@mui/material/styles' +import { AnyAction } from 'redux' +import { persist } from '../../utils/statePersistence' + +export interface ThemeState { + theme: Theme + themeType: 'Light' | 'Dark' +} + +const statePersistName = 'theme' + +const initialTheme = createTheme({ + palette: { + mode: 'light' + }, + typography: { + fontFamily: [ + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + ].join(','), + } +}) +const initialState: ThemeState = { + theme: initialTheme, + themeType: 'Light', +} + +export enum ThemeStateActions { + TOGGLE_THEME = 'TOGGLE_THEME', + SET_LIGHT_MODE = 'SET_LIGHT_MODE', + SET_DARK_MODE = 'SET_DARK_MODE', +} + +const themeReducer = (state: ThemeState = initialState, action: AnyAction) => { + // TODO add all the actions + switch (action.type) { + case ThemeStateActions.TOGGLE_THEME: + return persist(statePersistName, state) + + default: + return state + } +} + +export default themeReducer diff --git a/frontend/src/features/redux/store.ts b/frontend/src/features/redux/store.ts new file mode 100644 index 0000000000000000000000000000000000000000..945ae90c9d538c1ae139d50390caf2e7d74cd1b8 --- /dev/null +++ b/frontend/src/features/redux/store.ts @@ -0,0 +1,19 @@ + +import { applyMiddleware, combineReducers, createStore } from 'redux' +import { persistStore } from 'redux-persist' +import thunk from 'redux-thunk' +import userReducer from '../Auth/userSlice' +import themeReducer from '../Theme/themeReducer' + + +// Store holds shared state in the application +const store = createStore( + combineReducers({ user: userReducer, theme: themeReducer }), + applyMiddleware(thunk) // Thunk middleware so we can async fetch data from the api +) + +export default store +export const persistor = persistStore(store) +export type AppStore = typeof store +export type RootState = ReturnType<typeof store.getState> +export type AppDispatch = typeof store.dispatch diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000000000000000000000000000000000000..ec2585e8c0bb8188184ed1e0703c4c8f2a8419b0 --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..6d4c9893b26533255acc370cbd70a49d1a000cbd --- /dev/null +++ b/frontend/src/index.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import './index.css' +import App from './App' +import reportWebVitals from './reportWebVitals' +import { BrowserRouter } from 'react-router-dom' +import store, { persistor } from './features/redux/store' +import { Provider } from 'react-redux' +import { injectStore } from './api/api' +import { PersistGate } from 'redux-persist/integration/react' + +// Injects store to the axios instance in ./api/axiosInstance +injectStore(store) + +ReactDOM.render( + <Provider store={store}> + <PersistGate loading={null} persistor={persistor}> + <React.StrictMode> + <BrowserRouter> + <App /> + </BrowserRouter> + </React.StrictMode> + </PersistGate> + </Provider>, + document.getElementById('root') +) + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals() diff --git a/frontend/src/reportWebVitals.ts b/frontend/src/reportWebVitals.ts new file mode 100644 index 0000000000000000000000000000000000000000..49a2a16e0fbc7636ee16bf907257a5282b856493 --- /dev/null +++ b/frontend/src/reportWebVitals.ts @@ -0,0 +1,15 @@ +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/frontend/src/swagger/CatalogItems.ts b/frontend/src/swagger/CatalogItems.ts new file mode 100644 index 0000000000000000000000000000000000000000..cfd3c2ee13dc18620af08cf7a5166c478a87d4c6 --- /dev/null +++ b/frontend/src/swagger/CatalogItems.ts @@ -0,0 +1,92 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { CatalogItemDto } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class CatalogItems<SecurityDataType = unknown> extends HttpClient<SecurityDataType> { + /** + * No description + * + * @tags catalog-controller + * @name GetCatalogItem + * @summary returns catalog item with given ID + * @request GET:/catalog-items/{id} + */ + getCatalogItem = (id: string, params: RequestParams = {}) => + this.request<CatalogItemDto, any>({ + path: `/catalog-items/${id}`, + method: "GET", + format: "json", + ...params, + }); + /** + * No description + * + * @tags catalog-controller + * @name UpdateCatalogItem + * @summary updates catalog item with given ID + * @request PUT:/catalog-items/{id} + */ + updateCatalogItem = (id: string, data: CatalogItemDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/catalog-items/${id}`, + method: "PUT", + body: data, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags catalog-controller + * @name DeleteCatalogItem + * @summary deletes catalog item with given ID + * @request DELETE:/catalog-items/{id} + */ + deleteCatalogItem = (id: string, params: RequestParams = {}) => + this.request<void, any>({ + path: `/catalog-items/${id}`, + method: "DELETE", + ...params, + }); + /** + * No description + * + * @tags catalog-controller + * @name GetCatalog + * @summary returns catalog items based on filter + * @request GET:/catalog-items + */ + getCatalog = (query?: { name?: string; country?: string; type?: string }, params: RequestParams = {}) => + this.request<CatalogItemDto[], any>({ + path: `/catalog-items`, + method: "GET", + query: query, + ...params, + }); + /** + * No description + * + * @tags catalog-controller + * @name AddCatalogItem + * @summary creates new catalog item + * @request POST:/catalog-items + */ + addCatalogItem = (data: CatalogItemDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/catalog-items`, + method: "POST", + body: data, + type: ContentType.Json, + ...params, + }); +} diff --git a/frontend/src/swagger/TitlePage.ts b/frontend/src/swagger/TitlePage.ts new file mode 100644 index 0000000000000000000000000000000000000000..0d657e10b2a0b6f03806d313e5b57c942ddf3896 --- /dev/null +++ b/frontend/src/swagger/TitlePage.ts @@ -0,0 +1,46 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { TitlePageDto } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class TitlePage<SecurityDataType = unknown> extends HttpClient<SecurityDataType> { + /** + * No description + * + * @tags title-page-controller + * @name GetTitlePage + * @summary returns title page + * @request GET:/title-page + */ + getTitlePage = (params: RequestParams = {}) => + this.request<TitlePageDto, any>({ + path: `/title-page`, + method: "GET", + ...params, + }); + /** + * No description + * + * @tags title-page-controller + * @name UpdateTitlePage + * @summary updates/creates title page + * @request POST:/title-page + */ + updateTitlePage = (data: TitlePageDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/title-page`, + method: "POST", + body: data, + type: ContentType.Json, + ...params, + }); +} diff --git a/frontend/src/swagger/Users.ts b/frontend/src/swagger/Users.ts new file mode 100644 index 0000000000000000000000000000000000000000..27d5c1b7b0e087384c7d1b76e479c29f49621430 --- /dev/null +++ b/frontend/src/swagger/Users.ts @@ -0,0 +1,123 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +import { PasswordDto, PermissionDto, UserDto } from "./data-contracts"; +import { ContentType, HttpClient, RequestParams } from "./http-client"; + +export class Users<SecurityDataType = unknown> extends HttpClient<SecurityDataType> { + /** + * No description + * + * @tags user-controller + * @name GetAllUsers + * @summary returns all users + * @request GET:/users + */ + getAllUsers = (params: RequestParams = {}) => + this.request<UserDto[], any>({ + path: `/users`, + method: "GET", + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name RegisterNewUser + * @summary registers new user + * @request POST:/users + */ + registerNewUser = (data: UserDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/users`, + method: "POST", + body: data, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name UpdatePermissions + * @summary changes permissions to given user + * @request PATCH:/users/{username}/permissions + */ + updatePermissions = (username: string, data: PermissionDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/users/${username}/permissions`, + method: "PATCH", + body: data, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name ResetPassword + * @summary changes password to given user + * @request PATCH:/users/{username}/password + */ + resetPassword = (username: string, data: PasswordDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/users/${username}/password`, + method: "PATCH", + body: data, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name ChangePassword + * @summary changes password to logged-in user + * @request PATCH:/users/password + */ + changePassword = (query: { oldPassword: string }, data: PasswordDto, params: RequestParams = {}) => + this.request<void, any>({ + path: `/users/password`, + method: "PATCH", + query: query, + body: data, + type: ContentType.Json, + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name RefreshToken + * @summary returns a new access token and a refresh token to user + * @request GET:/users/token + */ + refreshToken = (params: RequestParams = {}) => + this.request<void, any>({ + path: `/users/token`, + method: "GET", + ...params, + }); + /** + * No description + * + * @tags user-controller + * @name DeleteUser + * @summary deletes user with given username + * @request DELETE:/users/{username} + */ + deleteUser = (username: string, params: RequestParams = {}) => + this.request<void, any>({ + path: `/users/${username}`, + method: "DELETE", + ...params, + }); +} diff --git a/frontend/src/swagger/data-contracts.ts b/frontend/src/swagger/data-contracts.ts new file mode 100644 index 0000000000000000000000000000000000000000..c8808aa6e24927ef96bdf5065e7c68526ab55984 --- /dev/null +++ b/frontend/src/swagger/data-contracts.ts @@ -0,0 +1,53 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface CatalogItemDto { + /** @format uuid */ + id?: string; + name?: string; + + /** @format int32 */ + certainty?: number; + + /** @format double */ + longitude?: number; + + /** @format double */ + latitude?: number; + bibliography?: string[]; + countries?: string[]; + writtenForms?: string[]; + alternativeNames?: string[]; + types?: string[]; +} + +export interface PasswordDto { + password: string; + confirmationPassword: string; +} + +export interface PermissionDto { + canRead?: boolean; + canWrite?: boolean; + canDelete?: boolean; +} + +export interface UserDto { + name?: string; + email: string; + permissions?: PermissionDto; + passwords: PasswordDto; +} + +export interface TitlePageDto { + title?: string; + content?: string; +} diff --git a/frontend/src/swagger/http-client.ts b/frontend/src/swagger/http-client.ts new file mode 100644 index 0000000000000000000000000000000000000000..e994ab9d1446ea82fd72e2afd648f81053cfcc16 --- /dev/null +++ b/frontend/src/swagger/http-client.ts @@ -0,0 +1,218 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export type QueryParamsType = Record<string | number, any>; +export type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">; + +export interface FullRequestParams extends Omit<RequestInit, "body"> { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit<FullRequestParams, "body" | "method" | "query" | "path">; + +export interface ApiConfig<SecurityDataType = unknown> { + baseUrl?: string; + baseApiParams?: Omit<RequestParams, "baseUrl" | "cancelToken" | "signal">; + securityWorker?: (securityData: SecurityDataType | null) => Promise<RequestParams | void> | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse<D extends unknown, E extends unknown = unknown> extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", +} + +export class HttpClient<SecurityDataType = unknown> { + public baseUrl: string = "/api"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig<SecurityDataType>["securityWorker"]; + private abortControllers = new Map<CancelToken, AbortController>(); + private customFetch = (...fetchParams: Parameters<typeof fetch>) => fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig<SecurityDataType> = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + private encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + private addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + private addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); + return keys + .map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key))) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record<ContentType, (input: any) => any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input, + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + private mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + private createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async <T = any, E = any>({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise<HttpResponse<T, E>> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, { + ...requestParams, + headers: { + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), + ...(requestParams.headers || {}), + }, + signal: cancelToken ? this.createAbortSignal(cancelToken) : void 0, + body: typeof body === "undefined" || body === null ? null : payloadFormatter(body), + }).then(async (response) => { + const r = response as HttpResponse<T, E>; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} diff --git a/frontend/src/utils/statePersistence.ts b/frontend/src/utils/statePersistence.ts new file mode 100644 index 0000000000000000000000000000000000000000..69cbe48e054f46b731693d70be183e990b5dbee1 --- /dev/null +++ b/frontend/src/utils/statePersistence.ts @@ -0,0 +1,12 @@ +// TODO this could be replaced with redux library +const persist = (name: string, value: any) => { + localStorage.setItem(name, JSON.stringify(value)) + return value +} + +const load = (name: string) => { + const item = localStorage.getItem(name) + return item ? JSON.parse(item) : undefined +} + +export { persist, load } diff --git a/frontend/src/utils/thunkResponse.ts b/frontend/src/utils/thunkResponse.ts new file mode 100644 index 0000000000000000000000000000000000000000..400726ee15873bf098c8cd48dbba03c98ac0559c --- /dev/null +++ b/frontend/src/utils/thunkResponse.ts @@ -0,0 +1,5 @@ + +export default interface ThunkResponse<T> { + success: boolean + data?: T +} \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..46cbe2912a55d133ccc97bb3bd80ee86aeed5434 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "experimentalDecorators": true, + "sourceMap": true, + "module": "es2022", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/frontend/yarn.lock b/frontend/yarn.lock new file mode 100644 index 0000000000000000000000000000000000000000..42913e2efcc6e390a76f6c744b6a3862f7387752 --- /dev/null +++ b/frontend/yarn.lock @@ -0,0 +1,9578 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15" + integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" + integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.3" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + +"@babel/eslint-parser@^7.16.3": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" + integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== + dependencies: + eslint-scope "^5.1.1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + +"@babel/generator@^7.17.3", "@babel/generator@^7.7.2": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" + integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493" + integrity sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.1" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.17.0" + charcodes "^0.2.0" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + dependencies: + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" + integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" + integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" + integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" + integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-flow" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" + integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + +"@babel/preset-typescript@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" + +"@babel/runtime-corejs3@^7.10.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" + integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== + dependencies: + core-js-pure "^3.20.2" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.13.10", "@babel/runtime@^7.17.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" + integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.15.4": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7", "@babel/template@^7.3.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.2": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + +"@csstools/normalize.css@*": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" + integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== + +"@csstools/postcss-color-function@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.0.3.tgz#251c961a852c99e9aabdbbdbefd50e9a96e8a9ff" + integrity sha512-J26I69pT2B3MYiLY/uzCGKVJyMYVg9TCpXkWsRlt+Yfq+nELUEm72QXIMYXs4xA9cJA4Oqs2EylrfokKl3mJEQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz#7e7df948a83a0dfb7eb150a96e2390ac642356a1" + integrity sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz#d6785c1c5ba8152d1d392c66f3a6a446c6034f6d" + integrity sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz#f484db59fc94f35a21b6d680d23b0ec69b286b7f" + integrity sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.1.tgz#472fff2cf434bdf832f7145b2a5491587e790c9e" + integrity sha512-Og5RrTzwFhrKoA79c3MLkfrIBYmwuf/X83s+JQtz/Dkk/MpsaKtqHV1OOzYkogQ+tj3oYp5Mq39XotBXNqVc3Q== + dependencies: + postcss-selector-parser "^6.0.9" + +"@csstools/postcss-normalize-display-values@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz#ce698f688c28517447aedf15a9037987e3d2dc97" + integrity sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.2.tgz#87cd646e9450347a5721e405b4f7cc35157b7866" + integrity sha512-QwhWesEkMlp4narAwUi6pgc6kcooh8cC7zfxa9LSQNYXqzcdNUtNBzbGc5nuyAVreb7uf5Ox4qH1vYT3GA1wOg== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@emotion/babel-plugin@^11.7.1": + version "11.7.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" + integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/runtime" "^7.13.10" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.2" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.0.13" + +"@emotion/cache@^11.7.1": + version "11.7.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" + integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.1.0" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "4.0.13" + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/is-prop-valid@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" + integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== + dependencies: + "@emotion/memoize" "^0.7.4" + +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/react@^11.8.2": + version "11.8.2" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.8.2.tgz#e51f5e6372e22e82780836c9288da19af4b51e70" + integrity sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA== + dependencies: + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/cache" "^11.7.1" + "@emotion/serialize" "^1.0.2" + "@emotion/utils" "^1.1.0" + "@emotion/weak-memoize" "^0.2.5" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" + integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== + dependencies: + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.4" + "@emotion/unitless" "^0.7.5" + "@emotion/utils" "^1.0.0" + csstype "^3.0.2" + +"@emotion/sheet@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" + integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== + +"@emotion/styled@^11.8.1": + version "11.8.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.8.1.tgz#856f6f63aceef0eb783985fa2322e2bf66d04e17" + integrity sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/is-prop-valid" "^1.1.2" + "@emotion/serialize" "^1.0.2" + "@emotion/utils" "^1.1.0" + +"@emotion/unitless@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" + integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== + +"@emotion/weak-memoize@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@eslint/eslintrc@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a" + integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.1" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz#7985f681564cff4ffaebb5896eb4be20af3aae7a" + integrity sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ== + +"@faker-js/faker@^6.0.0": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-6.1.2.tgz#7093ea65e6d78eae388918a46968c083366bd621" + integrity sha512-QSvmexHCxeRUk1/yKmoEDaWB5Hohjvtim5g2JJwy8S/l0L4b3y/GxSpE6vN4SBoVGGahEQW21uqyRr7EofI35A== + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@mui/base@5.0.0-alpha.75": + version "5.0.0-alpha.75" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.75.tgz#0b352ff951765dfa83723fd1faf46a128dfe63ca" + integrity sha512-eQ8SP2ML5nJyOdSqmk26ezg/eEP1k42Z+k6uMfNbgHZc8iZwgw9iVe+6g5j/qZPKS88AtxVG8YsLLZkXT82/Bw== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/is-prop-valid" "^1.1.2" + "@mui/types" "^7.1.3" + "@mui/utils" "^5.6.0" + "@popperjs/core" "^2.11.4" + clsx "^1.1.1" + prop-types "^15.7.2" + react-is "^17.0.2" + +"@mui/icons-material@^5.5.1": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.6.0.tgz#bce757f7c7a8eb31b238311a15fa0a0bcdf9ec39" + integrity sha512-2GDGt+/BbwM3oVkF84b9FFKQdQ9TxBJIRnTwT99vO2mimdfJaojxMRB2lkysm9tUY4HOf0yoU6O//X6GTC0Zhw== + dependencies: + "@babel/runtime" "^7.17.2" + +"@mui/material@^5.5.2": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.6.0.tgz#284270f5e48d379a9b9bc4db412a807b807965b5" + integrity sha512-yh4FoRRPTgJWjv1oIu3YuvfYGD/WOEnyGizQ9fKs+hlMjIc0rzFpyUCo++P/3BUd0/hRKcI8D8mrpJK9OiOy1g== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/base" "5.0.0-alpha.75" + "@mui/system" "^5.6.0" + "@mui/types" "^7.1.3" + "@mui/utils" "^5.6.0" + "@types/react-transition-group" "^4.4.4" + clsx "^1.1.1" + csstype "^3.0.11" + hoist-non-react-statics "^3.3.2" + prop-types "^15.7.2" + react-is "^17.0.2" + react-transition-group "^4.4.2" + +"@mui/private-theming@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.6.0.tgz#b907e055a0a19caf554d5b43209a143edaa9b398" + integrity sha512-62jUFaMGfW3nvq/worcOAEiY++rWd44tpWShq4o97DybWmmWvEFYlBIuHEcXrtBIK/cloaQw8jqelQIFZeiVdw== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/utils" "^5.6.0" + prop-types "^15.7.2" + +"@mui/styled-engine@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.6.0.tgz#c7c34d2e319158559cef49b796457a4e6a4c58f7" + integrity sha512-K1WPKTruJTPA49cub0HtDCBBvosPKizqgZ4RenAfWz/ldlFtM4p7e7Mt3YEnNWTOJMHvDGcEke1tCuELkVAMyA== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/cache" "^11.7.1" + prop-types "^15.7.2" + +"@mui/system@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.6.0.tgz#4d6db0db6a8daf90acd7fcaab3a353aa127987ce" + integrity sha512-FoytH73hY78Dll6F0fg7AI/hnpplygbFeW0HsqBfwFWrt2PMc2YSq2ICqHzd2CZPIhzEgRHDTSI8bMTLtG9W7A== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/private-theming" "^5.6.0" + "@mui/styled-engine" "^5.6.0" + "@mui/types" "^7.1.3" + "@mui/utils" "^5.6.0" + clsx "^1.1.1" + csstype "^3.0.11" + prop-types "^15.7.2" + +"@mui/types@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a" + integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA== + +"@mui/utils@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.6.0.tgz#0ec741f5ac7c89ac76054832bed2d6e17ab1c011" + integrity sha512-LbZKkCOn4243vbEVGbaKV7t6eN6kz7t95DR6AcUCRk4daH3l7CXPYkWsyzysRWdXgSzHmIyrgg4FZKzTy0dTHQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@types/prop-types" "^15.7.4" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" + integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@popperjs/core@^2.11.4": + version "2.11.5" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" + integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== + +"@reduxjs/toolkit@^1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.1.tgz#94ee1981b8cf9227cda40163a04704a9544c9a9f" + integrity sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng== + dependencies: + immer "^9.0.7" + redux "^4.1.2" + redux-thunk "^2.4.1" + reselect "^4.1.5" + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/eslint-patch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323" + integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^8.0.0": + version "8.11.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" + integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.14.1": + version "5.16.2" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== + dependencies: + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^12.0.0": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.3.tgz#ef26c5f122661ea9b6f672b23dc6b328cadbbf26" + integrity sha512-oCULRXWRrBtC9m6G/WohPo1GLcLesH7T4fuKzRAKn1CWVu9BzXtqLXDDTA6KhFNNtRwLtfSMr20HFl+Qrdrvmg== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.0.0" + "@types/react-dom" "*" + +"@testing-library/user-event@^13.2.1": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.18" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.28.2": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*", "@types/jest@^27.0.1": + version "27.4.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" + integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/lodash@^4.14.175": + version "4.14.181" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" + integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*": + version "17.0.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" + integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + +"@types/node@^16.7.13": + version "16.11.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47" + integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.5": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" + integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + +"@types/prop-types@*", "@types/prop-types@^15.7.4": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-dom@*", "@types/react-dom@^17.0.9": + version "17.0.13" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.13.tgz#a3323b974ee4280070982b3112351bb1952a7809" + integrity sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ== + dependencies: + "@types/react" "*" + +"@types/react-is@^16.7.1 || ^17.0.0": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" + integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== + dependencies: + "@types/react" "*" + +"@types/react-redux@^7.1.20", "@types/react-redux@^7.1.23": + version "7.1.23" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.23.tgz#3c2bb1bcc698ae69d70735f33c5a8e95f41ac528" + integrity sha512-D02o3FPfqQlfu2WeEYwh3x2otYd2Dk1o8wAfsA0B1C2AJEFxE663Ozu7JzuWbznGgW248NaOF6wsqCGNq9d3qw== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react-transition-group@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" + integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^17.0.43": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/redux-persist@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/redux-persist/-/redux-persist-4.3.1.tgz#aa4c876859e0bea5155e5f7980e5b8c4699dc2e6" + integrity sha1-qkyHaFngvqUVXl95gOW4xGmdwuY= + dependencies: + redux-persist "*" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/swagger-schema-official@2.0.21": + version "2.0.21" + resolved "https://registry.yarnpkg.com/@types/swagger-schema-official/-/swagger-schema-official-2.0.21.tgz#56812a86dcd57ba60e5c51705ee96a2b2dc9b374" + integrity sha512-n9BbLOjR4Hre7B4TSGGMPohOgOg8tcp00uxqsIE00uuWQC0QuX57G1bqC1csLsk2DpTGtHkd0dEb3ipsCZ9dAA== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz#ee6c7ffe9f8595882ee7bda8af33ae7b8789ef17" + integrity sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw== + dependencies: + "@types/jest" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + +"@types/ws@^8.2.2": + version "8.5.2" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26" + integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@types/yup@^0.29.13": + version "0.29.13" + resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.13.tgz#21b137ba60841307a3c8a1050d3bf4e63ad561e9" + integrity sha512-qRyuv+P/1t1JK1rA+elmK1MmCL1BapEzKKfbEhDBV/LMMse4lmhZ/XbgETI39JveDJRpLjmToOI6uFtMW/WR2g== + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz#5119b67152356231a0e24b998035288a9cd21335" + integrity sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w== + dependencies: + "@typescript-eslint/scope-manager" "5.14.0" + "@typescript-eslint/type-utils" "5.14.0" + "@typescript-eslint/utils" "5.14.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.14.0.tgz#73a455cd975d52830360a5b4131b7c4f8f1ff06f" + integrity sha512-ke48La1A/TWAn949cdgQiP3oK0NT7ArhDAOVOmNLVjT/uAXlFyrJY8dM4qqxHrATzIp8glg+G2OZjy2lRKBIUA== + dependencies: + "@typescript-eslint/utils" "5.14.0" + +"@typescript-eslint/parser@^5.5.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.14.0.tgz#7c79f898aa3cff0ceee6f1d34eeed0f034fb9ef3" + integrity sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw== + dependencies: + "@typescript-eslint/scope-manager" "5.14.0" + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/typescript-estree" "5.14.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b" + integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw== + dependencies: + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/visitor-keys" "5.14.0" + +"@typescript-eslint/type-utils@5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz#711f08105860b12988454e91df433567205a8f0b" + integrity sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw== + dependencies: + "@typescript-eslint/utils" "5.14.0" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11" + integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw== + +"@typescript-eslint/typescript-estree@5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314" + integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA== + dependencies: + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/visitor-keys" "5.14.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.14.0", "@typescript-eslint/utils@^5.13.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4" + integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.14.0" + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/typescript-estree" "5.14.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" + integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== + dependencies: + "@typescript-eslint/types" "5.14.0" + eslint-visitor-keys "^3.0.0" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +address@^1.0.1, address@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" + integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.3, array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +array.prototype.flatmap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" + integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^10.4.2: + version "10.4.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" + integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== + dependencies: + browserslist "^4.19.1" + caniuse-lite "^1.0.30001297" + fraction.js "^4.1.2" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axe-core@^4.3.5: + version "4.4.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" + integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + +axios@^0.21.4: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axios@^0.26.0: + version "0.26.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.0.tgz#9a318f1c69ec108f8cd5f3c3d390366635e13928" + integrity sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og== + dependencies: + follow-redirects "^1.14.8" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.19.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1, browserslist@^4.19.3: + version "4.20.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.0.tgz#35951e3541078c125d36df76056e94738a52ebe9" + integrity sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ== + dependencies: + caniuse-lite "^1.0.30001313" + electron-to-chromium "^1.4.76" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001313: + version "1.0.30001314" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz#65c7f9fb7e4594fca0a333bec1d8939662377596" + integrity sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +charcodes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" + integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +clean-css@^5.2.2: + version "5.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clsx@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + +colorette@^2.0.10: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js-pure@^3.20.2, core-js-pure@^3.8.1: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" + integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + +core-js@^3.19.2: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.0.3: + version "6.1.4" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== + dependencies: + timsort "^0.3.0" + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.7" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.5" + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^6.4.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.4.1.tgz#a2b5955e3283d8df6b6bb86e4107fedaeec1521b" + integrity sha512-R70R/Q1fPlM1D6Y+Kpat0QjiY+aMsY2/8lekdVoYcJ7ZQs9kw71W78FdOMf8DFq975KHQf1089PNg1dLsbAhoA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.1.tgz#a83b15d3294c69bd1cedd14b0066c2f2357d108e" + integrity sha512-Y+CUCS5iZ1uzHn5KtmKIlysQVXrTtLCnYsYTOJcbdd5rghOwtw1gobvEXefBncjGO4fWwGZr9/n9hwZfo6W1Fw== + dependencies: + css-declaration-sorter "^6.0.3" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.0" + postcss-discard-comments "^5.1.1" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.0" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.0" + postcss-merge-rules "^5.1.0" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.0" + postcss-minify-params "^5.1.0" + postcss-minify-selectors "^5.2.0" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.0" + postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.0" + postcss-ordered-values "^5.1.0" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.1" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.1.tgz#2df44d26461b95f699096b6830df5107b1a758f4" + integrity sha512-WWfN7jBK/3Uk3oX/jsFbQApDf9DkXj6dOYull5ZaSGskcDggzg3RyDZI4GKKO+00LdfLMEZtY1cwTQUL+YMg2Q== + dependencies: + cssnano-preset-default "^5.2.1" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.11, csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + +damerau-levenshtein@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.13" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" + integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dotenv@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" + integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.4.76: + version "1.4.77" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz#c26e454cb8721d4ebdae3e276c57cd32e51c32ed" + integrity sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +enhanced-resolve@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" + integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" + integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.0.tgz#0fa96d5ec1dfb99c029b1554362ab3fa1c3757df" + integrity sha512-xyymoxtIt1EOsSaGag+/jmcywRuieQoA2JbPCjnw9HukFj9/97aGPoZVFioaotzk1K5Qt9sHO5EutZbkrAXS0g== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.25.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" + integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.2" + has "^1.0.3" + is-core-module "^2.8.0" + is-glob "^4.0.3" + minimatch "^3.0.4" + object.values "^1.1.5" + resolve "^1.20.0" + tsconfig-paths "^3.12.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" + integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + dependencies: + "@babel/runtime" "^7.16.3" + aria-query "^4.2.2" + array-includes "^3.1.4" + ast-types-flow "^0.0.7" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.2.1" + language-tags "^1.0.5" + minimatch "^3.0.4" + +eslint-plugin-react-hooks@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" + integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== + +eslint-plugin-react@^7.27.1: + version "7.29.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.3.tgz#f4eab757f2756d25d6d4c2a58a9e20b004791f05" + integrity sha512-MzW6TuCnDOcta67CkpDyRfRsEVx9FNMDV8wZsDqe1luHPdGTrQIUaUXD27Ja3gHsdOIs/cXzNchWGlqm+qRVRg== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + +eslint-plugin-testing-library@^5.0.1: + version "5.0.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.0.6.tgz#86b0aff2ed0c80f63966c2a4894c06bff382b6d5" + integrity sha512-mMU4+slZsWKHNxtxc5TE2+bs9S//e2uFPlcpTapPhVdnctgn0+G/DaUu6VbT0JLiVMcbBjy3IcfddK+abZawbw== + dependencies: + "@typescript-eslint/utils" "^5.13.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint-webpack-plugin@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz#83dad2395e5f572d6f4d919eedaa9cf902890fcb" + integrity sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg== + dependencies: + "@types/eslint" "^7.28.2" + jest-worker "^27.3.1" + micromatch "^4.0.4" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + +eslint@^8.3.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d" + integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw== + dependencies: + "@eslint/eslintrc" "^1.2.0" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== + dependencies: + acorn "^8.7.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eta@^1.12.1: + version "1.12.3" + resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1" + integrity sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +express@^4.17.1: + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.19.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.2" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.7" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.8: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" + integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formik@^2.2.9: + version "2.2.9" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.9.tgz#8594ba9c5e2e5cf1f42c5704128e119fc46232d0" + integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA== + dependencies: + deepmerge "^2.1.1" + hoist-non-react-statics "^3.3.0" + lodash "^4.17.21" + lodash-es "^4.17.21" + react-fast-compare "^2.0.1" + tiny-warning "^1.0.2" + tslib "^1.10.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" + integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.12.1" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.1, globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^6.1.4: + version "6.1.5" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" + integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immer@^9.0.7: + version "9.0.12" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" + integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^27.0.0, jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.0.0.tgz#4de2ca1eb596acb1889752afbab84b74fcd99173" + integrity sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^27.0.0" + jest-watcher "^27.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.0.0, jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.3.1, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.0.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpointer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" + integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3, lilconfig@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memfs@^3.1.2, memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +"mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + +nanoid@^3.1.22, nanoid@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" + integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0= + dependencies: + es6-promise "^3.2.1" + +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" + integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.values@^1.1.0, object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + dependencies: + "@types/retry" "^0.12.0" + retry "^0.13.1" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +postcss-attribute-case-insensitive@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" + integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== + dependencies: + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz#f59ccaeb4ee78f1b32987d43df146109cc743073" + integrity sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz#61a0fd151d28b128aa6a8a21a2dad24eebb34d52" + integrity sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" + integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" + integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" + integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== + +postcss-custom-properties@^12.1.4: + version "12.1.4" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz#e3d8a8000f28094453b836dff5132385f2862285" + integrity sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" + integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" + integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810" + integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz#a12cfdb7d11fa1a99ccecc747f0c19718fb37152" + integrity sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.5.tgz#b9614d50abd91e4c88a114644a9766880dabe393" + integrity sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" + integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== + +postcss-image-set-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" + integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz#b75afe43ba9c1f16bfe9bb12c8109cabd55b5fc2" + integrity sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" + integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== + dependencies: + lilconfig "^2.0.4" + yaml "^1.10.2" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95" + integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" + +postcss-merge-rules@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f" + integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377" + integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e" + integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" + integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + +postcss-nesting@^10.1.2: + version "10.1.3" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.3.tgz#f0b1cd7ae675c697ab6a5a5ca1feea4784a2ef77" + integrity sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" + integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" + integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c" + integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" + integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== + +postcss-ordered-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f" + integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" + integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" + integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.4.2" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.4.2.tgz#2ff3e4787bd9d89710659535855d6ce85ce6110b" + integrity sha512-AmOkb8AeNNQwE/z2fHl1iwOIt8J50V8WR0rmLagcgIDoqlJZWjV3NdtOPnLGco1oN8DZe+Ss5B9ULbBeS6HfeA== + dependencies: + "@csstools/postcss-color-function" "^1.0.2" + "@csstools/postcss-font-format-keywords" "^1.0.0" + "@csstools/postcss-hwb-function" "^1.0.0" + "@csstools/postcss-ic-unit" "^1.0.0" + "@csstools/postcss-is-pseudo-class" "^2.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.0" + "@csstools/postcss-oklab-function" "^1.0.1" + "@csstools/postcss-progressive-custom-properties" "^1.2.0" + autoprefixer "^10.4.2" + browserslist "^4.19.3" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^6.4.0" + postcss-attribute-case-insensitive "^5.0.0" + postcss-color-functional-notation "^4.2.2" + postcss-color-hex-alpha "^8.0.3" + postcss-color-rebeccapurple "^7.0.2" + postcss-custom-media "^8.0.0" + postcss-custom-properties "^12.1.4" + postcss-custom-selectors "^6.0.0" + postcss-dir-pseudo-class "^6.0.4" + postcss-double-position-gradients "^3.1.0" + postcss-env-function "^4.0.5" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.3" + postcss-image-set-function "^4.0.6" + postcss-initial "^4.0.1" + postcss-lab-function "^4.1.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.1.2" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.3" + postcss-page-break "^3.0.4" + postcss-place "^7.0.4" + postcss-pseudo-class-any-link "^7.1.1" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^5.0.0" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz#534eb1dadd9945eb07830dbcc06fb4d5d865b8e0" + integrity sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz#ac5fc506f7565dd872f82f5314c0f81a05630dc7" + integrity sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ== + dependencies: + balanced-match "^1.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.3.5, postcss@^8.4.4, postcss@^8.4.6, postcss@^8.4.7: + version "8.4.8" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032" + integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ== + dependencies: + nanoid "^3.3.1" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@^2.2.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4" + integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A== + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-expr@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== + dependencies: + bytes "3.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-dev-utils@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" + integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.10" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" + integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== + +react-fast-compare@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1, react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-redux@^7.2.6: + version "7.2.8" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" + integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-router-dom@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442" + integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ== + dependencies: + history "^5.2.0" + react-router "6.2.2" + +react-router@6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249" + integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ== + dependencies: + history "^5.2.0" + +react-scripts@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.0.tgz#6547a6d7f8b64364ef95273767466cc577cb4b60" + integrity sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.0" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.0" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react-transition-group@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.1: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +redux-persist@*, redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + +redux-thunk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" + integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== + +redux@^4.0.0, redux@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" + integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== + dependencies: + "@babel/runtime" "^7.9.2" + +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +reselect@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" + integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.70.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" + integrity sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" + integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== + dependencies: + node-forge "^1.2.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" + integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" + integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" + integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.0, strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + dependencies: + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" + +stylis@4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +swagger-schema-official@2.0.0-bab6bed: + version "2.0.0-bab6bed" + resolved "https://registry.yarnpkg.com/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz#70070468d6d2977ca5237b2e519ca7d06a2ea3fd" + integrity sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0= + +swagger-typescript-api@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/swagger-typescript-api/-/swagger-typescript-api-9.3.1.tgz#07df3aa8e83a3897356a6e820e88b8348830aa6b" + integrity sha512-vtarFELmXmDKrtY2FvU2OjNvN1BqOj3kHWzz7mAresNKRgRubZpjlopECxbBekrLeX3lezAYSNcrFMVRGJAD4A== + dependencies: + "@types/swagger-schema-official" "2.0.21" + axios "^0.21.4" + commander "^6.2.1" + cosmiconfig "^7.0.0" + eta "^1.12.1" + js-yaml "^4.0.0" + lodash "^4.17.21" + make-dir "^3.1.0" + nanoid "^3.1.22" + node-emoji "^1.10.0" + prettier "^2.2.1" + swagger-schema-official "2.0.0-bab6bed" + swagger2openapi "^7.0.5" + typescript "^4.2.4" + +swagger2openapi@^7.0.5: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tailwindcss@^3.0.2: + version "3.0.23" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10" + integrity sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== + dependencies: + arg "^5.0.1" + chalk "^4.1.2" + chokidar "^3.5.3" + color-name "^1.1.4" + cosmiconfig "^7.0.1" + detective "^5.2.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.11" + glob-parent "^6.0.2" + is-glob "^4.0.3" + normalize-path "^3.0.0" + object-hash "^2.2.0" + postcss "^8.4.6" + postcss-js "^4.0.0" + postcss-load-config "^3.1.0" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: + version "5.12.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" + integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-node@^10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" + integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== + dependencies: + "@cspotcode/source-map-support" "0.7.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.0" + yn "3.1.1" + +tsconfig-paths@^3.12.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz#f3e9b8f6876698581d94470c03c95b3a48c0e3d7" + integrity sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^4.2.4, typescript@^4.4.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" + integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" + integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" + integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== + dependencies: + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0: + version "4.7.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.2.2" + ansi-html-community "^0.0.8" + bonjour "^3.5.0" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + default-gateway "^6.0.3" + del "^6.0.0" + express "^4.17.1" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^4.0.0" + selfsigned "^2.0.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + strip-ansi "^7.0.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.70.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.9.2" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.1.tgz#df79c6a4a22945d8a44493a4947a6ed0f720ef86" + integrity sha512-T5a35fagLXQvV8Dr4+bDU+XYsP90jJ3eBLjZMKuCNELMQZNj+VekCODz1QK44jgoBeQk+vp94pkZV6G+e41pgg== + dependencies: + idb "^6.1.4" + workbox-core "6.5.1" + +workbox-broadcast-update@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.1.tgz#9aecb116979b0709480b84cfd1beca7a901d01d4" + integrity sha512-mb/oyblyEpDbw167cCTyHnC3RqCnCQHtFYuYZd+QTpuExxM60qZuBH1AuQCgvLtDcztBKdEYK2VFD9SZYgRbaQ== + dependencies: + workbox-core "6.5.1" + +workbox-build@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.1.tgz#6b5e8f090bb608267868540d3072b44b8531b3bc" + integrity sha512-coDUDzHvFZ1ADOl3wKCsCSyOBvkPKlPgcQDb6LMMShN1zgF31Mev/1HzN3+9T2cjjWAgFwZKkuRyExqc1v21Zw== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.1" + workbox-broadcast-update "6.5.1" + workbox-cacheable-response "6.5.1" + workbox-core "6.5.1" + workbox-expiration "6.5.1" + workbox-google-analytics "6.5.1" + workbox-navigation-preload "6.5.1" + workbox-precaching "6.5.1" + workbox-range-requests "6.5.1" + workbox-recipes "6.5.1" + workbox-routing "6.5.1" + workbox-strategies "6.5.1" + workbox-streams "6.5.1" + workbox-sw "6.5.1" + workbox-window "6.5.1" + +workbox-cacheable-response@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.1.tgz#f71d0a75b3d6846e39594955e99ac42fd26f8693" + integrity sha512-3TdtH/luDiytmM+Cn72HCBLZXmbeRNJqZx2yaVOfUZhj0IVwZqQXhNarlGE9/k6U5Jelb+TtpH2mLVhnzfiSMg== + dependencies: + workbox-core "6.5.1" + +workbox-core@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.1.tgz#0dba3bccf883a46dfa61cc412eaa3cb09bb549e6" + integrity sha512-qObXZ39aFJ2N8X7IUbGrJHKWguliCuU1jOXM/I4MTT84u9BiKD2rHMkIzgeRP1Ixu9+cXU4/XHJq3Cy0Qqc5hw== + +workbox-expiration@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.1.tgz#9f105fcf3362852754884ad153888070ce98b692" + integrity sha512-iY/cTADAQATMmPkUBRmQdacqq0TJd2wMHimBQz+tRnPGHSMH+/BoLPABPnu7O7rT/g/s59CUYYRGxe3mEgoJCA== + dependencies: + idb "^6.1.4" + workbox-core "6.5.1" + +workbox-google-analytics@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.1.tgz#685224d439c1e7a943f8241d65e2a34ee95a4ba0" + integrity sha512-qZU46/h4dbionYT6Yk6iBkUwpiEzAfnO1W7KkI+AMmY7G9/gA03dQQ7rpTw8F4vWrG7ahTUGWDFv6fERtaw1BQ== + dependencies: + workbox-background-sync "6.5.1" + workbox-core "6.5.1" + workbox-routing "6.5.1" + workbox-strategies "6.5.1" + +workbox-navigation-preload@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.1.tgz#a244e3bdf99ce86da7210315ca1ba5aef3710825" + integrity sha512-aKrgAbn2IMgzTowTi/ZyKdQUcES2m++9aGtpxqsX7Gn9ovCY8zcssaMEAMMwrIeveij5HiWNBrmj6MWDHi+0rg== + dependencies: + workbox-core "6.5.1" + +workbox-precaching@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.1.tgz#177b6424f1e71e601b9c3d6864decad2655f9ff9" + integrity sha512-EzlPBxvmjGfE56YZzsT/vpVkpLG1XJhoplgXa5RPyVWLUL1LbwEAxhkrENElSS/R9tgiTw80IFwysidfUqLihg== + dependencies: + workbox-core "6.5.1" + workbox-routing "6.5.1" + workbox-strategies "6.5.1" + +workbox-range-requests@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.1.tgz#f40f84aa8765940543eba16131d02f12b38e2fdc" + integrity sha512-57Da/qRbd9v33YlHX0rlSUVFmE4THCjKqwkmfhY3tNLnSKN2L5YBS3qhWeDO0IrMNgUj+rGve2moKYXeUqQt4A== + dependencies: + workbox-core "6.5.1" + +workbox-recipes@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.1.tgz#d2fb21743677cc3ca9e1fc9e3b68f0d1587df205" + integrity sha512-DGsyKygHggcGPQpWafC/Nmbm1Ny3sB2vE9r//3UbeidXiQ+pLF14KEG1/0NNGRaY+lfOXOagq6d1H7SC8KA+rA== + dependencies: + workbox-cacheable-response "6.5.1" + workbox-core "6.5.1" + workbox-expiration "6.5.1" + workbox-precaching "6.5.1" + workbox-routing "6.5.1" + workbox-strategies "6.5.1" + +workbox-routing@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.1.tgz#5488795ae850fe3ae435241143b54ff25ab0db70" + integrity sha512-yAAncdTwanvlR8KPjubyvFKeAok8ZcIws6UKxvIAg0I+wsf7UYi93DXNuZr6RBSQrByrN6HkCyjuhmk8P63+PA== + dependencies: + workbox-core "6.5.1" + +workbox-strategies@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.1.tgz#51cabbddad5a1956eb9d51cf6ce01ab0a6372756" + integrity sha512-JNaTXPy8wXzKkr+6za7/eJX9opoZk7UgY261I2kPxl80XQD8lMjz0vo9EOcBwvD72v3ZhGJbW84ZaDwFEhFvWA== + dependencies: + workbox-core "6.5.1" + +workbox-streams@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.1.tgz#12036817385fa4449a86a3ef77fce1cb00ecad9f" + integrity sha512-7jaTWm6HRGJ/ewECnhb+UgjTT50R42E0/uNCC4eTKQwnLO/NzNGjoXTdQgFjo4zteR+L/K6AtFAiYKH3ZJbAYw== + dependencies: + workbox-core "6.5.1" + workbox-routing "6.5.1" + +workbox-sw@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.1.tgz#f9256b40f0a7e94656ccd06f127ba19a92cd23c5" + integrity sha512-hVrQa19yo9wzN1fQQ/h2JlkzFpkuH2qzYT2/rk7CLaWt6tLnTJVFCNHlGRRPhytZSf++LoIy7zThT714sowT/Q== + +workbox-webpack-plugin@^6.4.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.1.tgz#da88b4b6d8eff855958f0e7ebb7aa3eea50a8282" + integrity sha512-SHtlQBpKruI16CAYhICDMkgjXE2fH5Yp+D+1UmBfRVhByZYzusVOykvnPm8ObJb9d/tXgn9yoppoxafFS7D4vQ== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.1" + +workbox-window@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.1.tgz#7b5ca29467b1da45dc9e2b5a1b89159d3eb9957a" + integrity sha512-oRlun9u7b7YEjo2fIDBqJkU2hXtrEljXcOytRhfeQRbqXxjUOpFgXSGRSAkmDx1MlKUNOSbr+zfi8h5n7In3yA== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.1" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.4.6: + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + +ws@^8.4.2: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.0.1: + version "17.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" + integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yup@^0.32.11: + version "0.32.11" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2"