]> git.kaiwu.me - quickjs.git/commitdiff
implemented the Intl.Locale info methods and added the full UTS 35 likely subtags...
authorFabrice Bellard <fabrice@bellard.org>
Mon, 19 Oct 2026 16:42:48 +0000 (18:42 +0200)
committerFabrice Bellard <fabrice@bellard.org>
Mon, 19 Oct 2026 16:42:48 +0000 (18:42 +0200)
gen-locale-data.js
gen_tzdata.py
intl/collator.c
intl/intl.c
intl/intl_private.h
intl/locale-data.c
intl/locale.c
temporal/timezone.h
temporal/tzdata_generated.c
test262_errors.txt

index 5f52b0ea8eb3a3020e2aa66ee105b3a1b89ca092..ee721d455ad01d136ad0b69a0d9adc1d78f43f6e 100644 (file)
@@ -921,6 +921,105 @@ for (const dnLocale of dnDataEntries) {
 out += `};\n`;
 out += `const int display_names_count = sizeof(display_names_data) / sizeof(display_names_data[0]);\n`;
 
+/* ------------------------------------------------------------------ */
+/* UTS 35 supplemental data: likely subtags, calendar preference,      */
+/* time data, week data and script direction.                          */
+/* ------------------------------------------------------------------ */
+const CLDR_CORE_BASE = path.join(path.dirname(CLDR_BASE), '..', 'cldr-core');
+
+function readSupplementalJSON(rel) {
+    return JSON.parse(fs.readFileSync(path.join(CLDR_CORE_BASE, rel), 'utf8'));
+}
+
+/* --- Likely subtags --- */
+const likelySubtags = readSupplementalJSON('supplemental/likelySubtags.json')['supplemental']['likelySubtags'];
+const likelySubtagKeys = Object.keys(likelySubtags).sort();
+out += `\n/* Add Likely Subtags data (UTS 35). Each entry is "key\\000value" where the\n`
+     + `   key is language[-script][-region] and the value is language-script-region. */\n`;
+out += `const char *const likely_subtags_tab[] = {\n`;
+for (const k of likelySubtagKeys) {
+    out += `    "${escapeCString(k)}\\000${escapeCString(likelySubtags[k])}",\n`;
+}
+out += `};\n`;
+out += `const int likely_subtags_count = sizeof(likely_subtags_tab) / sizeof(likely_subtags_tab[0]);\n`;
+
+/* --- Calendar preference data (UTS 35 Part 4, Calendar Preference Data) --- */
+const calendarPreference = readSupplementalJSON('supplemental/calendarPreferenceData.json')['supplemental']['calendarPreferenceData'];
+const calPrefKeys = Object.keys(calendarPreference).sort();
+out += `\n/* Calendar preference data: locale or region -> calendars by descending preference */\n`;
+out += `const IntlPrefData cal_pref_tab[] = {\n`;
+for (const k of calPrefKeys) {
+    out += `    { "${escapeCString(k)}", "${escapeCString(calendarPreference[k].join(' '))}" },\n`;
+}
+out += `};\n`;
+out += `const int cal_pref_count = sizeof(cal_pref_tab) / sizeof(cal_pref_tab[0]);\n`;
+
+/* --- Time data (UTS 35 Part 4, Time Data) --- */
+const timeData = readSupplementalJSON('supplemental/timeData.json')['supplemental']['timeData'];
+function hourCycleOf(token) {
+    switch (token) {
+    case 'h': case 'hb': case 'hB': return 'h12';
+    case 'H': return 'h23';
+    case 'K': return 'h11';
+    case 'k': return 'h24';
+    default: return null;
+    }
+}
+const timeDataKeys = Object.keys(timeData).sort();
+out += `\n/* Time data: locale or region -> hour cycles by descending preference */\n`;
+out += `const IntlPrefData time_data_tab[] = {\n`;
+for (const k of timeDataKeys) {
+    const entry = timeData[k];
+    const ordered = (entry['_preferred'] + ' ' + entry['_allowed']).split(/\s+/);
+    const cycles = [];
+    for (const tok of ordered) {
+        const hc = hourCycleOf(tok);
+        if (hc && !cycles.includes(hc)) cycles.push(hc);
+    }
+    if (cycles.length == 0) continue;
+    out += `    { "${escapeCString(k)}", "${cycles.join(' ')}" },\n`;
+}
+out += `};\n`;
+out += `const int time_data_count = sizeof(time_data_tab) / sizeof(time_data_tab[0]);\n`;
+
+/* --- Week data (UTS 35 Part 4, Week Data) --- */
+const weekData = readSupplementalJSON('supplemental/weekData.json')['supplemental']['weekData'];
+const dayToNumber = { mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6, sun: 7 };
+const firstDay001 = dayToNumber[weekData['firstDay']['001']];
+const weekendStart001 = dayToNumber[weekData['weekendStart']['001']];
+const weekendEnd001 = dayToNumber[weekData['weekendEnd']['001']];
+const weekRegions = new Set();
+for (const name of ['firstDay', 'weekendStart', 'weekendEnd']) {
+    for (const region of Object.keys(weekData[name])) {
+        if (region.indexOf('-') < 0) weekRegions.add(region);
+    }
+}
+const weekRegionKeys = Array.from(weekRegions).sort();
+out += `\n/* Week data: region -> first day of week and weekend range (ISO 8601 days) */\n`;
+out += `const IntlWeekData week_data_tab[] = {\n`;
+for (const region of weekRegionKeys) {
+    const fd = dayToNumber[weekData['firstDay'][region]] || firstDay001;
+    const ws = dayToNumber[weekData['weekendStart'][region]] || weekendStart001;
+    const we = dayToNumber[weekData['weekendEnd'][region]] || weekendEnd001;
+    out += `    { "${escapeCString(region)}", ${fd}, ${ws}, ${we} },\n`;
+}
+out += `};\n`;
+out += `const int week_data_count = sizeof(week_data_tab) / sizeof(week_data_tab[0]);\n`;
+
+/* --- Script direction (UTS 35 Part 1, Script Metadata) --- */
+const scriptMetadata = readSupplementalJSON('scriptMetadata.json')['scriptMetadata'];
+const scriptDirKeys = Object.keys(scriptMetadata).filter(s => {
+    const rtl = scriptMetadata[s].rtl;
+    return rtl === 'YES' || rtl === 'NO';
+}).sort();
+out += `\n/* Script direction: script -> 0 for left-to-right, 1 for right-to-left */\n`;
+out += `const IntlScriptDir script_dir_tab[] = {\n`;
+for (const s of scriptDirKeys) {
+    out += `    { "${escapeCString(s)}", ${scriptMetadata[s].rtl === 'YES' ? 1 : 0} },\n`;
+}
+out += `};\n`;
+out += `const int script_dir_count = sizeof(script_dir_tab) / sizeof(script_dir_tab[0]);\n`;
+
 const displayCurrencyCodesSorted = Array.from(allDisplayCurrencyCodes).sort();
 out += `\nconst char *intl_supported_currencies[] = {\n`;
 for (let i = 0; i < displayCurrencyCodesSorted.length; i++) {
index cf458e09eeceb6722f59205702ff58e376929ad9..c895b71ecae375eb55a6494432543c36826fec90 100644 (file)
@@ -296,6 +296,23 @@ def collect_zone_names():
     return sorted(names)
 
 
+def collect_region_zones():
+    """Map ISO 3166 country codes to the zone identifiers of zone.tab."""
+    regions = {}
+    with open('/usr/share/zoneinfo/zone.tab', encoding='utf-8') as fp:
+        for line in fp:
+            line = line.rstrip('\n')
+            if not line or line.startswith('#'):
+                continue
+            fields = line.split('\t')
+            if len(fields) < 3:
+                continue
+            regions.setdefault(fields[0], []).append(fields[2])
+    for zones in regions.values():
+        zones.sort()
+    return regions
+
+
 def collect_all_zones():
     """Return set of canonical zones plus aliases."""
     zones = set(NEEDED_ZONES)
@@ -405,9 +422,19 @@ def main():
         for name in zone_names:
             f.write(f'    "{name}",\n')
         f.write('};\n')
-        f.write('const int ti_tz_name_count = countof(ti_tz_names);\n')
+        f.write('const int ti_tz_name_count = countof(ti_tz_names);\n\n')
+
+        # Zones commonly used in each region (Intl.Locale.prototype.getTimeZones)
+        region_zones = collect_region_zones()
+        f.write('/* Zone identifiers commonly used in each region, sorted and zero separated */\n')
+        f.write('const TiTzRegion ti_tz_region_tab[] = {\n')
+        for region in sorted(region_zones):
+            zones = '\\000'.join(region_zones[region])
+            f.write(f'    {{ "{region}", "{zones}" }},\n')
+        f.write('};\n')
+        f.write('const int ti_tz_region_count = countof(ti_tz_region_tab);\n')
 
-    print(f"Generated {out_path}: {len(canonical_list)} canonical zones, {len(alias_list)} aliases, {len(zone_names)} zone names", file=sys.stderr)
+    print(f"Generated {out_path}: {len(canonical_list)} canonical zones, {len(alias_list)} aliases, {len(zone_names)} zone names, {len(region_zones)} regions", file=sys.stderr)
 
 if __name__ == "__main__":
     main()
index bf1a9fc3051a13618a4468e3b8b783642cc8f735..8e44e53cd79362eb808d853d0c419b25cb947138 100644 (file)
@@ -82,13 +82,21 @@ static int is_collation_supported(const char *collation, const char *locale)
 {
     if (!strcmp(collation, "default"))
         return 1;
+    /* the root collations are inherited by every locale */
+    if (!strcmp(collation, "emoji") || !strcmp(collation, "eor"))
+        return 1;
     if (!strcmp(locale, "de") || !strncmp(locale, "de-", 3)) {
-        if (!strcmp(collation, "phonebk") || !strcmp(collation, "eor"))
+        if (!strcmp(collation, "phonebk"))
             return 1;
     }
     return 0;
 }
 
+BOOL js_intl_collation_is_supported(const char *collation, const char *locale)
+{
+    return is_collation_supported(collation, locale);
+}
+
 static JSClassDef js_collator_class = {
     "Collator",
     .finalizer = js_collator_finalizer,
index d1cfbbd6ba9ad517059369f7ec80692bd1179921..a2c9edeea58b07801a0c47adfa85698ad2591e39 100644 (file)
@@ -135,7 +135,7 @@ const char *intl_all_numbering_systems[] = {
 const int intl_all_numbering_systems_count = countof(intl_all_numbering_systems);
 
 const char *intl_supported_collations[] = {
-    "eor", "phonebk"
+    "emoji", "eor", "phonebk"
 };
 const int intl_supported_collations_count = countof(intl_supported_collations);
 
index 3f6bed466cc3ef780cc039b862d42e9327553f2f..0a8b5c5f442a3e407230f72d95adea4a732315f2 100644 (file)
@@ -6,6 +6,7 @@
 #define QUICKJS_INTL_PRIVATE_H
 
 #include "../quickjs.h"
+#include "../cutils.h"
 
 JSValue js_canonicalizeLocaleList(JSContext *ctx, JSValueConst locales);
 int js_canonicalizeLocaleList_c(JSContext *ctx, JSValueConst locales,
@@ -56,6 +57,7 @@ char *js_intl_locale_get_numbering_system(JSContext *ctx, const char *locale);
 char *js_intl_locale_get_unicode_key(JSContext *ctx, const char *locale, const char *key);
 const char *js_intl_find_u_extension(const char *locale);
 int js_intl_locale_has_key(const char *locale, const char *key);
+BOOL js_intl_collation_is_supported(const char *collation, const char *locale);
 
 extern const char *intl_all_numbering_systems[];
 extern const int intl_all_numbering_systems_count;
@@ -334,6 +336,38 @@ static inline const char *strpool_get(const char *pool, int n) {
 #define LD_DAYPERIOD_NARROW(ld, i) strpool_get(dayperiod_narrow_tab[(ld)->dayperiod_narrow_idx], (i))
 
 const LocaleData *js_intl_find_locale_data(const char *locale);
+
+/* UTS 35 supplemental data (see gen-locale-data.js) */
+
+typedef struct {
+    const char *key;   /* locale or region subtag */
+    const char *value; /* space separated list, most preferred first */
+} IntlPrefData;
+
+extern const char *const likely_subtags_tab[]; /* "key\000value" entries, sorted */
+extern const int likely_subtags_count;
+extern const IntlPrefData cal_pref_tab[];
+extern const int cal_pref_count;
+extern const IntlPrefData time_data_tab[];
+extern const int time_data_count;
+
+typedef struct {
+    const char *region;
+    uint8_t firstDay;     /* ISO 8601 day of week, 1 (Monday) .. 7 (Sunday) */
+    uint8_t weekendStart;
+    uint8_t weekendEnd;
+} IntlWeekData;
+
+extern const IntlWeekData week_data_tab[];
+extern const int week_data_count;
+
+typedef struct {
+    const char *script;
+    uint8_t dir; /* 0 = left-to-right, 1 = right-to-left */
+} IntlScriptDir;
+
+extern const IntlScriptDir script_dir_tab[];
+extern const int script_dir_count;
 int js_intl_get_currency_digits(const char *currency);
 const char *js_intl_get_currency_symbol(const char *currency, const char *locale);
 
index 97792347b09a76290de41c1e2a792711cbee4ecd..686b0ee52efcfd2e2d93b28d4d997b7ccc6ac9ef 100644 (file)
@@ -24611,6 +24611,8476 @@ const DisplayNamesData display_names_data[] = {
 };
 const int display_names_count = sizeof(display_names_data) / sizeof(display_names_data[0]);
 
+/* Add Likely Subtags data (UTS 35). Each entry is "key\000value" where the
+   key is language[-script][-region] and the value is language-script-region. */
+const char *const likely_subtags_tab[] = {
+    "aa\000aa-Latn-ET",
+    "aaa\000aaa-Latn-NG",
+    "aab\000aab-Latn-NG",
+    "aac\000aac-Latn-PG",
+    "aad\000aad-Latn-PG",
+    "aae\000aae-Latn-IT",
+    "aaf\000aaf-Mlym-IN",
+    "aag\000aag-Latn-PG",
+    "aah\000aah-Latn-PG",
+    "aai\000aai-Latn-PG",
+    "aak\000aak-Latn-PG",
+    "aal\000aal-Latn-CM",
+    "aan\000aan-Latn-BR",
+    "aao\000aao-Arab-DZ",
+    "aap\000aap-Latn-BR",
+    "aaq\000aaq-Latn-US",
+    "aas\000aas-Latn-TZ",
+    "aat\000aat-Grek-GR",
+    "aau\000aau-Latn-PG",
+    "aaw\000aaw-Latn-PG",
+    "aax\000aax-Latn-ID",
+    "aaz\000aaz-Latn-ID",
+    "ab\000ab-Cyrl-GE",
+    "aba\000aba-Latn-CI",
+    "abb\000abb-Latn-CM",
+    "abc\000abc-Latn-PH",
+    "abd\000abd-Latn-PH",
+    "abe\000abe-Latn-CA",
+    "abf\000abf-Latn-MY",
+    "abg\000abg-Latn-PG",
+    "abh\000abh-Arab-TJ",
+    "abi\000abi-Latn-CI",
+    "abl\000abl-Rjng-ID",
+    "abm\000abm-Latn-NG",
+    "abn\000abn-Latn-NG",
+    "abo\000abo-Latn-NG",
+    "abp\000abp-Latn-PH",
+    "abq\000abq-Cyrl-RU",
+    "abq-Latn\000abq-Latn-TR",
+    "abq-TR\000abq-Latn-TR",
+    "abr\000abr-Latn-GH",
+    "abs\000abs-Latn-ID",
+    "abt\000abt-Latn-PG",
+    "abu\000abu-Latn-CI",
+    "abv\000abv-Arab-BH",
+    "abw\000abw-Latn-PG",
+    "abx\000abx-Latn-PH",
+    "aby\000aby-Latn-PG",
+    "abz\000abz-Latn-ID",
+    "aca\000aca-Latn-CO",
+    "acb\000acb-Latn-NG",
+    "acd\000acd-Latn-GH",
+    "ace\000ace-Latn-ID",
+    "acf\000acf-Latn-LC",
+    "ach\000ach-Latn-UG",
+    "acm\000acm-Arab-IQ",
+    "acn\000acn-Latn-CN",
+    "acp\000acp-Latn-NG",
+    "acq\000acq-Arab-YE",
+    "acr\000acr-Latn-GT",
+    "acs\000acs-Latn-BR",
+    "act\000act-Latn-NL",
+    "acu\000acu-Latn-EC",
+    "acv\000acv-Latn-US",
+    "acw\000acw-Arab-SA",
+    "acx\000acx-Arab-OM",
+    "acy\000acy-Latn-CY",
+    "acz\000acz-Latn-SD",
+    "ada\000ada-Latn-GH",
+    "adb\000adb-Latn-TL",
+    "add\000add-Latn-CM",
+    "ade\000ade-Latn-TG",
+    "adf\000adf-Arab-OM",
+    "adg\000adg-Latn-AU",
+    "adh\000adh-Latn-UG",
+    "adi\000adi-Latn-IN",
+    "adj\000adj-Latn-CI",
+    "adl\000adl-Latn-IN",
+    "adn\000adn-Latn-ID",
+    "ado\000ado-Latn-PG",
+    "adq\000adq-Latn-GH",
+    "adr\000adr-Latn-ID",
+    "adt\000adt-Latn-AU",
+    "adu\000adu-Latn-NG",
+    "adw\000adw-Latn-BR",
+    "adx\000adx-Tibt-CN",
+    "ady\000ady-Cyrl-RU",
+    "adz\000adz-Latn-PG",
+    "ae\000ae-Avst-IR",
+    "aea\000aea-Latn-AU",
+    "aeb\000aeb-Arab-TN",
+    "aec\000aec-Arab-EG",
+    "aee\000aee-Arab-AF",
+    "aek\000aek-Latn-NC",
+    "ael\000ael-Latn-CM",
+    "aem\000aem-Latn-VN",
+    "aeq\000aeq-Arab-PK",
+    "aer\000aer-Latn-AU",
+    "aes\000aes-Latn-US",
+    "aeu\000aeu-Latn-CN",
+    "aew\000aew-Latn-PG",
+    "aey\000aey-Latn-PG",
+    "aez\000aez-Latn-PG",
+    "af\000af-Latn-ZA",
+    "afb\000afb-Arab-KW",
+    "afd\000afd-Latn-PG",
+    "afe\000afe-Latn-NG",
+    "afh\000afh-Latn-GH",
+    "afi\000afi-Latn-PG",
+    "afk\000afk-Latn-PG",
+    "afn\000afn-Latn-NG",
+    "afo\000afo-Latn-NG",
+    "afp\000afp-Latn-PG",
+    "afs\000afs-Latn-MX",
+    "afu\000afu-Latn-GH",
+    "afz\000afz-Latn-ID",
+    "aga\000aga-Latn-PE",
+    "agb\000agb-Latn-NG",
+    "agc\000agc-Latn-NG",
+    "agd\000agd-Latn-PG",
+    "age\000age-Latn-PG",
+    "agf\000agf-Latn-ID",
+    "agg\000agg-Latn-PG",
+    "agh\000agh-Latn-CD",
+    "agi\000agi-Deva-IN",
+    "agj\000agj-Ethi-ET",
+    "agk\000agk-Latn-PH",
+    "agl\000agl-Latn-PG",
+    "agm\000agm-Latn-PG",
+    "agn\000agn-Latn-PH",
+    "ago\000ago-Latn-PG",
+    "agq\000agq-Latn-CM",
+    "agr\000agr-Latn-PE",
+    "ags\000ags-Latn-CM",
+    "agt\000agt-Latn-PH",
+    "agu\000agu-Latn-GT",
+    "agv\000agv-Latn-PH",
+    "agw\000agw-Latn-SB",
+    "agx\000agx-Cyrl-RU",
+    "agy\000agy-Latn-PH",
+    "agz\000agz-Latn-PH",
+    "aha\000aha-Latn-GH",
+    "ahb\000ahb-Latn-VU",
+    "ahg\000ahg-Ethi-ET",
+    "ahh\000ahh-Latn-ID",
+    "ahi\000ahi-Latn-CI",
+    "ahk\000ahk-Latn-MM",
+    "ahl\000ahl-Latn-TG",
+    "ahm\000ahm-Latn-CI",
+    "ahn\000ahn-Latn-NG",
+    "aho\000aho-Ahom-IN",
+    "ahp\000ahp-Latn-CI",
+    "ahr\000ahr-Deva-IN",
+    "ahs\000ahs-Latn-NG",
+    "aht\000aht-Latn-US",
+    "aia\000aia-Latn-SB",
+    "aib\000aib-Arab-CN",
+    "aic\000aic-Latn-PG",
+    "aid\000aid-Latn-AU",
+    "aie\000aie-Latn-PG",
+    "aif\000aif-Latn-PG",
+    "aig\000aig-Latn-AG",
+    "aii\000aii-Syrc-IQ",
+    "aij\000aij-Hebr-IL",
+    "aik\000aik-Latn-NG",
+    "ail\000ail-Latn-PG",
+    "aim\000aim-Latn-IN",
+    "ain\000ain-Kana-JP",
+    "aio\000aio-Mymr-IN",
+    "aip\000aip-Latn-ID",
+    "aiq\000aiq-Arab-AF",
+    "air\000air-Latn-ID",
+    "ait\000ait-Latn-BR",
+    "aiw\000aiw-Latn-ET",
+    "aix\000aix-Latn-PG",
+    "aiy\000aiy-Latn-CF",
+    "aja\000aja-Latn-SS",
+    "ajg\000ajg-Latn-BJ",
+    "aji\000aji-Latn-NC",
+    "ajn\000ajn-Latn-AU",
+    "ajw\000ajw-Latn-NG",
+    "ajz\000ajz-Latn-IN",
+    "ak\000ak-Latn-GH",
+    "akb\000akb-Latn-ID",
+    "akc\000akc-Latn-ID",
+    "akd\000akd-Latn-NG",
+    "ake\000ake-Latn-GY",
+    "akf\000akf-Latn-NG",
+    "akg\000akg-Latn-ID",
+    "akh\000akh-Latn-PG",
+    "aki\000aki-Latn-PG",
+    "akk\000akk-Xsux-IQ",
+    "akl\000akl-Latn-PH",
+    "ako\000ako-Latn-SR",
+    "akp\000akp-Latn-GH",
+    "akq\000akq-Latn-PG",
+    "akr\000akr-Latn-VU",
+    "aks\000aks-Latn-TG",
+    "akt\000akt-Latn-PG",
+    "aku\000aku-Latn-CM",
+    "akv\000akv-Cyrl-RU",
+    "akw\000akw-Latn-CG",
+    "akz\000akz-Latn-US",
+    "ala\000ala-Latn-NG",
+    "alc\000alc-Latn-CL",
+    "ald\000ald-Latn-CI",
+    "ale\000ale-Latn-US",
+    "alf\000alf-Latn-NG",
+    "alh\000alh-Latn-AU",
+    "ali\000ali-Latn-PG",
+    "alj\000alj-Latn-PH",
+    "alk\000alk-Laoo-LA",
+    "all\000all-Mlym-IN",
+    "alm\000alm-Latn-VU",
+    "aln\000aln-Latn-XK",
+    "alo\000alo-Latn-ID",
+    "alp\000alp-Latn-ID",
+    "alq\000alq-Latn-CA",
+    "alr\000alr-Cyrl-RU",
+    "alt\000alt-Cyrl-RU",
+    "alu\000alu-Latn-SB",
+    "alw\000alw-Ethi-ET",
+    "alx\000alx-Latn-PG",
+    "aly\000aly-Latn-AU",
+    "alz\000alz-Latn-CD",
+    "am\000am-Ethi-ET",
+    "ama\000ama-Latn-BR",
+    "amb\000amb-Latn-NG",
+    "amc\000amc-Latn-PE",
+    "ame\000ame-Latn-PE",
+    "amf\000amf-Latn-ET",
+    "amg\000amg-Latn-AU",
+    "ami\000ami-Latn-TW",
+    "amj\000amj-Latn-TD",
+    "amk\000amk-Latn-ID",
+    "amm\000amm-Latn-PG",
+    "amn\000amn-Latn-PG",
+    "amo\000amo-Latn-NG",
+    "amp\000amp-Latn-PG",
+    "amq\000amq-Latn-ID",
+    "amr\000amr-Latn-PE",
+    "ams\000ams-Jpan-JP",
+    "amt\000amt-Latn-PG",
+    "amu\000amu-Latn-MX",
+    "amv\000amv-Latn-ID",
+    "amw\000amw-Syrc-SY",
+    "amx\000amx-Latn-AU",
+    "amy\000amy-Latn-AU",
+    "amz\000amz-Latn-AU",
+    "an\000an-Latn-ES",
+    "ana\000ana-Latn-CO",
+    "anb\000anb-Latn-PE",
+    "anc\000anc-Latn-NG",
+    "and\000and-Latn-ID",
+    "ane\000ane-Latn-NC",
+    "anf\000anf-Latn-GH",
+    "ang\000ang-Latn-GB",
+    "anh\000anh-Latn-PG",
+    "ani\000ani-Cyrl-RU",
+    "anj\000anj-Latn-PG",
+    "ank\000ank-Latn-NG",
+    "anl\000anl-Latn-MM",
+    "anm\000anm-Latn-IN",
+    "ann\000ann-Latn-NG",
+    "ano\000ano-Latn-CO",
+    "anp\000anp-Deva-IN",
+    "anq\000anq-Deva-IN",
+    "anr\000anr-Deva-IN",
+    "ans\000ans-Latn-CO",
+    "ant\000ant-Latn-AU",
+    "anu\000anu-Ethi-ET",
+    "anv\000anv-Latn-CM",
+    "anw\000anw-Latn-NG",
+    "anx\000anx-Latn-PG",
+    "any\000any-Latn-CI",
+    "anz\000anz-Latn-PG",
+    "aoa\000aoa-Latn-ST",
+    "aob\000aob-Latn-PG",
+    "aoc\000aoc-Latn-VE",
+    "aod\000aod-Latn-PG",
+    "aoe\000aoe-Latn-PG",
+    "aof\000aof-Latn-PG",
+    "aog\000aog-Latn-PG",
+    "aoi\000aoi-Latn-AU",
+    "aoj\000aoj-Latn-PG",
+    "aok\000aok-Latn-NC",
+    "aol\000aol-Latn-ID",
+    "aom\000aom-Latn-PG",
+    "aon\000aon-Latn-PG",
+    "aor\000aor-Latn-VU",
+    "aos\000aos-Latn-ID",
+    "aot\000aot-Beng-BD",
+    "aox\000aox-Latn-GY",
+    "aoz\000aoz-Latn-ID",
+    "apb\000apb-Latn-SB",
+    "apc\000apc-Arab-SY",
+    "apd\000apd-Arab-SD",
+    "ape\000ape-Latn-PG",
+    "apf\000apf-Latn-PH",
+    "apg\000apg-Latn-ID",
+    "aph\000aph-Deva-NP",
+    "api\000api-Latn-BR",
+    "apj\000apj-Latn-US",
+    "apk\000apk-Latn-US",
+    "apl\000apl-Latn-US",
+    "apm\000apm-Latn-US",
+    "apn\000apn-Latn-BR",
+    "apo\000apo-Latn-PG",
+    "app\000app-Latn-VU",
+    "apr\000apr-Latn-PG",
+    "aps\000aps-Latn-PG",
+    "apt\000apt-Latn-IN",
+    "apu\000apu-Latn-BR",
+    "apv\000apv-Latn-BR",
+    "apw\000apw-Latn-US",
+    "apx\000apx-Latn-ID",
+    "apy\000apy-Latn-BR",
+    "apz\000apz-Latn-PG",
+    "aqc\000aqc-Cyrl-RU",
+    "aqd\000aqd-Latn-ML",
+    "aqg\000aqg-Latn-NG",
+    "aqk\000aqk-Latn-NG",
+    "aqm\000aqm-Latn-ID",
+    "aqn\000aqn-Latn-PH",
+    "aqr\000aqr-Latn-NC",
+    "aqt\000aqt-Latn-PY",
+    "aqz\000aqz-Latn-BR",
+    "ar\000ar-Arab-EG",
+    "arc\000arc-Armi-IR",
+    "arc-Hatr\000arc-Hatr-IQ",
+    "arc-Nbat\000arc-Nbat-JO",
+    "arc-Palm\000arc-Palm-SY",
+    "ard\000ard-Latn-AU",
+    "are\000are-Latn-AU",
+    "arh\000arh-Latn-CO",
+    "ari\000ari-Latn-US",
+    "arj\000arj-Latn-BR",
+    "ark\000ark-Latn-BR",
+    "arl\000arl-Latn-PE",
+    "arn\000arn-Latn-CL",
+    "aro\000aro-Latn-BO",
+    "arp\000arp-Latn-US",
+    "arq\000arq-Arab-DZ",
+    "arr\000arr-Latn-BR",
+    "ars\000ars-Arab-SA",
+    "aru\000aru-Latn-BR",
+    "arv\000arv-Latn-ET",
+    "arw\000arw-Latn-SR",
+    "arx\000arx-Latn-BR",
+    "ary\000ary-Arab-MA",
+    "arz\000arz-Arab-EG",
+    "as\000as-Beng-IN",
+    "asa\000asa-Latn-TZ",
+    "asb\000asb-Latn-CA",
+    "asc\000asc-Latn-ID",
+    "ase\000ase-Sgnw-US",
+    "asg\000asg-Latn-NG",
+    "ash\000ash-Latn-PE",
+    "asi\000asi-Latn-ID",
+    "asj\000asj-Latn-CM",
+    "ask\000ask-Arab-AF",
+    "asl\000asl-Latn-ID",
+    "asn\000asn-Latn-BR",
+    "aso\000aso-Latn-PG",
+    "asr\000asr-Deva-IN",
+    "ass\000ass-Latn-CM",
+    "ast\000ast-Latn-ES",
+    "asu\000asu-Latn-BR",
+    "asv\000asv-Latn-CD",
+    "asx\000asx-Latn-PG",
+    "asy\000asy-Latn-ID",
+    "asz\000asz-Latn-ID",
+    "ata\000ata-Latn-PG",
+    "atb\000atb-Latn-CN",
+    "atc\000atc-Latn-PE",
+    "atd\000atd-Latn-PH",
+    "ate\000ate-Latn-PG",
+    "atg\000atg-Latn-NG",
+    "ati\000ati-Latn-CI",
+    "atj\000atj-Latn-CA",
+    "atk\000atk-Latn-PH",
+    "atl\000atl-Latn-PH",
+    "atm\000atm-Latn-PH",
+    "atn\000atn-Arab-IR",
+    "ato\000ato-Latn-CM",
+    "atp\000atp-Latn-PH",
+    "atq\000atq-Latn-ID",
+    "atr\000atr-Latn-BR",
+    "ats\000ats-Latn-US",
+    "att\000att-Latn-PH",
+    "atu\000atu-Latn-SS",
+    "atv\000atv-Cyrl-RU",
+    "atw\000atw-Latn-US",
+    "atx\000atx-Latn-BR",
+    "aty\000aty-Latn-VU",
+    "atz\000atz-Latn-PH",
+    "aua\000aua-Latn-SB",
+    "auc\000auc-Latn-EC",
+    "aud\000aud-Latn-SB",
+    "aug\000aug-Latn-BJ",
+    "auh\000auh-Latn-ZM",
+    "aui\000aui-Latn-PG",
+    "auj\000auj-Arab-LY",
+    "auk\000auk-Latn-PG",
+    "aul\000aul-Latn-VU",
+    "aum\000aum-Latn-NG",
+    "aun\000aun-Latn-PG",
+    "auo\000auo-Latn-NG",
+    "aup\000aup-Latn-PG",
+    "auq\000auq-Latn-ID",
+    "aur\000aur-Latn-PG",
+    "aut\000aut-Latn-PF",
+    "auu\000auu-Latn-ID",
+    "auw\000auw-Latn-ID",
+    "auy\000auy-Latn-PG",
+    "auz\000auz-Arab-UZ",
+    "av\000av-Cyrl-RU",
+    "avb\000avb-Latn-PG",
+    "avd\000avd-Arab-IR",
+    "avi\000avi-Latn-CI",
+    "avk\000avk-Latn-001",
+    "avl\000avl-Arab-EG",
+    "avm\000avm-Latn-AU",
+    "avn\000avn-Latn-GH",
+    "avo\000avo-Latn-BR",
+    "avs\000avs-Latn-PE",
+    "avt\000avt-Latn-PG",
+    "avu\000avu-Latn-SS",
+    "avv\000avv-Latn-BR",
+    "awa\000awa-Deva-IN",
+    "awb\000awb-Latn-PG",
+    "awc\000awc-Latn-NG",
+    "awe\000awe-Latn-BR",
+    "awg\000awg-Latn-AU",
+    "awh\000awh-Latn-ID",
+    "awi\000awi-Latn-PG",
+    "awk\000awk-Latn-AU",
+    "awm\000awm-Latn-PG",
+    "awn\000awn-Ethi-ET",
+    "awo\000awo-Latn-NG",
+    "awr\000awr-Latn-ID",
+    "aws\000aws-Latn-ID",
+    "awt\000awt-Latn-BR",
+    "awu\000awu-Latn-ID",
+    "awv\000awv-Latn-ID",
+    "aww\000aww-Latn-PG",
+    "awx\000awx-Latn-PG",
+    "awy\000awy-Latn-ID",
+    "axb\000axb-Latn-AR",
+    "axe\000axe-Latn-AU",
+    "axg\000axg-Latn-BR",
+    "axk\000axk-Latn-CF",
+    "axl\000axl-Latn-AU",
+    "axm\000axm-Armn-AM",
+    "axx\000axx-Latn-NC",
+    "ay\000ay-Latn-BO",
+    "aya\000aya-Latn-PG",
+    "ayb\000ayb-Latn-BJ",
+    "ayc\000ayc-Latn-PE",
+    "ayd\000ayd-Latn-AU",
+    "aye\000aye-Latn-NG",
+    "ayg\000ayg-Latn-TG",
+    "ayh\000ayh-Arab-YE",
+    "ayi\000ayi-Latn-NG",
+    "ayk\000ayk-Latn-NG",
+    "ayl\000ayl-Arab-LY",
+    "ayn\000ayn-Arab-YE",
+    "ayo\000ayo-Latn-PY",
+    "ayp\000ayp-Arab-IQ",
+    "ayq\000ayq-Latn-PG",
+    "ays\000ays-Latn-PH",
+    "ayt\000ayt-Latn-PH",
+    "ayu\000ayu-Latn-NG",
+    "ayz\000ayz-Latn-ID",
+    "az\000az-Latn-AZ",
+    "az-Arab\000az-Arab-IR",
+    "az-IQ\000az-Arab-IQ",
+    "az-IR\000az-Arab-IR",
+    "az-RU\000az-Cyrl-RU",
+    "azb\000azb-Arab-IR",
+    "azd\000azd-Latn-MX",
+    "azg\000azg-Latn-MX",
+    "azm\000azm-Latn-MX",
+    "azn\000azn-Latn-MX",
+    "azo\000azo-Latn-CM",
+    "azt\000azt-Latn-PH",
+    "azz\000azz-Latn-MX",
+    "ba\000ba-Cyrl-RU",
+    "baa\000baa-Latn-SB",
+    "bab\000bab-Latn-GW",
+    "bac\000bac-Latn-ID",
+    "bae\000bae-Latn-VE",
+    "baf\000baf-Latn-CM",
+    "bag\000bag-Latn-CM",
+    "bah\000bah-Latn-BS",
+    "baj\000baj-Latn-ID",
+    "bal\000bal-Arab-PK",
+    "ban\000ban-Latn-ID",
+    "bao\000bao-Latn-CO",
+    "bap\000bap-Deva-NP",
+    "bap-Krai\000bap-Krai-IN",
+    "bar\000bar-Latn-AT",
+    "bas\000bas-Latn-CM",
+    "bau\000bau-Latn-NG",
+    "bav\000bav-Latn-CM",
+    "baw\000baw-Latn-CM",
+    "bax\000bax-Bamu-CM",
+    "bay\000bay-Latn-ID",
+    "bba\000bba-Latn-BJ",
+    "bbb\000bbb-Latn-PG",
+    "bbc\000bbc-Latn-ID",
+    "bbd\000bbd-Latn-PG",
+    "bbe\000bbe-Latn-CD",
+    "bbf\000bbf-Latn-PG",
+    "bbg\000bbg-Latn-GA",
+    "bbi\000bbi-Latn-CM",
+    "bbj\000bbj-Latn-CM",
+    "bbk\000bbk-Latn-CM",
+    "bbl\000bbl-Geor-GE",
+    "bbm\000bbm-Latn-CD",
+    "bbn\000bbn-Latn-PG",
+    "bbo\000bbo-Latn-BF",
+    "bbp\000bbp-Latn-CF",
+    "bbq\000bbq-Latn-CM",
+    "bbr\000bbr-Latn-PG",
+    "bbs\000bbs-Latn-NG",
+    "bbt\000bbt-Latn-NG",
+    "bbu\000bbu-Latn-NG",
+    "bbv\000bbv-Latn-PG",
+    "bbw\000bbw-Latn-CM",
+    "bbx\000bbx-Latn-CM",
+    "bby\000bby-Latn-CM",
+    "bca\000bca-Latn-CN",
+    "bcb\000bcb-Latn-SN",
+    "bcd\000bcd-Latn-ID",
+    "bce\000bce-Latn-CM",
+    "bcf\000bcf-Latn-PG",
+    "bcg\000bcg-Latn-GN",
+    "bch\000bch-Latn-PG",
+    "bci\000bci-Latn-CI",
+    "bcj\000bcj-Latn-AU",
+    "bck\000bck-Latn-AU",
+    "bcm\000bcm-Latn-PG",
+    "bcn\000bcn-Latn-NG",
+    "bco\000bco-Latn-PG",
+    "bcp\000bcp-Latn-CD",
+    "bcq\000bcq-Ethi-ET",
+    "bcr\000bcr-Latn-CA",
+    "bcs\000bcs-Latn-NG",
+    "bct\000bct-Latn-CD",
+    "bcu\000bcu-Latn-PG",
+    "bcv\000bcv-Latn-NG",
+    "bcw\000bcw-Latn-CM",
+    "bcy\000bcy-Latn-NG",
+    "bcz\000bcz-Latn-SN",
+    "bda\000bda-Latn-SN",
+    "bdb\000bdb-Latn-ID",
+    "bdc\000bdc-Latn-CO",
+    "bdd\000bdd-Latn-PG",
+    "bde\000bde-Latn-NG",
+    "bdf\000bdf-Latn-PG",
+    "bdg\000bdg-Latn-MY",
+    "bdh\000bdh-Latn-SS",
+    "bdi\000bdi-Latn-SD",
+    "bdj\000bdj-Latn-SS",
+    "bdk\000bdk-Latn-AZ",
+    "bdl\000bdl-Latn-ID",
+    "bdm\000bdm-Latn-TD",
+    "bdn\000bdn-Latn-CM",
+    "bdo\000bdo-Latn-TD",
+    "bdp\000bdp-Latn-TZ",
+    "bdq\000bdq-Latn-VN",
+    "bdr\000bdr-Latn-MY",
+    "bds\000bds-Latn-TZ",
+    "bdt\000bdt-Latn-CF",
+    "bdu\000bdu-Latn-CM",
+    "bdv\000bdv-Orya-IN",
+    "bdw\000bdw-Latn-ID",
+    "bdx\000bdx-Latn-ID",
+    "bdy\000bdy-Latn-AU",
+    "bdz\000bdz-Arab-PK",
+    "be\000be-Cyrl-BY",
+    "bea\000bea-Latn-CA",
+    "beb\000beb-Latn-CM",
+    "bec\000bec-Latn-CM",
+    "bed\000bed-Latn-ID",
+    "bee\000bee-Deva-IN",
+    "bef\000bef-Latn-PG",
+    "beh\000beh-Latn-BJ",
+    "bei\000bei-Latn-ID",
+    "bej\000bej-Arab-SD",
+    "bek\000bek-Latn-PG",
+    "bem\000bem-Latn-ZM",
+    "beo\000beo-Latn-PG",
+    "bep\000bep-Latn-ID",
+    "beq\000beq-Latn-CG",
+    "bes\000bes-Latn-TD",
+    "bet\000bet-Latn-CI",
+    "beu\000beu-Latn-ID",
+    "bev\000bev-Latn-CI",
+    "bew\000bew-Latn-ID",
+    "bex\000bex-Latn-SS",
+    "bey\000bey-Latn-PG",
+    "bez\000bez-Latn-TZ",
+    "bfa\000bfa-Latn-SS",
+    "bfb\000bfb-Deva-IN",
+    "bfc\000bfc-Latn-CN",
+    "bfd\000bfd-Latn-CM",
+    "bfe\000bfe-Latn-ID",
+    "bff\000bff-Latn-CF",
+    "bfg\000bfg-Latn-ID",
+    "bfh\000bfh-Latn-PG",
+    "bfj\000bfj-Latn-CM",
+    "bfl\000bfl-Latn-CF",
+    "bfm\000bfm-Latn-CM",
+    "bfn\000bfn-Latn-TL",
+    "bfo\000bfo-Latn-BF",
+    "bfp\000bfp-Latn-CM",
+    "bfq\000bfq-Taml-IN",
+    "bfs\000bfs-Latn-CN",
+    "bft\000bft-Arab-PK",
+    "bfu\000bfu-Tibt-IN",
+    "bfw\000bfw-Orya-IN",
+    "bfx\000bfx-Latn-PH",
+    "bfy\000bfy-Deva-IN",
+    "bfz\000bfz-Deva-IN",
+    "bg\000bg-Cyrl-BG",
+    "bga\000bga-Latn-NG",
+    "bgb\000bgb-Latn-ID",
+    "bgc\000bgc-Deva-IN",
+    "bgd\000bgd-Deva-IN",
+    "bgf\000bgf-Latn-CM",
+    "bgg\000bgg-Latn-IN",
+    "bgi\000bgi-Latn-PH",
+    "bgj\000bgj-Latn-CM",
+    "bgn\000bgn-Arab-PK",
+    "bgo\000bgo-Latn-GN",
+    "bgp\000bgp-Arab-PK",
+    "bgq\000bgq-Deva-IN",
+    "bgr\000bgr-Latn-IN",
+    "bgs\000bgs-Latn-PH",
+    "bgt\000bgt-Latn-SB",
+    "bgu\000bgu-Latn-NG",
+    "bgv\000bgv-Latn-ID",
+    "bgw\000bgw-Deva-IN",
+    "bgx\000bgx-Grek-TR",
+    "bgy\000bgy-Latn-ID",
+    "bgz\000bgz-Latn-ID",
+    "bha\000bha-Deva-IN",
+    "bhb\000bhb-Deva-IN",
+    "bhc\000bhc-Latn-ID",
+    "bhd\000bhd-Deva-IN",
+    "bhe\000bhe-Arab-PK",
+    "bhf\000bhf-Latn-PG",
+    "bhg\000bhg-Latn-PG",
+    "bhh\000bhh-Cyrl-IL",
+    "bhi\000bhi-Deva-IN",
+    "bhj\000bhj-Deva-NP",
+    "bhl\000bhl-Latn-PG",
+    "bhm\000bhm-Arab-OM",
+    "bhn\000bhn-Syrc-GE",
+    "bho\000bho-Deva-IN",
+    "bhp\000bhp-Latn-ID",
+    "bhq\000bhq-Latn-ID",
+    "bhr\000bhr-Latn-MG",
+    "bhs\000bhs-Latn-CM",
+    "bht\000bht-Deva-IN",
+    "bhu\000bhu-Deva-IN",
+    "bhv\000bhv-Latn-ID",
+    "bhw\000bhw-Latn-ID",
+    "bhy\000bhy-Latn-CD",
+    "bhz\000bhz-Latn-ID",
+    "bi\000bi-Latn-VU",
+    "bia\000bia-Latn-AU",
+    "bib\000bib-Latn-BF",
+    "bid\000bid-Latn-TD",
+    "bie\000bie-Latn-PG",
+    "bif\000bif-Latn-GW",
+    "big\000big-Latn-PG",
+    "bik\000bik-Latn-PH",
+    "bil\000bil-Latn-NG",
+    "bim\000bim-Latn-GH",
+    "bin\000bin-Latn-NG",
+    "bio\000bio-Latn-PG",
+    "bip\000bip-Latn-CD",
+    "biq\000biq-Latn-PG",
+    "bir\000bir-Latn-PG",
+    "bit\000bit-Latn-PG",
+    "biu\000biu-Latn-IN",
+    "biv\000biv-Latn-GH",
+    "biw\000biw-Latn-CM",
+    "bix\000bix-Deva-IN",
+    "biy\000biy-Deva-IN",
+    "biz\000biz-Latn-CD",
+    "bja\000bja-Latn-CD",
+    "bjb\000bjb-Latn-AU",
+    "bjc\000bjc-Latn-PG",
+    "bjf\000bjf-Syrc-IL",
+    "bjg\000bjg-Latn-GW",
+    "bjh\000bjh-Latn-PG",
+    "bji\000bji-Latn-ET",
+    "bjj\000bjj-Deva-IN",
+    "bjk\000bjk-Latn-PG",
+    "bjl\000bjl-Latn-PG",
+    "bjm\000bjm-Arab-IQ",
+    "bjn\000bjn-Latn-ID",
+    "bjo\000bjo-Latn-CF",
+    "bjp\000bjp-Latn-PG",
+    "bjr\000bjr-Latn-PG",
+    "bjs\000bjs-Latn-BB",
+    "bjt\000bjt-Latn-SN",
+    "bju\000bju-Latn-CM",
+    "bjv\000bjv-Latn-TD",
+    "bjw\000bjw-Latn-CI",
+    "bjx\000bjx-Latn-PH",
+    "bjy\000bjy-Latn-AU",
+    "bjz\000bjz-Latn-PG",
+    "bka\000bka-Latn-NG",
+    "bkc\000bkc-Latn-CM",
+    "bkd\000bkd-Latn-PH",
+    "bkf\000bkf-Latn-CD",
+    "bkg\000bkg-Latn-CF",
+    "bkh\000bkh-Latn-CM",
+    "bki\000bki-Latn-VU",
+    "bkj\000bkj-Latn-CF",
+    "bkk\000bkk-Tibt-IN",
+    "bkl\000bkl-Latn-ID",
+    "bkm\000bkm-Latn-CM",
+    "bkn\000bkn-Latn-ID",
+    "bko\000bko-Latn-CM",
+    "bkp\000bkp-Latn-CD",
+    "bkq\000bkq-Latn-BR",
+    "bkr\000bkr-Latn-ID",
+    "bks\000bks-Latn-PH",
+    "bkt\000bkt-Latn-CD",
+    "bku\000bku-Latn-PH",
+    "bkv\000bkv-Latn-NG",
+    "bkw\000bkw-Latn-CG",
+    "bkx\000bkx-Latn-TL",
+    "bky\000bky-Latn-NG",
+    "bkz\000bkz-Latn-ID",
+    "bla\000bla-Latn-CA",
+    "blb\000blb-Latn-SB",
+    "blc\000blc-Latn-CA",
+    "bld\000bld-Latn-ID",
+    "ble\000ble-Latn-GW",
+    "blf\000blf-Latn-ID",
+    "blh\000blh-Latn-LR",
+    "bli\000bli-Latn-CD",
+    "blj\000blj-Latn-ID",
+    "blk\000blk-Mymr-MM",
+    "blm\000blm-Latn-SS",
+    "bln\000bln-Latn-PH",
+    "blo\000blo-Latn-BJ",
+    "blp\000blp-Latn-SB",
+    "blq\000blq-Latn-PG",
+    "blr\000blr-Latn-CN",
+    "bls\000bls-Latn-ID",
+    "blt\000blt-Tavt-VN",
+    "blv\000blv-Latn-AO",
+    "blw\000blw-Latn-PH",
+    "blx\000blx-Latn-PH",
+    "bly\000bly-Latn-BJ",
+    "blz\000blz-Latn-ID",
+    "bm\000bm-Latn-ML",
+    "bma\000bma-Latn-NG",
+    "bmb\000bmb-Latn-CD",
+    "bmc\000bmc-Latn-PG",
+    "bmd\000bmd-Latn-GN",
+    "bme\000bme-Latn-CF",
+    "bmf\000bmf-Latn-SL",
+    "bmg\000bmg-Latn-CD",
+    "bmh\000bmh-Latn-PG",
+    "bmi\000bmi-Latn-TD",
+    "bmj\000bmj-Deva-NP",
+    "bmk\000bmk-Latn-PG",
+    "bml\000bml-Latn-CD",
+    "bmm\000bmm-Latn-MG",
+    "bmn\000bmn-Latn-PG",
+    "bmo\000bmo-Latn-CM",
+    "bmp\000bmp-Latn-PG",
+    "bmq\000bmq-Latn-ML",
+    "bmr\000bmr-Latn-CO",
+    "bms\000bms-Latn-NE",
+    "bmu\000bmu-Latn-PG",
+    "bmv\000bmv-Latn-CM",
+    "bmw\000bmw-Latn-CG",
+    "bmx\000bmx-Latn-PG",
+    "bmz\000bmz-Latn-PG",
+    "bn\000bn-Beng-BD",
+    "bna\000bna-Latn-ID",
+    "bnb\000bnb-Latn-MY",
+    "bnc\000bnc-Latn-PH",
+    "bnd\000bnd-Latn-ID",
+    "bne\000bne-Latn-ID",
+    "bnf\000bnf-Latn-ID",
+    "bng\000bng-Latn-GQ",
+    "bni\000bni-Latn-CD",
+    "bnj\000bnj-Latn-PH",
+    "bnk\000bnk-Latn-VU",
+    "bnm\000bnm-Latn-GQ",
+    "bnn\000bnn-Latn-TW",
+    "bno\000bno-Latn-PH",
+    "bnp\000bnp-Latn-PG",
+    "bnq\000bnq-Latn-ID",
+    "bnr\000bnr-Latn-VU",
+    "bns\000bns-Deva-IN",
+    "bnu\000bnu-Latn-ID",
+    "bnv\000bnv-Latn-ID",
+    "bnw\000bnw-Latn-PG",
+    "bnx\000bnx-Latn-CD",
+    "bny\000bny-Latn-MY",
+    "bnz\000bnz-Latn-CM",
+    "bo\000bo-Tibt-CN",
+    "boa\000boa-Latn-PE",
+    "bob\000bob-Latn-KE",
+    "boe\000boe-Latn-CM",
+    "bof\000bof-Latn-BF",
+    "boh\000boh-Latn-CD",
+    "boj\000boj-Latn-PG",
+    "bok\000bok-Latn-CG",
+    "bol\000bol-Latn-NG",
+    "bom\000bom-Latn-NG",
+    "bon\000bon-Latn-PG",
+    "boo\000boo-Latn-ML",
+    "bop\000bop-Latn-PG",
+    "boq\000boq-Latn-PG",
+    "bor\000bor-Latn-BR",
+    "bot\000bot-Latn-SS",
+    "bou\000bou-Latn-TZ",
+    "bov\000bov-Latn-GH",
+    "bow\000bow-Latn-PG",
+    "box\000box-Latn-BF",
+    "boy\000boy-Latn-CF",
+    "boz\000boz-Latn-ML",
+    "bpa\000bpa-Latn-VU",
+    "bpc\000bpc-Latn-CM",
+    "bpd\000bpd-Latn-CF",
+    "bpe\000bpe-Latn-PG",
+    "bpg\000bpg-Latn-ID",
+    "bph\000bph-Cyrl-RU",
+    "bpi\000bpi-Latn-PG",
+    "bpj\000bpj-Latn-CD",
+    "bpk\000bpk-Latn-NC",
+    "bpl\000bpl-Latn-AU",
+    "bpm\000bpm-Latn-PG",
+    "bpo\000bpo-Latn-ID",
+    "bpp\000bpp-Latn-ID",
+    "bpq\000bpq-Latn-ID",
+    "bpr\000bpr-Latn-PH",
+    "bps\000bps-Latn-PH",
+    "bpt\000bpt-Latn-AU",
+    "bpu\000bpu-Latn-PG",
+    "bpv\000bpv-Latn-ID",
+    "bpw\000bpw-Latn-PG",
+    "bpx\000bpx-Deva-IN",
+    "bpy\000bpy-Beng-IN",
+    "bpz\000bpz-Latn-ID",
+    "bqa\000bqa-Latn-BJ",
+    "bqb\000bqb-Latn-ID",
+    "bqc\000bqc-Latn-BJ",
+    "bqd\000bqd-Latn-CM",
+    "bqf\000bqf-Latn-GN",
+    "bqg\000bqg-Latn-TG",
+    "bqi\000bqi-Arab-IR",
+    "bqj\000bqj-Latn-SN",
+    "bqk\000bqk-Latn-CF",
+    "bql\000bql-Latn-PG",
+    "bqm\000bqm-Latn-CM",
+    "bqo\000bqo-Latn-CM",
+    "bqp\000bqp-Latn-NG",
+    "bqq\000bqq-Latn-ID",
+    "bqr\000bqr-Latn-ID",
+    "bqs\000bqs-Latn-PG",
+    "bqt\000bqt-Latn-CM",
+    "bqu\000bqu-Latn-CD",
+    "bqv\000bqv-Latn-CI",
+    "bqw\000bqw-Latn-NG",
+    "bqx\000bqx-Latn-NG",
+    "bqz\000bqz-Latn-CM",
+    "br\000br-Latn-FR",
+    "bra\000bra-Deva-IN",
+    "brb\000brb-Khmr-KH",
+    "brc\000brc-Latn-GY",
+    "brd\000brd-Deva-NP",
+    "brf\000brf-Latn-CD",
+    "brg\000brg-Latn-BO",
+    "brh\000brh-Arab-PK",
+    "bri\000bri-Latn-CM",
+    "brj\000brj-Latn-VU",
+    "brk\000brk-Arab-SD",
+    "brl\000brl-Latn-BW",
+    "brm\000brm-Latn-CD",
+    "brn\000brn-Latn-CR",
+    "bro\000bro-Tibt-BT",
+    "brp\000brp-Latn-ID",
+    "brq\000brq-Latn-PG",
+    "brr\000brr-Latn-SB",
+    "brs\000brs-Latn-ID",
+    "brt\000brt-Latn-NG",
+    "bru\000bru-Latn-VN",
+    "brv\000brv-Laoo-LA",
+    "brw\000brw-Knda-IN",
+    "brx\000brx-Deva-IN",
+    "bry\000bry-Latn-PG",
+    "brz\000brz-Latn-PG",
+    "bs\000bs-Latn-BA",
+    "bsa\000bsa-Latn-ID",
+    "bsb\000bsb-Latn-BN",
+    "bsc\000bsc-Latn-SN",
+    "bse\000bse-Latn-CM",
+    "bsf\000bsf-Latn-NG",
+    "bsh\000bsh-Arab-AF",
+    "bsi\000bsi-Latn-CM",
+    "bsj\000bsj-Latn-NG",
+    "bsk\000bsk-Arab-PK",
+    "bsl\000bsl-Latn-NG",
+    "bsm\000bsm-Latn-ID",
+    "bsn\000bsn-Latn-CO",
+    "bso\000bso-Latn-TD",
+    "bsp\000bsp-Latn-GN",
+    "bsq\000bsq-Latn-LR",
+    "bsr\000bsr-Latn-NG",
+    "bss\000bss-Latn-CM",
+    "bst\000bst-Ethi-ET",
+    "bsu\000bsu-Latn-ID",
+    "bsv\000bsv-Latn-GN",
+    "bsw\000bsw-Latn-ET",
+    "bsx\000bsx-Latn-NG",
+    "bsy\000bsy-Latn-MY",
+    "bta\000bta-Latn-NG",
+    "btc\000btc-Latn-CM",
+    "btd\000btd-Batk-ID",
+    "bte\000bte-Latn-NG",
+    "btf\000btf-Latn-TD",
+    "btg\000btg-Latn-CI",
+    "bth\000bth-Latn-MY",
+    "bti\000bti-Latn-ID",
+    "btj\000btj-Latn-ID",
+    "btm\000btm-Batk-ID",
+    "btn\000btn-Latn-PH",
+    "bto\000bto-Latn-PH",
+    "btp\000btp-Latn-PG",
+    "btq\000btq-Latn-MY",
+    "btr\000btr-Latn-VU",
+    "bts\000bts-Latn-ID",
+    "btt\000btt-Latn-NG",
+    "btu\000btu-Latn-NG",
+    "btv\000btv-Deva-PK",
+    "btw\000btw-Latn-PH",
+    "btx\000btx-Latn-ID",
+    "bty\000bty-Latn-ID",
+    "btz\000btz-Latn-ID",
+    "bua\000bua-Cyrl-RU",
+    "bub\000bub-Latn-TD",
+    "buc\000buc-Latn-YT",
+    "bud\000bud-Latn-TG",
+    "bue\000bue-Latn-CA",
+    "buf\000buf-Latn-CD",
+    "bug\000bug-Latn-ID",
+    "buh\000buh-Latn-CN",
+    "bui\000bui-Latn-CG",
+    "buj\000buj-Latn-NG",
+    "buk\000buk-Latn-PG",
+    "bum\000bum-Latn-CM",
+    "bun\000bun-Latn-SL",
+    "buo\000buo-Latn-PG",
+    "bup\000bup-Latn-ID",
+    "buq\000buq-Latn-PG",
+    "bus\000bus-Latn-NG",
+    "but\000but-Latn-PG",
+    "buu\000buu-Latn-CD",
+    "buv\000buv-Latn-PG",
+    "buw\000buw-Latn-GA",
+    "bux\000bux-Latn-NG",
+    "buy\000buy-Latn-SL",
+    "buz\000buz-Latn-NG",
+    "bva\000bva-Latn-TD",
+    "bvb\000bvb-Latn-GQ",
+    "bvc\000bvc-Latn-SB",
+    "bvd\000bvd-Latn-SB",
+    "bve\000bve-Latn-ID",
+    "bvf\000bvf-Latn-TD",
+    "bvg\000bvg-Latn-CM",
+    "bvh\000bvh-Latn-NG",
+    "bvi\000bvi-Latn-SS",
+    "bvj\000bvj-Latn-NG",
+    "bvk\000bvk-Latn-ID",
+    "bvm\000bvm-Latn-CM",
+    "bvn\000bvn-Latn-PG",
+    "bvo\000bvo-Latn-TD",
+    "bvq\000bvq-Latn-CF",
+    "bvr\000bvr-Latn-AU",
+    "bvt\000bvt-Latn-ID",
+    "bvu\000bvu-Latn-ID",
+    "bvv\000bvv-Latn-VE",
+    "bvw\000bvw-Latn-NG",
+    "bvx\000bvx-Latn-CG",
+    "bvy\000bvy-Latn-PH",
+    "bvz\000bvz-Latn-ID",
+    "bwa\000bwa-Latn-NC",
+    "bwb\000bwb-Latn-FJ",
+    "bwc\000bwc-Latn-ZM",
+    "bwd\000bwd-Latn-PG",
+    "bwe\000bwe-Mymr-MM",
+    "bwf\000bwf-Latn-PG",
+    "bwg\000bwg-Latn-MZ",
+    "bwh\000bwh-Latn-CM",
+    "bwi\000bwi-Latn-VE",
+    "bwj\000bwj-Latn-BF",
+    "bwk\000bwk-Latn-PG",
+    "bwl\000bwl-Latn-CD",
+    "bwm\000bwm-Latn-PG",
+    "bwo\000bwo-Latn-ET",
+    "bwp\000bwp-Latn-ID",
+    "bwq\000bwq-Latn-BF",
+    "bwr\000bwr-Latn-NG",
+    "bws\000bws-Latn-CD",
+    "bwt\000bwt-Latn-CM",
+    "bwu\000bwu-Latn-GH",
+    "bww\000bww-Latn-CD",
+    "bwx\000bwx-Latn-CN",
+    "bwy\000bwy-Latn-BF",
+    "bwz\000bwz-Latn-CG",
+    "bxa\000bxa-Latn-SB",
+    "bxb\000bxb-Latn-SS",
+    "bxc\000bxc-Latn-GQ",
+    "bxf\000bxf-Latn-PG",
+    "bxg\000bxg-Latn-CD",
+    "bxh\000bxh-Latn-PG",
+    "bxi\000bxi-Latn-AU",
+    "bxj\000bxj-Latn-AU",
+    "bxl\000bxl-Latn-BF",
+    "bxm\000bxm-Cyrl-MN",
+    "bxn\000bxn-Latn-AU",
+    "bxo\000bxo-Latn-NG",
+    "bxp\000bxp-Latn-CM",
+    "bxq\000bxq-Latn-NG",
+    "bxs\000bxs-Latn-CM",
+    "bxu\000bxu-Mong-CN",
+    "bxv\000bxv-Latn-TD",
+    "bxw\000bxw-Latn-ML",
+    "bxz\000bxz-Latn-PG",
+    "bya\000bya-Latn-PH",
+    "byb\000byb-Latn-CM",
+    "byc\000byc-Latn-NG",
+    "byd\000byd-Latn-ID",
+    "bye\000bye-Latn-PG",
+    "byf\000byf-Latn-NG",
+    "byh\000byh-Deva-NP",
+    "byi\000byi-Latn-CD",
+    "byj\000byj-Latn-NG",
+    "byk\000byk-Latn-CN",
+    "byl\000byl-Latn-ID",
+    "bym\000bym-Latn-AU",
+    "byn\000byn-Ethi-ER",
+    "byp\000byp-Latn-NG",
+    "byr\000byr-Latn-PG",
+    "bys\000bys-Latn-NG",
+    "byv\000byv-Latn-CM",
+    "byw\000byw-Deva-NP",
+    "byx\000byx-Latn-PG",
+    "byz\000byz-Latn-PG",
+    "bza\000bza-Latn-LR",
+    "bzb\000bzb-Latn-ID",
+    "bzc\000bzc-Latn-MG",
+    "bzd\000bzd-Latn-CR",
+    "bze\000bze-Latn-ML",
+    "bzf\000bzf-Latn-PG",
+    "bzh\000bzh-Latn-PG",
+    "bzi\000bzi-Thai-TH",
+    "bzj\000bzj-Latn-BZ",
+    "bzk\000bzk-Latn-NI",
+    "bzl\000bzl-Latn-ID",
+    "bzm\000bzm-Latn-CD",
+    "bzn\000bzn-Latn-ID",
+    "bzo\000bzo-Latn-CD",
+    "bzp\000bzp-Latn-ID",
+    "bzq\000bzq-Latn-ID",
+    "bzr\000bzr-Latn-AU",
+    "bzt\000bzt-Latn-001",
+    "bzu\000bzu-Latn-ID",
+    "bzv\000bzv-Latn-CM",
+    "bzw\000bzw-Latn-NG",
+    "bzx\000bzx-Latn-ML",
+    "bzy\000bzy-Latn-NG",
+    "bzz\000bzz-Latn-NG",
+    "ca\000ca-Latn-ES",
+    "caa\000caa-Latn-GT",
+    "cab\000cab-Latn-HN",
+    "cac\000cac-Latn-GT",
+    "cad\000cad-Latn-US",
+    "cae\000cae-Latn-SN",
+    "caf\000caf-Latn-CA",
+    "cag\000cag-Latn-PY",
+    "cah\000cah-Latn-PE",
+    "caj\000caj-Latn-BO",
+    "cak\000cak-Latn-GT",
+    "cal\000cal-Latn-MP",
+    "cam\000cam-Latn-NC",
+    "can\000can-Latn-PG",
+    "cao\000cao-Latn-BO",
+    "cap\000cap-Latn-BO",
+    "caq\000caq-Latn-IN",
+    "car\000car-Latn-VE",
+    "cas\000cas-Latn-BO",
+    "cav\000cav-Latn-BO",
+    "caw\000caw-Latn-BO",
+    "cax\000cax-Latn-BO",
+    "cay\000cay-Latn-CA",
+    "caz\000caz-Latn-BO",
+    "cbb\000cbb-Latn-CO",
+    "cbc\000cbc-Latn-CO",
+    "cbd\000cbd-Latn-CO",
+    "cbg\000cbg-Latn-CO",
+    "cbi\000cbi-Latn-EC",
+    "cbj\000cbj-Latn-BJ",
+    "cbk\000cbk-Latn-PH",
+    "cbl\000cbl-Latn-MM",
+    "cbn\000cbn-Thai-TH",
+    "cbo\000cbo-Latn-NG",
+    "cbq\000cbq-Latn-NG",
+    "cbr\000cbr-Latn-PE",
+    "cbs\000cbs-Latn-PE",
+    "cbt\000cbt-Latn-PE",
+    "cbu\000cbu-Latn-PE",
+    "cbv\000cbv-Latn-CO",
+    "cbw\000cbw-Latn-PH",
+    "cby\000cby-Latn-CO",
+    "ccc\000ccc-Latn-PE",
+    "ccd\000ccd-Latn-BR",
+    "cce\000cce-Latn-MZ",
+    "ccg\000ccg-Latn-NG",
+    "cch\000cch-Latn-NG",
+    "ccj\000ccj-Latn-GW",
+    "ccl\000ccl-Latn-TZ",
+    "ccm\000ccm-Latn-MY",
+    "cco\000cco-Latn-MX",
+    "ccp\000ccp-Cakm-BD",
+    "ccr\000ccr-Latn-SV",
+    "cde\000cde-Telu-IN",
+    "cdf\000cdf-Latn-IN",
+    "cdh\000cdh-Deva-IN",
+    "cdi\000cdi-Gujr-IN",
+    "cdj\000cdj-Deva-IN",
+    "cdm\000cdm-Deva-NP",
+    "cdn\000cdn-Deva-IN",
+    "cdo\000cdo-Hans-CN",
+    "cdr\000cdr-Latn-NG",
+    "cdz\000cdz-Beng-IN",
+    "ce\000ce-Cyrl-RU",
+    "cea\000cea-Latn-US",
+    "ceb\000ceb-Latn-PH",
+    "ceg\000ceg-Latn-PY",
+    "cek\000cek-Latn-MM",
+    "cen\000cen-Latn-NG",
+    "cet\000cet-Latn-NG",
+    "cey\000cey-Latn-MM",
+    "cfa\000cfa-Latn-NG",
+    "cfd\000cfd-Latn-NG",
+    "cfg\000cfg-Latn-NG",
+    "cfm\000cfm-Latn-MM",
+    "cga\000cga-Latn-PG",
+    "cgc\000cgc-Latn-PH",
+    "cgg\000cgg-Latn-UG",
+    "cgk\000cgk-Tibt-BT",
+    "ch\000ch-Latn-GU",
+    "chb\000chb-Latn-CO",
+    "chd\000chd-Latn-MX",
+    "chf\000chf-Latn-MX",
+    "chg\000chg-Arab-TM",
+    "chh\000chh-Latn-US",
+    "chj\000chj-Latn-MX",
+    "chk\000chk-Latn-FM",
+    "chl\000chl-Latn-US",
+    "chm\000chm-Cyrl-RU",
+    "chn\000chn-Latn-US",
+    "cho\000cho-Latn-US",
+    "chp\000chp-Latn-CA",
+    "chq\000chq-Latn-MX",
+    "chr\000chr-Cher-US",
+    "cht\000cht-Latn-PE",
+    "chw\000chw-Latn-MZ",
+    "chx\000chx-Deva-NP",
+    "chy\000chy-Latn-US",
+    "chz\000chz-Latn-MX",
+    "cia\000cia-Latn-ID",
+    "cib\000cib-Latn-BJ",
+    "cic\000cic-Latn-US",
+    "cie\000cie-Latn-NG",
+    "cih\000cih-Deva-IN",
+    "cim\000cim-Latn-IT",
+    "cin\000cin-Latn-BR",
+    "cip\000cip-Latn-MX",
+    "cir\000cir-Latn-NC",
+    "ciw\000ciw-Latn-US",
+    "ciy\000ciy-Latn-VE",
+    "cja\000cja-Arab-KH",
+    "cje\000cje-Latn-VN",
+    "cjh\000cjh-Latn-US",
+    "cji\000cji-Cyrl-RU",
+    "cjk\000cjk-Latn-AO",
+    "cjm\000cjm-Cham-VN",
+    "cjn\000cjn-Latn-PG",
+    "cjo\000cjo-Latn-PE",
+    "cjp\000cjp-Latn-CR",
+    "cjs\000cjs-Latn-RU",
+    "cjv\000cjv-Latn-PG",
+    "cjy\000cjy-Hans-CN",
+    "ckb\000ckb-Arab-IQ",
+    "ckl\000ckl-Latn-NG",
+    "ckm\000ckm-Latn-HR",
+    "ckn\000ckn-Latn-MM",
+    "cko\000cko-Latn-GH",
+    "ckq\000ckq-Latn-TD",
+    "ckr\000ckr-Latn-PG",
+    "cks\000cks-Latn-NC",
+    "ckt\000ckt-Cyrl-RU",
+    "cku\000cku-Latn-US",
+    "ckv\000ckv-Latn-TW",
+    "ckx\000ckx-Latn-CM",
+    "cky\000cky-Latn-NG",
+    "ckz\000ckz-Latn-GT",
+    "cla\000cla-Latn-NG",
+    "clc\000clc-Latn-CA",
+    "cle\000cle-Latn-MX",
+    "clh\000clh-Arab-PK",
+    "cli\000cli-Latn-GH",
+    "clj\000clj-Latn-MM",
+    "clk\000clk-Latn-IN",
+    "cll\000cll-Latn-GH",
+    "clm\000clm-Latn-US",
+    "clo\000clo-Latn-MX",
+    "clt\000clt-Latn-MM",
+    "clu\000clu-Latn-PH",
+    "clw\000clw-Cyrl-RU",
+    "cly\000cly-Latn-MX",
+    "cma\000cma-Latn-VN",
+    "cme\000cme-Latn-BF",
+    "cmg\000cmg-Soyo-MN",
+    "cmi\000cmi-Latn-CO",
+    "cml\000cml-Latn-ID",
+    "cmo\000cmo-Latn-VN",
+    "cmr\000cmr-Latn-MM",
+    "cms\000cms-Latn-IT",
+    "cmt\000cmt-Latn-ZA",
+    "cna\000cna-Tibt-IN",
+    "cnb\000cnb-Latn-MM",
+    "cnc\000cnc-Latn-VN",
+    "cng\000cng-Latn-CN",
+    "cnh\000cnh-Latn-MM",
+    "cni\000cni-Latn-PE",
+    "cnk\000cnk-Latn-MM",
+    "cnl\000cnl-Latn-MX",
+    "cnp\000cnp-Hans-CN",
+    "cnq\000cnq-Latn-CM",
+    "cns\000cns-Latn-ID",
+    "cnt\000cnt-Latn-MX",
+    "cnw\000cnw-Latn-MM",
+    "cnx\000cnx-Latn-GB",
+    "co\000co-Latn-FR",
+    "coa\000coa-Latn-AU",
+    "cob\000cob-Latn-MX",
+    "coc\000coc-Latn-MX",
+    "cod\000cod-Latn-PE",
+    "coe\000coe-Latn-CO",
+    "cof\000cof-Latn-EC",
+    "cog\000cog-Thai-TH",
+    "coh\000coh-Latn-KE",
+    "coj\000coj-Latn-MX",
+    "cok\000cok-Latn-MX",
+    "col\000col-Latn-US",
+    "com\000com-Latn-US",
+    "coo\000coo-Latn-CA",
+    "cop\000cop-Copt-EG",
+    "coq\000coq-Latn-US",
+    "cot\000cot-Latn-PE",
+    "cou\000cou-Latn-SN",
+    "cox\000cox-Latn-PE",
+    "coz\000coz-Latn-MX",
+    "cpa\000cpa-Latn-MX",
+    "cpb\000cpb-Latn-PE",
+    "cpc\000cpc-Latn-PE",
+    "cpg\000cpg-Grek-GR",
+    "cpi\000cpi-Latn-NR",
+    "cpn\000cpn-Latn-GH",
+    "cpo\000cpo-Latn-BF",
+    "cps\000cps-Latn-PH",
+    "cpu\000cpu-Latn-PE",
+    "cpx\000cpx-Latn-CN",
+    "cpy\000cpy-Latn-PE",
+    "cqd\000cqd-Latn-CN",
+    "cr\000cr-Cans-CA",
+    "cra\000cra-Latn-ET",
+    "crb\000crb-Latn-VC",
+    "crc\000crc-Latn-VU",
+    "crd\000crd-Latn-US",
+    "crf\000crf-Latn-CO",
+    "crg\000crg-Latn-CA",
+    "crh\000crh-Cyrl-UA",
+    "cri\000cri-Latn-ST",
+    "crj\000crj-Cans-CA",
+    "crk\000crk-Cans-CA",
+    "crl\000crl-Cans-CA",
+    "crm\000crm-Cans-CA",
+    "crn\000crn-Latn-MX",
+    "cro\000cro-Latn-US",
+    "crq\000crq-Latn-AR",
+    "crs\000crs-Latn-SC",
+    "crt\000crt-Latn-AR",
+    "crv\000crv-Latn-IN",
+    "crw\000crw-Latn-VN",
+    "crx\000crx-Latn-CA",
+    "cry\000cry-Latn-NG",
+    "crz\000crz-Latn-US",
+    "cs\000cs-Latn-CZ",
+    "csa\000csa-Latn-MX",
+    "csb\000csb-Latn-PL",
+    "csh\000csh-Mymr-MM",
+    "csj\000csj-Latn-MM",
+    "csk\000csk-Latn-SN",
+    "csm\000csm-Latn-US",
+    "cso\000cso-Latn-MX",
+    "csp\000csp-Hans-CN",
+    "css\000css-Latn-US",
+    "cst\000cst-Latn-US",
+    "csv\000csv-Latn-MM",
+    "csw\000csw-Cans-CA",
+    "csy\000csy-Latn-MM",
+    "csz\000csz-Latn-US",
+    "cta\000cta-Latn-MX",
+    "ctc\000ctc-Latn-US",
+    "ctd\000ctd-Pauc-MM",
+    "cte\000cte-Latn-MX",
+    "ctg\000ctg-Beng-BD",
+    "cth\000cth-Latn-MM",
+    "ctl\000ctl-Latn-MX",
+    "ctm\000ctm-Latn-US",
+    "ctn\000ctn-Deva-NP",
+    "cto\000cto-Latn-CO",
+    "ctp\000ctp-Latn-MX",
+    "cts\000cts-Latn-PH",
+    "ctt\000ctt-Taml-IN",
+    "ctu\000ctu-Latn-MX",
+    "cty\000cty-Taml-IN",
+    "ctz\000ctz-Latn-MX",
+    "cu\000cu-Cyrl-RU",
+    "cu-Glag\000cu-Glag-BG",
+    "cua\000cua-Latn-VN",
+    "cub\000cub-Latn-CO",
+    "cuc\000cuc-Latn-MX",
+    "cuh\000cuh-Latn-KE",
+    "cui\000cui-Latn-CO",
+    "cuj\000cuj-Latn-PE",
+    "cuk\000cuk-Latn-PA",
+    "cul\000cul-Latn-BR",
+    "cuo\000cuo-Latn-VE",
+    "cup\000cup-Latn-US",
+    "cut\000cut-Latn-MX",
+    "cuu\000cuu-Lana-CN",
+    "cuv\000cuv-Latn-CM",
+    "cux\000cux-Latn-MX",
+    "cuy\000cuy-Latn-MX",
+    "cv\000cv-Cyrl-RU",
+    "cvg\000cvg-Latn-IN",
+    "cvn\000cvn-Latn-MX",
+    "cwa\000cwa-Latn-TZ",
+    "cwb\000cwb-Latn-MZ",
+    "cwe\000cwe-Latn-TZ",
+    "cwg\000cwg-Latn-MY",
+    "cwt\000cwt-Latn-SN",
+    "cxh\000cxh-Latn-NG",
+    "cy\000cy-Latn-GB",
+    "cya\000cya-Latn-MX",
+    "cyb\000cyb-Latn-BO",
+    "cyo\000cyo-Latn-PH",
+    "czh\000czh-Hans-CN",
+    "czk\000czk-Hebr-CZ",
+    "czn\000czn-Latn-MX",
+    "czt\000czt-Latn-MM",
+    "da\000da-Latn-DK",
+    "daa\000daa-Latn-TD",
+    "dac\000dac-Latn-PG",
+    "dad\000dad-Latn-PG",
+    "dae\000dae-Latn-CM",
+    "dag\000dag-Latn-GH",
+    "dah\000dah-Latn-PG",
+    "dai\000dai-Latn-TD",
+    "daj\000daj-Latn-SD",
+    "dak\000dak-Latn-US",
+    "dal\000dal-Latn-KE",
+    "dam\000dam-Latn-NG",
+    "dao\000dao-Latn-MM",
+    "daq\000daq-Deva-IN",
+    "dar\000dar-Cyrl-RU",
+    "das\000das-Latn-CI",
+    "dau\000dau-Latn-TD",
+    "dav\000dav-Latn-KE",
+    "daw\000daw-Latn-PH",
+    "dax\000dax-Latn-AU",
+    "daz\000daz-Latn-ID",
+    "dba\000dba-Latn-ML",
+    "dbb\000dbb-Latn-NG",
+    "dbd\000dbd-Latn-NG",
+    "dbe\000dbe-Latn-ID",
+    "dbf\000dbf-Latn-ID",
+    "dbg\000dbg-Latn-ML",
+    "dbi\000dbi-Latn-NG",
+    "dbj\000dbj-Latn-MY",
+    "dbl\000dbl-Latn-AU",
+    "dbm\000dbm-Latn-NG",
+    "dbn\000dbn-Latn-ID",
+    "dbo\000dbo-Latn-NG",
+    "dbp\000dbp-Latn-NG",
+    "dbq\000dbq-Latn-CM",
+    "dbt\000dbt-Latn-ML",
+    "dbu\000dbu-Latn-ML",
+    "dbv\000dbv-Latn-NG",
+    "dbw\000dbw-Latn-ML",
+    "dby\000dby-Latn-PG",
+    "dcc\000dcc-Arab-IN",
+    "dcr\000dcr-Latn-VI",
+    "dda\000dda-Latn-AU",
+    "ddd\000ddd-Latn-SS",
+    "dde\000dde-Latn-CG",
+    "ddg\000ddg-Latn-TL",
+    "ddi\000ddi-Latn-PG",
+    "ddj\000ddj-Latn-AU",
+    "ddn\000ddn-Latn-BJ",
+    "ddo\000ddo-Cyrl-RU",
+    "ddr\000ddr-Latn-AU",
+    "dds\000dds-Latn-ML",
+    "ddw\000ddw-Latn-ID",
+    "de\000de-Latn-DE",
+    "dec\000dec-Latn-SD",
+    "ded\000ded-Latn-PG",
+    "dee\000dee-Latn-LR",
+    "def\000def-Arab-IR",
+    "deg\000deg-Latn-NG",
+    "deh\000deh-Arab-PK",
+    "dei\000dei-Latn-ID",
+    "del\000del-Latn-US",
+    "dem\000dem-Latn-ID",
+    "den\000den-Latn-CA",
+    "deq\000deq-Latn-CF",
+    "der\000der-Beng-IN",
+    "des\000des-Latn-BR",
+    "dev\000dev-Latn-PG",
+    "dez\000dez-Latn-CD",
+    "dga\000dga-Latn-GH",
+    "dgb\000dgb-Latn-ML",
+    "dgc\000dgc-Latn-PH",
+    "dgd\000dgd-Latn-BF",
+    "dge\000dge-Latn-PG",
+    "dgg\000dgg-Latn-PG",
+    "dgh\000dgh-Latn-NG",
+    "dgi\000dgi-Latn-BF",
+    "dgk\000dgk-Latn-CF",
+    "dgl\000dgl-Arab-SD",
+    "dgn\000dgn-Latn-AU",
+    "dgr\000dgr-Latn-CA",
+    "dgs\000dgs-Latn-BF",
+    "dgt\000dgt-Latn-AU",
+    "dgw\000dgw-Latn-AU",
+    "dgx\000dgx-Latn-PG",
+    "dgz\000dgz-Latn-PG",
+    "dhg\000dhg-Latn-AU",
+    "dhi\000dhi-Deva-NP",
+    "dhl\000dhl-Latn-AU",
+    "dhm\000dhm-Latn-AO",
+    "dhn\000dhn-Gujr-IN",
+    "dho\000dho-Gujr-IN",
+    "dhr\000dhr-Latn-AU",
+    "dhs\000dhs-Latn-TZ",
+    "dhu\000dhu-Latn-AU",
+    "dhv\000dhv-Latn-NC",
+    "dhw\000dhw-Deva-NP",
+    "dhx\000dhx-Latn-AU",
+    "dia\000dia-Latn-PG",
+    "dib\000dib-Latn-SS",
+    "dic\000dic-Latn-CI",
+    "did\000did-Latn-SS",
+    "dif\000dif-Latn-AU",
+    "dig\000dig-Latn-KE",
+    "dih\000dih-Latn-MX",
+    "dii\000dii-Latn-CM",
+    "dij\000dij-Latn-ID",
+    "dil\000dil-Latn-SD",
+    "din\000din-Latn-SS",
+    "dio\000dio-Latn-NG",
+    "dip\000dip-Latn-SS",
+    "dir\000dir-Latn-NG",
+    "dis\000dis-Latn-IN",
+    "diu\000diu-Latn-NA",
+    "diw\000diw-Latn-SS",
+    "dix\000dix-Latn-VU",
+    "diy\000diy-Latn-ID",
+    "diz\000diz-Latn-CD",
+    "dja\000dja-Latn-AU",
+    "djb\000djb-Latn-AU",
+    "djc\000djc-Latn-TD",
+    "djd\000djd-Latn-AU",
+    "dje\000dje-Latn-NE",
+    "djf\000djf-Latn-AU",
+    "dji\000dji-Latn-AU",
+    "djj\000djj-Latn-AU",
+    "djk\000djk-Latn-SR",
+    "djm\000djm-Latn-ML",
+    "djn\000djn-Latn-AU",
+    "djo\000djo-Latn-ID",
+    "djr\000djr-Latn-AU",
+    "dju\000dju-Latn-PG",
+    "djw\000djw-Latn-AU",
+    "dka\000dka-Tibt-BT",
+    "dkg\000dkg-Latn-NG",
+    "dkk\000dkk-Latn-ID",
+    "dkr\000dkr-Latn-MY",
+    "dks\000dks-Latn-SS",
+    "dkx\000dkx-Latn-CM",
+    "dlg\000dlg-Cyrl-RU",
+    "dlm\000dlm-Latn-HR",
+    "dln\000dln-Latn-IN",
+    "dma\000dma-Latn-GA",
+    "dmb\000dmb-Latn-ML",
+    "dmc\000dmc-Latn-PG",
+    "dmd\000dmd-Latn-AU",
+    "dme\000dme-Latn-CM",
+    "dmf\000dmf-Medf-NG",
+    "dmg\000dmg-Latn-MY",
+    "dmk\000dmk-Arab-PK",
+    "dml\000dml-Arab-PK",
+    "dmm\000dmm-Latn-CM",
+    "dmo\000dmo-Latn-CM",
+    "dmr\000dmr-Latn-ID",
+    "dms\000dms-Latn-ID",
+    "dmu\000dmu-Latn-ID",
+    "dmv\000dmv-Latn-MY",
+    "dmw\000dmw-Latn-AU",
+    "dmx\000dmx-Latn-MZ",
+    "dmy\000dmy-Latn-ID",
+    "dna\000dna-Latn-ID",
+    "dnd\000dnd-Latn-PG",
+    "dne\000dne-Latn-TZ",
+    "dng\000dng-Cyrl-KG",
+    "dni\000dni-Latn-ID",
+    "dnj\000dnj-Latn-CI",
+    "dnk\000dnk-Latn-ID",
+    "dnn\000dnn-Latn-BF",
+    "dno\000dno-Latn-CD",
+    "dnr\000dnr-Latn-PG",
+    "dnt\000dnt-Latn-ID",
+    "dnu\000dnu-Mymr-MM",
+    "dnv\000dnv-Mymr-MM",
+    "dnw\000dnw-Latn-ID",
+    "dny\000dny-Latn-BR",
+    "doa\000doa-Latn-PG",
+    "dob\000dob-Latn-PG",
+    "doc\000doc-Latn-CN",
+    "doe\000doe-Latn-TZ",
+    "dof\000dof-Latn-PG",
+    "doh\000doh-Latn-NG",
+    "doi\000doi-Deva-IN",
+    "dok\000dok-Latn-ID",
+    "dol\000dol-Latn-PG",
+    "don\000don-Latn-PG",
+    "doo\000doo-Latn-CD",
+    "dop\000dop-Latn-BJ",
+    "dor\000dor-Latn-SB",
+    "dos\000dos-Latn-BF",
+    "dot\000dot-Latn-NG",
+    "dov\000dov-Latn-ZW",
+    "dow\000dow-Latn-CM",
+    "dox\000dox-Ethi-ET",
+    "doy\000doy-Latn-GH",
+    "dpp\000dpp-Latn-MY",
+    "drc\000drc-Latn-PT",
+    "dre\000dre-Tibt-NP",
+    "drg\000drg-Latn-MY",
+    "dri\000dri-Latn-NG",
+    "drl\000drl-Latn-AU",
+    "drn\000drn-Latn-ID",
+    "dro\000dro-Latn-MY",
+    "drq\000drq-Deva-NP",
+    "drs\000drs-Ethi-ET",
+    "drt\000drt-Latn-NL",
+    "dru\000dru-Latn-TW",
+    "dry\000dry-Deva-NP",
+    "dsb\000dsb-Latn-DE",
+    "dsh\000dsh-Latn-KE",
+    "dsi\000dsi-Latn-TD",
+    "dsk\000dsk-Latn-NG",
+    "dsn\000dsn-Latn-ID",
+    "dso\000dso-Orya-IN",
+    "dsq\000dsq-Latn-ML",
+    "dta\000dta-Latn-CN",
+    "dtb\000dtb-Latn-MY",
+    "dtd\000dtd-Latn-CA",
+    "dth\000dth-Latn-AU",
+    "dti\000dti-Latn-ML",
+    "dtk\000dtk-Latn-ML",
+    "dtm\000dtm-Latn-ML",
+    "dto\000dto-Latn-ML",
+    "dtp\000dtp-Latn-MY",
+    "dtr\000dtr-Latn-MY",
+    "dts\000dts-Latn-ML",
+    "dtt\000dtt-Latn-ML",
+    "dtu\000dtu-Latn-ML",
+    "dty\000dty-Deva-NP",
+    "dua\000dua-Latn-CM",
+    "dub\000dub-Gujr-IN",
+    "duc\000duc-Latn-PG",
+    "due\000due-Latn-PH",
+    "duf\000duf-Latn-NC",
+    "dug\000dug-Latn-KE",
+    "duh\000duh-Deva-IN",
+    "dui\000dui-Latn-PG",
+    "duk\000duk-Latn-PG",
+    "dul\000dul-Latn-PH",
+    "dum\000dum-Latn-NL",
+    "dun\000dun-Latn-ID",
+    "duo\000duo-Latn-PH",
+    "dup\000dup-Latn-ID",
+    "duq\000duq-Latn-ID",
+    "dur\000dur-Latn-CM",
+    "dus\000dus-Deva-NP",
+    "duu\000duu-Latn-CN",
+    "duv\000duv-Latn-ID",
+    "duw\000duw-Latn-ID",
+    "dux\000dux-Latn-ML",
+    "duy\000duy-Latn-PH",
+    "duz\000duz-Latn-CM",
+    "dv\000dv-Thaa-MV",
+    "dva\000dva-Latn-PG",
+    "dwa\000dwa-Latn-NG",
+    "dwk\000dwk-Orya-IN",
+    "dwr\000dwr-Latn-ET",
+    "dws\000dws-Latn-001",
+    "dwu\000dwu-Latn-AU",
+    "dww\000dww-Latn-PG",
+    "dwy\000dwy-Latn-AU",
+    "dwz\000dwz-Deva-NP",
+    "dya\000dya-Latn-BF",
+    "dyb\000dyb-Latn-AU",
+    "dyd\000dyd-Latn-AU",
+    "dyg\000dyg-Latn-PH",
+    "dyi\000dyi-Latn-CI",
+    "dym\000dym-Latn-ML",
+    "dyn\000dyn-Latn-AU",
+    "dyo\000dyo-Latn-SN",
+    "dyr\000dyr-Latn-NG",
+    "dyu\000dyu-Latn-BF",
+    "dyy\000dyy-Latn-AU",
+    "dz\000dz-Tibt-BT",
+    "dza\000dza-Latn-NG",
+    "dzd\000dzd-Latn-NG",
+    "dze\000dze-Latn-AU",
+    "dzg\000dzg-Latn-TD",
+    "dzl\000dzl-Tibt-BT",
+    "dzn\000dzn-Latn-CD",
+    "eaa\000eaa-Latn-AU",
+    "ebc\000ebc-Latn-ID",
+    "ebg\000ebg-Latn-NG",
+    "ebk\000ebk-Latn-PH",
+    "ebo\000ebo-Latn-CG",
+    "ebr\000ebr-Latn-CI",
+    "ebu\000ebu-Latn-KE",
+    "ecr\000ecr-Grek-GR",
+    "ecy\000ecy-Cprt-CY",
+    "ee\000ee-Latn-GH",
+    "efa\000efa-Latn-NG",
+    "efe\000efe-Latn-CD",
+    "efi\000efi-Latn-NG",
+    "ega\000ega-Latn-CI",
+    "egl\000egl-Latn-IT",
+    "egm\000egm-Latn-TZ",
+    "ego\000ego-Latn-NG",
+    "egy\000egy-Egyp-EG",
+    "ehu\000ehu-Latn-NG",
+    "eip\000eip-Latn-ID",
+    "eit\000eit-Latn-PG",
+    "eiv\000eiv-Latn-PG",
+    "eja\000eja-Latn-GW",
+    "eka\000eka-Latn-NG",
+    "eke\000eke-Latn-NG",
+    "ekg\000ekg-Latn-ID",
+    "eki\000eki-Latn-NG",
+    "ekl\000ekl-Latn-BD",
+    "ekm\000ekm-Latn-CM",
+    "eko\000eko-Latn-MZ",
+    "ekp\000ekp-Latn-NG",
+    "ekr\000ekr-Latn-NG",
+    "eky\000eky-Kali-MM",
+    "el\000el-Grek-GR",
+    "ele\000ele-Latn-PG",
+    "elk\000elk-Latn-PG",
+    "elm\000elm-Latn-NG",
+    "elo\000elo-Latn-KE",
+    "elu\000elu-Latn-PG",
+    "ema\000ema-Latn-NG",
+    "emb\000emb-Latn-ID",
+    "eme\000eme-Latn-GF",
+    "emg\000emg-Deva-NP",
+    "emi\000emi-Latn-PG",
+    "emm\000emm-Latn-MX",
+    "emn\000emn-Latn-CM",
+    "emp\000emp-Latn-PA",
+    "ems\000ems-Latn-US",
+    "emu\000emu-Deva-IN",
+    "emw\000emw-Latn-ID",
+    "emx\000emx-Latn-FR",
+    "emz\000emz-Latn-CM",
+    "en\000en-Latn-US",
+    "en-Shaw\000en-Shaw-GB",
+    "ena\000ena-Latn-PG",
+    "enb\000enb-Latn-KE",
+    "enc\000enc-Latn-VN",
+    "end\000end-Latn-ID",
+    "enf\000enf-Cyrl-RU",
+    "enh\000enh-Cyrl-RU",
+    "enl\000enl-Latn-PY",
+    "enm\000enm-Latn-GB",
+    "enn\000enn-Latn-NG",
+    "eno\000eno-Latn-ID",
+    "enq\000enq-Latn-PG",
+    "enr\000enr-Latn-ID",
+    "env\000env-Latn-NG",
+    "enw\000enw-Latn-NG",
+    "enx\000enx-Latn-PY",
+    "eo\000eo-Latn-001",
+    "eot\000eot-Latn-CI",
+    "epi\000epi-Latn-NG",
+    "era\000era-Taml-IN",
+    "erg\000erg-Latn-VU",
+    "erh\000erh-Latn-NG",
+    "eri\000eri-Latn-PG",
+    "erk\000erk-Latn-VU",
+    "err\000err-Latn-AU",
+    "ers\000ers-Latn-CN",
+    "ert\000ert-Latn-ID",
+    "erw\000erw-Latn-ID",
+    "es\000es-Latn-ES",
+    "ese\000ese-Latn-BO",
+    "esg\000esg-Gonm-IN",
+    "esh\000esh-Arab-IR",
+    "esi\000esi-Latn-US",
+    "esm\000esm-Latn-CI",
+    "ess\000ess-Latn-US",
+    "esu\000esu-Latn-US",
+    "esy\000esy-Latn-PH",
+    "et\000et-Latn-EE",
+    "etb\000etb-Latn-NG",
+    "etn\000etn-Latn-VU",
+    "eto\000eto-Latn-CM",
+    "etr\000etr-Latn-PG",
+    "ets\000ets-Latn-NG",
+    "ett\000ett-Ital-IT",
+    "etu\000etu-Latn-NG",
+    "etx\000etx-Latn-NG",
+    "etz\000etz-Latn-ID",
+    "eu\000eu-Latn-ES",
+    "eud\000eud-Latn-MX",
+    "eve\000eve-Cyrl-RU",
+    "evh\000evh-Latn-NG",
+    "evn\000evn-Cyrl-RU",
+    "ewo\000ewo-Latn-CM",
+    "ext\000ext-Latn-ES",
+    "eya\000eya-Latn-US",
+    "eyo\000eyo-Latn-KE",
+    "eza\000eza-Latn-NG",
+    "eze\000eze-Latn-NG",
+    "fa\000fa-Arab-IR",
+    "faa\000faa-Latn-PG",
+    "fab\000fab-Latn-GQ",
+    "fad\000fad-Latn-PG",
+    "faf\000faf-Latn-SB",
+    "fag\000fag-Latn-PG",
+    "fah\000fah-Latn-NG",
+    "fai\000fai-Latn-PG",
+    "faj\000faj-Latn-PG",
+    "fak\000fak-Latn-CM",
+    "fal\000fal-Latn-CM",
+    "fam\000fam-Latn-NG",
+    "fan\000fan-Latn-GQ",
+    "fap\000fap-Latn-SN",
+    "far\000far-Latn-SB",
+    "fau\000fau-Latn-ID",
+    "fax\000fax-Latn-ES",
+    "fay\000fay-Arab-IR",
+    "faz\000faz-Arab-IR",
+    "fbl\000fbl-Latn-PH",
+    "fer\000fer-Latn-SS",
+    "ff\000ff-Latn-SN",
+    "ff-Adlm\000ff-Adlm-GN",
+    "ffi\000ffi-Latn-PG",
+    "ffm\000ffm-Latn-ML",
+    "fgr\000fgr-Latn-TD",
+    "fi\000fi-Latn-FI",
+    "fia\000fia-Arab-SD",
+    "fie\000fie-Latn-NG",
+    "fif\000fif-Latn-SA",
+    "fil\000fil-Latn-PH",
+    "fip\000fip-Latn-TZ",
+    "fir\000fir-Latn-NG",
+    "fit\000fit-Latn-SE",
+    "fiw\000fiw-Latn-PG",
+    "fj\000fj-Latn-FJ",
+    "fkk\000fkk-Latn-NG",
+    "fkv\000fkv-Latn-NO",
+    "fla\000fla-Latn-US",
+    "flh\000flh-Latn-ID",
+    "fli\000fli-Latn-NG",
+    "fll\000fll-Latn-CM",
+    "fln\000fln-Latn-AU",
+    "flr\000flr-Latn-CD",
+    "fly\000fly-Latn-ZA",
+    "fmp\000fmp-Latn-CM",
+    "fmu\000fmu-Deva-IN",
+    "fnb\000fnb-Latn-VU",
+    "fng\000fng-Latn-ZA",
+    "fni\000fni-Latn-TD",
+    "fo\000fo-Latn-FO",
+    "fod\000fod-Latn-BJ",
+    "foi\000foi-Latn-PG",
+    "fom\000fom-Latn-CD",
+    "fon\000fon-Latn-BJ",
+    "for\000for-Latn-PG",
+    "fos\000fos-Latn-TW",
+    "fpe\000fpe-Latn-GQ",
+    "fqs\000fqs-Latn-PG",
+    "fr\000fr-Latn-FR",
+    "frc\000frc-Latn-US",
+    "frd\000frd-Latn-ID",
+    "frk\000frk-Latn-DE",
+    "frm\000frm-Latn-FR",
+    "fro\000fro-Latn-FR",
+    "frp\000frp-Latn-FR",
+    "frq\000frq-Latn-PG",
+    "frr\000frr-Latn-DE",
+    "frs\000frs-Latn-DE",
+    "frt\000frt-Latn-VU",
+    "fub\000fub-Arab-CM",
+    "fud\000fud-Latn-WF",
+    "fue\000fue-Latn-BJ",
+    "fuf\000fuf-Latn-GN",
+    "fuh\000fuh-Latn-NE",
+    "fui\000fui-Latn-TD",
+    "fum\000fum-Latn-NG",
+    "fun\000fun-Latn-BR",
+    "fuq\000fuq-Latn-NE",
+    "fur\000fur-Latn-IT",
+    "fut\000fut-Latn-VU",
+    "fuu\000fuu-Latn-CD",
+    "fuv\000fuv-Latn-NG",
+    "fuy\000fuy-Latn-PG",
+    "fvr\000fvr-Latn-SD",
+    "fwa\000fwa-Latn-NC",
+    "fwe\000fwe-Latn-NA",
+    "fy\000fy-Latn-NL",
+    "ga\000ga-Latn-IE",
+    "gaa\000gaa-Latn-GH",
+    "gab\000gab-Latn-TD",
+    "gac\000gac-Latn-IN",
+    "gad\000gad-Latn-PH",
+    "gae\000gae-Latn-VE",
+    "gaf\000gaf-Latn-PG",
+    "gag\000gag-Latn-MD",
+    "gah\000gah-Latn-PG",
+    "gai\000gai-Latn-PG",
+    "gaj\000gaj-Latn-PG",
+    "gak\000gak-Latn-ID",
+    "gal\000gal-Latn-TL",
+    "gam\000gam-Latn-PG",
+    "gan\000gan-Hans-CN",
+    "gao\000gao-Latn-PG",
+    "gap\000gap-Latn-PG",
+    "gaq\000gaq-Orya-IN",
+    "gar\000gar-Latn-PG",
+    "gas\000gas-Gujr-IN",
+    "gat\000gat-Latn-PG",
+    "gau\000gau-Telu-IN",
+    "gaw\000gaw-Latn-PG",
+    "gax\000gax-Latn-ET",
+    "gay\000gay-Latn-ID",
+    "gba\000gba-Latn-CF",
+    "gbb\000gbb-Latn-AU",
+    "gbd\000gbd-Latn-AU",
+    "gbe\000gbe-Latn-PG",
+    "gbf\000gbf-Latn-PG",
+    "gbg\000gbg-Latn-CF",
+    "gbh\000gbh-Latn-BJ",
+    "gbi\000gbi-Latn-ID",
+    "gbj\000gbj-Orya-IN",
+    "gbk\000gbk-Deva-IN",
+    "gbl\000gbl-Gujr-IN",
+    "gbm\000gbm-Deva-IN",
+    "gbn\000gbn-Latn-SS",
+    "gbp\000gbp-Latn-CF",
+    "gbq\000gbq-Latn-CF",
+    "gbr\000gbr-Latn-NG",
+    "gbs\000gbs-Latn-BJ",
+    "gbu\000gbu-Latn-AU",
+    "gbv\000gbv-Latn-CF",
+    "gbw\000gbw-Latn-AU",
+    "gbx\000gbx-Latn-BJ",
+    "gby\000gby-Latn-NG",
+    "gbz\000gbz-Arab-IR",
+    "gcc\000gcc-Latn-PG",
+    "gcd\000gcd-Latn-AU",
+    "gcf\000gcf-Latn-GP",
+    "gcl\000gcl-Latn-GD",
+    "gcn\000gcn-Latn-PG",
+    "gcr\000gcr-Latn-GF",
+    "gct\000gct-Latn-VE",
+    "gd\000gd-Latn-GB",
+    "gdb\000gdb-Orya-IN",
+    "gdc\000gdc-Latn-AU",
+    "gdd\000gdd-Latn-PG",
+    "gde\000gde-Latn-NG",
+    "gdf\000gdf-Latn-NG",
+    "gdg\000gdg-Latn-PH",
+    "gdh\000gdh-Latn-AU",
+    "gdi\000gdi-Latn-CF",
+    "gdj\000gdj-Latn-AU",
+    "gdk\000gdk-Latn-TD",
+    "gdl\000gdl-Latn-ET",
+    "gdm\000gdm-Latn-TD",
+    "gdn\000gdn-Latn-PG",
+    "gdo\000gdo-Cyrl-RU",
+    "gdq\000gdq-Latn-YE",
+    "gdr\000gdr-Latn-PG",
+    "gdt\000gdt-Latn-AU",
+    "gdu\000gdu-Latn-NG",
+    "gdx\000gdx-Deva-IN",
+    "gea\000gea-Latn-NG",
+    "geb\000geb-Latn-PG",
+    "gec\000gec-Latn-LR",
+    "ged\000ged-Latn-NG",
+    "gef\000gef-Latn-ID",
+    "geg\000geg-Latn-NG",
+    "geh\000geh-Latn-CA",
+    "gei\000gei-Latn-ID",
+    "gej\000gej-Latn-TG",
+    "gek\000gek-Latn-NG",
+    "gel\000gel-Latn-NG",
+    "geq\000geq-Latn-CF",
+    "ges\000ges-Latn-ID",
+    "gev\000gev-Latn-GA",
+    "gew\000gew-Latn-NG",
+    "gex\000gex-Latn-SO",
+    "gey\000gey-Latn-CD",
+    "gez\000gez-Ethi-ET",
+    "gfk\000gfk-Latn-PG",
+    "gga\000gga-Latn-SB",
+    "ggb\000ggb-Latn-LR",
+    "ggd\000ggd-Latn-AU",
+    "gge\000gge-Latn-AU",
+    "ggg\000ggg-Arab-PK",
+    "ggk\000ggk-Latn-AU",
+    "ggl\000ggl-Latn-PG",
+    "ggt\000ggt-Latn-PG",
+    "ggu\000ggu-Latn-CI",
+    "ggw\000ggw-Latn-PG",
+    "gha\000gha-Arab-LY",
+    "ghc\000ghc-Latn-GB",
+    "ghe\000ghe-Deva-NP",
+    "ghk\000ghk-Latn-MM",
+    "ghn\000ghn-Latn-SB",
+    "gho\000gho-Tfng-MA",
+    "ghr\000ghr-Arab-PK",
+    "ghs\000ghs-Latn-PG",
+    "ght\000ght-Tibt-NP",
+    "gia\000gia-Latn-AU",
+    "gib\000gib-Latn-NG",
+    "gic\000gic-Latn-ZA",
+    "gid\000gid-Latn-CM",
+    "gie\000gie-Latn-CI",
+    "gig\000gig-Arab-PK",
+    "gih\000gih-Latn-AU",
+    "gil\000gil-Latn-KI",
+    "gim\000gim-Latn-PG",
+    "gin\000gin-Cyrl-RU",
+    "gip\000gip-Latn-PG",
+    "giq\000giq-Latn-VN",
+    "gir\000gir-Latn-VN",
+    "gis\000gis-Latn-CM",
+    "git\000git-Latn-CA",
+    "gix\000gix-Latn-CD",
+    "giy\000giy-Latn-AU",
+    "giz\000giz-Latn-CM",
+    "gjk\000gjk-Arab-PK",
+    "gjm\000gjm-Latn-AU",
+    "gjn\000gjn-Latn-GH",
+    "gjr\000gjr-Latn-AU",
+    "gju\000gju-Arab-PK",
+    "gka\000gka-Latn-PG",
+    "gkd\000gkd-Latn-PG",
+    "gke\000gke-Latn-CM",
+    "gkn\000gkn-Latn-NG",
+    "gko\000gko-Latn-AU",
+    "gkp\000gkp-Latn-GN",
+    "gku\000gku-Latn-ZA",
+    "gl\000gl-Latn-ES",
+    "glb\000glb-Latn-NG",
+    "glc\000glc-Latn-TD",
+    "gld\000gld-Cyrl-RU",
+    "glh\000glh-Arab-AF",
+    "glj\000glj-Latn-TD",
+    "glk\000glk-Arab-IR",
+    "gll\000gll-Latn-AU",
+    "glo\000glo-Latn-NG",
+    "glr\000glr-Latn-LR",
+    "glu\000glu-Latn-TD",
+    "glw\000glw-Latn-NG",
+    "gma\000gma-Latn-AU",
+    "gmb\000gmb-Latn-SB",
+    "gmd\000gmd-Latn-NG",
+    "gmg\000gmg-Latn-PG",
+    "gmh\000gmh-Latn-DE",
+    "gml\000gml-Latf-DE",
+    "gmm\000gmm-Latn-CM",
+    "gmn\000gmn-Latn-CM",
+    "gmr\000gmr-Latn-AU",
+    "gmu\000gmu-Latn-PG",
+    "gmv\000gmv-Ethi-ET",
+    "gmx\000gmx-Latn-TZ",
+    "gmy\000gmy-Linb-GR",
+    "gmz\000gmz-Latn-NG",
+    "gn\000gn-Latn-PY",
+    "gna\000gna-Latn-BF",
+    "gnb\000gnb-Latn-IN",
+    "gnc\000gnc-Latn-ES",
+    "gnd\000gnd-Latn-CM",
+    "gne\000gne-Latn-NG",
+    "gng\000gng-Latn-TG",
+    "gnh\000gnh-Latn-NG",
+    "gni\000gni-Latn-AU",
+    "gnj\000gnj-Latn-CI",
+    "gnk\000gnk-Latn-BW",
+    "gnl\000gnl-Latn-AU",
+    "gnm\000gnm-Latn-PG",
+    "gnn\000gnn-Latn-AU",
+    "gnq\000gnq-Latn-MY",
+    "gnr\000gnr-Latn-AU",
+    "gnt\000gnt-Latn-PG",
+    "gnu\000gnu-Latn-PG",
+    "gnw\000gnw-Latn-BO",
+    "gnz\000gnz-Latn-CF",
+    "goa\000goa-Latn-CI",
+    "gob\000gob-Latn-CO",
+    "goc\000goc-Latn-PG",
+    "god\000god-Latn-CI",
+    "goe\000goe-Tibt-BT",
+    "gof\000gof-Ethi-ET",
+    "gog\000gog-Latn-TZ",
+    "goh\000goh-Latn-DE",
+    "goi\000goi-Latn-PG",
+    "goj\000goj-Deva-IN",
+    "gok\000gok-Deva-IN",
+    "gol\000gol-Latn-LR",
+    "gon\000gon-Deva-IN",
+    "goo\000goo-Latn-FJ",
+    "gop\000gop-Latn-ID",
+    "goq\000goq-Latn-ID",
+    "gor\000gor-Latn-ID",
+    "gos\000gos-Latn-NL",
+    "got\000got-Goth-UA",
+    "gou\000gou-Latn-CM",
+    "gov\000gov-Latn-CI",
+    "gow\000gow-Latn-TZ",
+    "gox\000gox-Latn-CD",
+    "goy\000goy-Latn-TD",
+    "gpa\000gpa-Latn-NG",
+    "gpe\000gpe-Latn-GH",
+    "gpn\000gpn-Latn-PG",
+    "gqa\000gqa-Latn-NG",
+    "gqn\000gqn-Latn-BR",
+    "gqr\000gqr-Latn-TD",
+    "gra\000gra-Deva-IN",
+    "grb\000grb-Latn-LR",
+    "grc\000grc-Grek-GR",
+    "grd\000grd-Latn-NG",
+    "grg\000grg-Latn-PG",
+    "grh\000grh-Latn-NG",
+    "gri\000gri-Latn-SB",
+    "grj\000grj-Latn-LR",
+    "grm\000grm-Latn-MY",
+    "grq\000grq-Latn-PG",
+    "grr\000grr-Arab-DZ",
+    "grs\000grs-Latn-ID",
+    "grt\000grt-Beng-IN",
+    "gru\000gru-Ethi-ET",
+    "grv\000grv-Latn-LR",
+    "grw\000grw-Latn-PG",
+    "grx\000grx-Latn-PG",
+    "gry\000gry-Latn-LR",
+    "grz\000grz-Latn-PG",
+    "gsl\000gsl-Latn-SN",
+    "gsn\000gsn-Latn-PG",
+    "gso\000gso-Latn-CF",
+    "gsp\000gsp-Latn-PG",
+    "gsw\000gsw-Latn-CH",
+    "gta\000gta-Latn-BR",
+    "gtu\000gtu-Latn-AU",
+    "gu\000gu-Gujr-IN",
+    "gua\000gua-Latn-NG",
+    "gub\000gub-Latn-BR",
+    "guc\000guc-Latn-CO",
+    "gud\000gud-Latn-CI",
+    "gue\000gue-Latn-AU",
+    "guf\000guf-Latn-AU",
+    "guh\000guh-Latn-CO",
+    "gui\000gui-Latn-BO",
+    "guk\000guk-Latn-ET",
+    "gul\000gul-Latn-US",
+    "gum\000gum-Latn-CO",
+    "gun\000gun-Latn-BR",
+    "guo\000guo-Latn-CO",
+    "gup\000gup-Latn-AU",
+    "guq\000guq-Latn-PY",
+    "gur\000gur-Latn-GH",
+    "gut\000gut-Latn-CR",
+    "guu\000guu-Latn-VE",
+    "guw\000guw-Latn-BJ",
+    "gux\000gux-Latn-BF",
+    "guz\000guz-Latn-KE",
+    "gv\000gv-Latn-IM",
+    "gva\000gva-Latn-PY",
+    "gvc\000gvc-Latn-BR",
+    "gve\000gve-Latn-PG",
+    "gvf\000gvf-Latn-PG",
+    "gvj\000gvj-Latn-BR",
+    "gvl\000gvl-Latn-TD",
+    "gvm\000gvm-Latn-NG",
+    "gvn\000gvn-Latn-AU",
+    "gvo\000gvo-Latn-BR",
+    "gvp\000gvp-Latn-BR",
+    "gvr\000gvr-Deva-NP",
+    "gvs\000gvs-Latn-PG",
+    "gvy\000gvy-Latn-AU",
+    "gwa\000gwa-Latn-CI",
+    "gwb\000gwb-Latn-NG",
+    "gwc\000gwc-Arab-PK",
+    "gwd\000gwd-Latn-ET",
+    "gwe\000gwe-Latn-TZ",
+    "gwf\000gwf-Arab-PK",
+    "gwg\000gwg-Latn-NG",
+    "gwi\000gwi-Latn-CA",
+    "gwj\000gwj-Latn-BW",
+    "gwm\000gwm-Latn-AU",
+    "gwn\000gwn-Latn-NG",
+    "gwr\000gwr-Latn-UG",
+    "gwt\000gwt-Arab-AF",
+    "gwu\000gwu-Latn-AU",
+    "gww\000gww-Latn-AU",
+    "gwx\000gwx-Latn-GH",
+    "gxx\000gxx-Latn-CI",
+    "gyb\000gyb-Latn-PG",
+    "gyd\000gyd-Latn-AU",
+    "gye\000gye-Latn-NG",
+    "gyf\000gyf-Latn-AU",
+    "gyg\000gyg-Latn-CF",
+    "gyi\000gyi-Latn-CM",
+    "gyl\000gyl-Latn-ET",
+    "gym\000gym-Latn-PA",
+    "gyn\000gyn-Latn-GY",
+    "gyo\000gyo-Deva-NP",
+    "gyr\000gyr-Latn-BO",
+    "gyy\000gyy-Latn-AU",
+    "gyz\000gyz-Latn-NG",
+    "gza\000gza-Latn-SD",
+    "gzi\000gzi-Arab-IR",
+    "gzn\000gzn-Latn-ID",
+    "ha\000ha-Latn-NG",
+    "ha-CM\000ha-Arab-CM",
+    "ha-SD\000ha-Arab-SD",
+    "haa\000haa-Latn-US",
+    "hac\000hac-Arab-IR",
+    "had\000had-Latn-ID",
+    "hae\000hae-Latn-ET",
+    "hag\000hag-Latn-GH",
+    "hah\000hah-Latn-PG",
+    "hai\000hai-Latn-CA",
+    "haj\000haj-Latn-IN",
+    "hak\000hak-Hans-CN",
+    "hak-Hant\000hak-Hant-TW",
+    "hak-TW\000hak-Hant-TW",
+    "hal\000hal-Latn-VN",
+    "ham\000ham-Latn-PG",
+    "han\000han-Latn-TZ",
+    "hao\000hao-Latn-PG",
+    "hap\000hap-Latn-ID",
+    "haq\000haq-Latn-TZ",
+    "har\000har-Ethi-ET",
+    "has\000has-Latn-CA",
+    "hav\000hav-Latn-CD",
+    "haw\000haw-Latn-US",
+    "hax\000hax-Latn-CA",
+    "hay\000hay-Latn-TZ",
+    "haz\000haz-Arab-AF",
+    "hba\000hba-Latn-CD",
+    "hbb\000hbb-Latn-NG",
+    "hbn\000hbn-Latn-SD",
+    "hbo\000hbo-Hebr-IL",
+    "hbu\000hbu-Latn-TL",
+    "hch\000hch-Latn-MX",
+    "hdy\000hdy-Ethi-ET",
+    "he\000he-Hebr-IL",
+    "hed\000hed-Latn-TD",
+    "heg\000heg-Latn-ID",
+    "heh\000heh-Latn-TZ",
+    "hei\000hei-Latn-CA",
+    "hem\000hem-Latn-CD",
+    "hgm\000hgm-Latn-NA",
+    "hgw\000hgw-Latn-PG",
+    "hhi\000hhi-Latn-PG",
+    "hhr\000hhr-Latn-SN",
+    "hhy\000hhy-Latn-PG",
+    "hi\000hi-Deva-IN",
+    "hia\000hia-Latn-NG",
+    "hib\000hib-Latn-PE",
+    "hid\000hid-Latn-US",
+    "hif\000hif-Deva-FJ",
+    "hig\000hig-Latn-NG",
+    "hih\000hih-Latn-PG",
+    "hii\000hii-Takr-IN",
+    "hij\000hij-Latn-CM",
+    "hik\000hik-Latn-ID",
+    "hil\000hil-Latn-PH",
+    "hio\000hio-Latn-BW",
+    "hir\000hir-Latn-BR",
+    "hit\000hit-Xsux-TR",
+    "hiw\000hiw-Latn-VU",
+    "hix\000hix-Latn-BR",
+    "hji\000hji-Latn-ID",
+    "hka\000hka-Latn-TZ",
+    "hke\000hke-Latn-CD",
+    "hkh\000hkh-Arab-IN",
+    "hkk\000hkk-Latn-PG",
+    "hla\000hla-Latn-PG",
+    "hlb\000hlb-Deva-IN",
+    "hld\000hld-Latn-VN",
+    "hlt\000hlt-Latn-MM",
+    "hlu\000hlu-Hluw-TR",
+    "hma\000hma-Latn-CN",
+    "hmb\000hmb-Latn-ML",
+    "hmd\000hmd-Plrd-CN",
+    "hmf\000hmf-Latn-VN",
+    "hmj\000hmj-Bopo-CN",
+    "hmm\000hmm-Latn-CN",
+    "hmn\000hmn-Latn-CN",
+    "hmp\000hmp-Latn-CN",
+    "hmq\000hmq-Bopo-CN",
+    "hmr\000hmr-Latn-IN",
+    "hms\000hms-Latn-CN",
+    "hmt\000hmt-Latn-PG",
+    "hmu\000hmu-Latn-ID",
+    "hmv\000hmv-Latn-VN",
+    "hmw\000hmw-Latn-CN",
+    "hmy\000hmy-Latn-CN",
+    "hmz\000hmz-Latn-CN",
+    "hna\000hna-Latn-CM",
+    "hnd\000hnd-Arab-PK",
+    "hne\000hne-Deva-IN",
+    "hng\000hng-Latn-AO",
+    "hnh\000hnh-Latn-BW",
+    "hni\000hni-Latn-CN",
+    "hnj\000hnj-Hmnp-US",
+    "hnj-Hmng\000hnj-Hmng-LA",
+    "hnm\000hnm-Hans-CN",
+    "hnn\000hnn-Latn-PH",
+    "hno\000hno-Arab-PK",
+    "hns\000hns-Latn-SR",
+    "ho\000ho-Latn-PG",
+    "hoa\000hoa-Latn-SB",
+    "hob\000hob-Latn-PG",
+    "hoc\000hoc-Deva-IN",
+    "hod\000hod-Latn-NG",
+    "hoe\000hoe-Latn-NG",
+    "hoh\000hoh-Arab-OM",
+    "hoi\000hoi-Latn-US",
+    "hoj\000hoj-Deva-IN",
+    "hol\000hol-Latn-AO",
+    "hom\000hom-Latn-SS",
+    "hoo\000hoo-Latn-CD",
+    "hop\000hop-Latn-US",
+    "hor\000hor-Latn-TD",
+    "hot\000hot-Latn-PG",
+    "hov\000hov-Latn-ID",
+    "how\000how-Hani-CN",
+    "hoy\000hoy-Deva-IN",
+    "hpo\000hpo-Mymr-MM",
+    "hr\000hr-Latn-HR",
+    "hra\000hra-Latn-IN",
+    "hrc\000hrc-Latn-PG",
+    "hre\000hre-Latn-VN",
+    "hrk\000hrk-Latn-ID",
+    "hrm\000hrm-Latn-CN",
+    "hro\000hro-Latn-VN",
+    "hrp\000hrp-Latn-AU",
+    "hrt\000hrt-Syrc-TR",
+    "hru\000hru-Latn-IN",
+    "hrw\000hrw-Latn-PG",
+    "hrx\000hrx-Latn-BR",
+    "hrz\000hrz-Arab-IR",
+    "hsb\000hsb-Latn-DE",
+    "hsn\000hsn-Hans-CN",
+    "hss\000hss-Arab-OM",
+    "ht\000ht-Latn-HT",
+    "hti\000hti-Latn-ID",
+    "hto\000hto-Latn-CO",
+    "hts\000hts-Latn-TZ",
+    "htu\000htu-Latn-ID",
+    "htx\000htx-Xsux-TR",
+    "hu\000hu-Latn-HU",
+    "hub\000hub-Latn-PE",
+    "huc\000huc-Latn-BW",
+    "hud\000hud-Latn-ID",
+    "hue\000hue-Latn-MX",
+    "huf\000huf-Latn-PG",
+    "hug\000hug-Latn-PE",
+    "huh\000huh-Latn-CL",
+    "hui\000hui-Latn-PG",
+    "huk\000huk-Latn-ID",
+    "hul\000hul-Latn-PG",
+    "hum\000hum-Latn-CD",
+    "hup\000hup-Latn-US",
+    "hur\000hur-Latn-CA",
+    "hus\000hus-Latn-MX",
+    "hut\000hut-Deva-NP",
+    "huu\000huu-Latn-PE",
+    "huv\000huv-Latn-MX",
+    "huw\000huw-Latn-ID",
+    "hux\000hux-Latn-PE",
+    "huy\000huy-Hebr-IL",
+    "huz\000huz-Cyrl-RU",
+    "hvc\000hvc-Latn-HT",
+    "hve\000hve-Latn-MX",
+    "hvk\000hvk-Latn-NC",
+    "hvn\000hvn-Latn-ID",
+    "hvv\000hvv-Latn-MX",
+    "hwa\000hwa-Latn-CI",
+    "hwc\000hwc-Latn-US",
+    "hwo\000hwo-Latn-NG",
+    "hy\000hy-Armn-AM",
+    "hya\000hya-Latn-CM",
+    "hyw\000hyw-Armn-AM",
+    "hz\000hz-Latn-NA",
+    "ia\000ia-Latn-001",
+    "iai\000iai-Latn-NC",
+    "ian\000ian-Latn-PG",
+    "iar\000iar-Latn-PG",
+    "iba\000iba-Latn-MY",
+    "ibb\000ibb-Latn-NG",
+    "ibd\000ibd-Latn-AU",
+    "ibe\000ibe-Latn-NG",
+    "ibg\000ibg-Latn-PH",
+    "ibh\000ibh-Latn-VN",
+    "ibl\000ibl-Latn-PH",
+    "ibm\000ibm-Latn-NG",
+    "ibn\000ibn-Latn-NG",
+    "ibr\000ibr-Latn-NG",
+    "ibu\000ibu-Latn-ID",
+    "iby\000iby-Latn-NG",
+    "ica\000ica-Latn-BJ",
+    "ich\000ich-Latn-NG",
+    "icr\000icr-Latn-CO",
+    "id\000id-Latn-ID",
+    "ida\000ida-Latn-KE",
+    "idb\000idb-Latn-IN",
+    "idc\000idc-Latn-NG",
+    "idd\000idd-Latn-BJ",
+    "ide\000ide-Latn-NG",
+    "idi\000idi-Latn-PG",
+    "idr\000idr-Latn-SS",
+    "ids\000ids-Latn-NG",
+    "idt\000idt-Latn-TL",
+    "idu\000idu-Latn-NG",
+    "ie\000ie-Latn-EE",
+    "ifa\000ifa-Latn-PH",
+    "ifb\000ifb-Latn-PH",
+    "ife\000ife-Latn-TG",
+    "iff\000iff-Latn-VU",
+    "ifk\000ifk-Latn-PH",
+    "ifm\000ifm-Latn-CG",
+    "ifu\000ifu-Latn-PH",
+    "ify\000ify-Latn-PH",
+    "ig\000ig-Latn-NG",
+    "igb\000igb-Latn-NG",
+    "ige\000ige-Latn-NG",
+    "igg\000igg-Latn-PG",
+    "igl\000igl-Latn-NG",
+    "igm\000igm-Latn-PG",
+    "ign\000ign-Latn-BO",
+    "igo\000igo-Latn-PG",
+    "igs\000igs-Latn-001",
+    "igw\000igw-Latn-NG",
+    "ihb\000ihb-Latn-ID",
+    "ihi\000ihi-Latn-NG",
+    "ihp\000ihp-Latn-ID",
+    "ihw\000ihw-Latn-AU",
+    "ii\000ii-Yiii-CN",
+    "iin\000iin-Latn-AU",
+    "ijc\000ijc-Latn-NG",
+    "ije\000ije-Latn-NG",
+    "ijj\000ijj-Latn-BJ",
+    "ijn\000ijn-Latn-NG",
+    "ijs\000ijs-Latn-NG",
+    "ik\000ik-Latn-US",
+    "ikh\000ikh-Latn-NG",
+    "iki\000iki-Latn-NG",
+    "ikk\000ikk-Latn-NG",
+    "ikl\000ikl-Latn-NG",
+    "iko\000iko-Latn-NG",
+    "ikp\000ikp-Latn-NG",
+    "ikr\000ikr-Latn-AU",
+    "ikt\000ikt-Latn-CA",
+    "ikv\000ikv-Latn-NG",
+    "ikw\000ikw-Latn-NG",
+    "ikx\000ikx-Latn-UG",
+    "ikz\000ikz-Latn-TZ",
+    "ila\000ila-Latn-ID",
+    "ilb\000ilb-Latn-ZM",
+    "ilg\000ilg-Latn-AU",
+    "ili\000ili-Latn-CN",
+    "ilk\000ilk-Latn-PH",
+    "ilm\000ilm-Latn-MY",
+    "ilo\000ilo-Latn-PH",
+    "ilp\000ilp-Latn-PH",
+    "ilu\000ilu-Latn-ID",
+    "ilv\000ilv-Latn-NG",
+    "imi\000imi-Latn-PG",
+    "iml\000iml-Latn-US",
+    "imn\000imn-Latn-PG",
+    "imo\000imo-Latn-PG",
+    "imr\000imr-Latn-ID",
+    "ims\000ims-Latn-IT",
+    "imt\000imt-Latn-SS",
+    "imy\000imy-Lyci-TR",
+    "in\000in-Latn-ID",
+    "inb\000inb-Latn-CO",
+    "ing\000ing-Latn-US",
+    "inh\000inh-Cyrl-RU",
+    "inj\000inj-Latn-CO",
+    "inn\000inn-Latn-PH",
+    "ino\000ino-Latn-PG",
+    "inp\000inp-Latn-PE",
+    "int\000int-Mymr-MM",
+    "io\000io-Latn-001",
+    "ior\000ior-Ethi-ET",
+    "iou\000iou-Latn-PG",
+    "iow\000iow-Latn-US",
+    "ipi\000ipi-Latn-PG",
+    "ipo\000ipo-Latn-PG",
+    "iqu\000iqu-Latn-PE",
+    "iqw\000iqw-Latn-NG",
+    "ire\000ire-Latn-ID",
+    "irh\000irh-Latn-ID",
+    "iri\000iri-Latn-NG",
+    "irk\000irk-Latn-TZ",
+    "irn\000irn-Latn-BR",
+    "iru\000iru-Taml-IN",
+    "irx\000irx-Latn-ID",
+    "iry\000iry-Latn-PH",
+    "is\000is-Latn-IS",
+    "isa\000isa-Latn-PG",
+    "isc\000isc-Latn-PE",
+    "isd\000isd-Latn-PH",
+    "ish\000ish-Latn-NG",
+    "isi\000isi-Latn-NG",
+    "isk\000isk-Arab-AF",
+    "ism\000ism-Latn-ID",
+    "isn\000isn-Latn-TZ",
+    "iso\000iso-Latn-NG",
+    "ist\000ist-Latn-HR",
+    "isu\000isu-Latn-CM",
+    "it\000it-Latn-IT",
+    "itb\000itb-Latn-PH",
+    "itd\000itd-Latn-ID",
+    "ite\000ite-Latn-BO",
+    "iti\000iti-Latn-PH",
+    "itk\000itk-Hebr-IT",
+    "itl\000itl-Cyrl-RU",
+    "itm\000itm-Latn-NG",
+    "ito\000ito-Latn-BO",
+    "itr\000itr-Latn-PG",
+    "its\000its-Latn-NG",
+    "itt\000itt-Latn-PH",
+    "itv\000itv-Latn-PH",
+    "itw\000itw-Latn-NG",
+    "itx\000itx-Latn-ID",
+    "ity\000ity-Latn-PH",
+    "itz\000itz-Latn-GT",
+    "iu\000iu-Cans-CA",
+    "ium\000ium-Latn-CN",
+    "ivb\000ivb-Latn-PH",
+    "ivv\000ivv-Latn-PH",
+    "iw\000iw-Hebr-IL",
+    "iwk\000iwk-Latn-PH",
+    "iwm\000iwm-Latn-PG",
+    "iwo\000iwo-Latn-ID",
+    "iws\000iws-Latn-PG",
+    "ixc\000ixc-Latn-MX",
+    "ixl\000ixl-Latn-GT",
+    "iya\000iya-Latn-NG",
+    "iyo\000iyo-Latn-CM",
+    "iyx\000iyx-Latn-CG",
+    "izh\000izh-Latn-RU",
+    "izm\000izm-Latn-NG",
+    "izr\000izr-Latn-NG",
+    "izz\000izz-Latn-NG",
+    "ja\000ja-Jpan-JP",
+    "jaa\000jaa-Latn-BR",
+    "jab\000jab-Latn-NG",
+    "jac\000jac-Latn-GT",
+    "jad\000jad-Arab-GN",
+    "jae\000jae-Latn-PG",
+    "jaf\000jaf-Latn-NG",
+    "jah\000jah-Latn-MY",
+    "jaj\000jaj-Latn-SB",
+    "jak\000jak-Latn-MY",
+    "jal\000jal-Latn-ID",
+    "jam\000jam-Latn-JM",
+    "jan\000jan-Latn-AU",
+    "jao\000jao-Latn-AU",
+    "jaq\000jaq-Latn-ID",
+    "jas\000jas-Latn-NC",
+    "jat\000jat-Arab-AF",
+    "jau\000jau-Latn-ID",
+    "jax\000jax-Latn-ID",
+    "jay\000jay-Latn-AU",
+    "jaz\000jaz-Latn-NC",
+    "jbe\000jbe-Hebr-IL",
+    "jbi\000jbi-Latn-AU",
+    "jbj\000jbj-Latn-ID",
+    "jbk\000jbk-Latn-PG",
+    "jbm\000jbm-Latn-NG",
+    "jbn\000jbn-Arab-LY",
+    "jbo\000jbo-Latn-001",
+    "jbr\000jbr-Latn-ID",
+    "jbt\000jbt-Latn-BR",
+    "jbu\000jbu-Latn-CM",
+    "jbw\000jbw-Latn-AU",
+    "jct\000jct-Cyrl-UA",
+    "jda\000jda-Tibt-IN",
+    "jdg\000jdg-Arab-PK",
+    "jdt\000jdt-Cyrl-RU",
+    "jeb\000jeb-Latn-PE",
+    "jee\000jee-Deva-NP",
+    "jeh\000jeh-Latn-VN",
+    "jei\000jei-Latn-ID",
+    "jek\000jek-Latn-CI",
+    "jel\000jel-Latn-ID",
+    "jen\000jen-Latn-NG",
+    "jer\000jer-Latn-NG",
+    "jet\000jet-Latn-PG",
+    "jeu\000jeu-Latn-TD",
+    "jgb\000jgb-Latn-CD",
+    "jge\000jge-Geor-GE",
+    "jgk\000jgk-Latn-NG",
+    "jgo\000jgo-Latn-CM",
+    "jhi\000jhi-Latn-MY",
+    "ji\000ji-Hebr-UA",
+    "jia\000jia-Latn-CM",
+    "jib\000jib-Latn-NG",
+    "jic\000jic-Latn-HN",
+    "jid\000jid-Latn-NG",
+    "jie\000jie-Latn-NG",
+    "jig\000jig-Latn-AU",
+    "jil\000jil-Latn-PG",
+    "jim\000jim-Latn-CM",
+    "jit\000jit-Latn-TZ",
+    "jiu\000jiu-Latn-CN",
+    "jiv\000jiv-Latn-EC",
+    "jiy\000jiy-Latn-CN",
+    "jje\000jje-Hang-KR",
+    "jjr\000jjr-Latn-NG",
+    "jka\000jka-Latn-ID",
+    "jkm\000jkm-Mymr-MM",
+    "jko\000jko-Latn-PG",
+    "jku\000jku-Latn-NG",
+    "jle\000jle-Latn-SD",
+    "jma\000jma-Latn-PG",
+    "jmb\000jmb-Latn-NG",
+    "jmc\000jmc-Latn-TZ",
+    "jmd\000jmd-Latn-ID",
+    "jmi\000jmi-Latn-NG",
+    "jml\000jml-Deva-NP",
+    "jmn\000jmn-Latn-MM",
+    "jmr\000jmr-Latn-GH",
+    "jms\000jms-Latn-NG",
+    "jmw\000jmw-Latn-PG",
+    "jmx\000jmx-Latn-MX",
+    "jna\000jna-Takr-IN",
+    "jnd\000jnd-Arab-PK",
+    "jng\000jng-Latn-AU",
+    "jni\000jni-Latn-NG",
+    "jnj\000jnj-Latn-ET",
+    "jnl\000jnl-Deva-IN",
+    "jns\000jns-Deva-IN",
+    "job\000job-Latn-CD",
+    "jod\000jod-Latn-CI",
+    "jog\000jog-Arab-PK",
+    "jor\000jor-Latn-BO",
+    "jow\000jow-Latn-ML",
+    "jpa\000jpa-Hebr-PS",
+    "jpr\000jpr-Hebr-IL",
+    "jqr\000jqr-Latn-PE",
+    "jra\000jra-Latn-VN",
+    "jrb\000jrb-Hebr-IL",
+    "jrr\000jrr-Latn-NG",
+    "jrt\000jrt-Latn-NG",
+    "jru\000jru-Latn-VE",
+    "jua\000jua-Latn-BR",
+    "jub\000jub-Latn-NG",
+    "jud\000jud-Latn-CI",
+    "juh\000juh-Latn-NG",
+    "jui\000jui-Latn-AU",
+    "juk\000juk-Latn-NG",
+    "jul\000jul-Deva-NP",
+    "jum\000jum-Latn-SD",
+    "jun\000jun-Orya-IN",
+    "juo\000juo-Latn-NG",
+    "jup\000jup-Latn-BR",
+    "jur\000jur-Latn-BR",
+    "jut\000jut-Latn-DK",
+    "juu\000juu-Latn-NG",
+    "juw\000juw-Latn-NG",
+    "juy\000juy-Orya-IN",
+    "jv\000jv-Latn-ID",
+    "jvd\000jvd-Latn-ID",
+    "jvn\000jvn-Latn-SR",
+    "jw\000jw-Latn-ID",
+    "jwi\000jwi-Latn-GH",
+    "jya\000jya-Tibt-CN",
+    "jye\000jye-Hebr-IL",
+    "jyy\000jyy-Latn-TD",
+    "ka\000ka-Geor-GE",
+    "kaa\000kaa-Cyrl-UZ",
+    "kab\000kab-Latn-DZ",
+    "kac\000kac-Latn-MM",
+    "kad\000kad-Latn-NG",
+    "kag\000kag-Latn-MY",
+    "kah\000kah-Latn-CF",
+    "kai\000kai-Latn-NG",
+    "kaj\000kaj-Latn-NG",
+    "kak\000kak-Latn-PH",
+    "kam\000kam-Latn-KE",
+    "kao\000kao-Latn-ML",
+    "kap\000kap-Cyrl-RU",
+    "kaq\000kaq-Latn-PE",
+    "kav\000kav-Latn-BR",
+    "kaw\000kaw-Bali-ID",
+    "kax\000kax-Latn-ID",
+    "kay\000kay-Latn-BR",
+    "kba\000kba-Latn-AU",
+    "kbb\000kbb-Latn-BR",
+    "kbc\000kbc-Latn-BR",
+    "kbd\000kbd-Cyrl-RU",
+    "kbe\000kbe-Latn-AU",
+    "kbg\000kbg-Tibt-IN",
+    "kbh\000kbh-Latn-CO",
+    "kbi\000kbi-Latn-ID",
+    "kbj\000kbj-Latn-CD",
+    "kbk\000kbk-Latn-PG",
+    "kbl\000kbl-Latn-TD",
+    "kbm\000kbm-Latn-PG",
+    "kbn\000kbn-Latn-CF",
+    "kbo\000kbo-Latn-SS",
+    "kbp\000kbp-Latn-TG",
+    "kbq\000kbq-Latn-PG",
+    "kbr\000kbr-Latn-ET",
+    "kbs\000kbs-Latn-GA",
+    "kbt\000kbt-Latn-PG",
+    "kbu\000kbu-Arab-PK",
+    "kbv\000kbv-Latn-ID",
+    "kbw\000kbw-Latn-PG",
+    "kbx\000kbx-Latn-PG",
+    "kby\000kby-Arab-NE",
+    "kbz\000kbz-Latn-NG",
+    "kca\000kca-Cyrl-RU",
+    "kcb\000kcb-Latn-PG",
+    "kcc\000kcc-Latn-NG",
+    "kcd\000kcd-Latn-ID",
+    "kce\000kce-Latn-NG",
+    "kcf\000kcf-Latn-NG",
+    "kcg\000kcg-Latn-NG",
+    "kch\000kch-Latn-NG",
+    "kci\000kci-Latn-NG",
+    "kcj\000kcj-Latn-GW",
+    "kck\000kck-Latn-ZW",
+    "kcl\000kcl-Latn-PG",
+    "kcm\000kcm-Latn-CF",
+    "kcn\000kcn-Latn-UG",
+    "kco\000kco-Latn-PG",
+    "kcp\000kcp-Latn-SD",
+    "kcq\000kcq-Latn-NG",
+    "kcs\000kcs-Latn-NG",
+    "kct\000kct-Latn-PG",
+    "kcu\000kcu-Latn-TZ",
+    "kcv\000kcv-Latn-CD",
+    "kcw\000kcw-Latn-CD",
+    "kcy\000kcy-Arab-DZ",
+    "kcz\000kcz-Latn-TZ",
+    "kda\000kda-Latn-AU",
+    "kdc\000kdc-Latn-TZ",
+    "kdd\000kdd-Latn-AU",
+    "kde\000kde-Latn-TZ",
+    "kdf\000kdf-Latn-PG",
+    "kdg\000kdg-Latn-CD",
+    "kdh\000kdh-Latn-TG",
+    "kdi\000kdi-Latn-UG",
+    "kdj\000kdj-Latn-UG",
+    "kdk\000kdk-Latn-NC",
+    "kdl\000kdl-Latn-NG",
+    "kdm\000kdm-Latn-NG",
+    "kdn\000kdn-Latn-ZW",
+    "kdp\000kdp-Latn-NG",
+    "kdq\000kdq-Beng-IN",
+    "kdr\000kdr-Latn-LT",
+    "kdt\000kdt-Thai-TH",
+    "kdw\000kdw-Latn-ID",
+    "kdx\000kdx-Latn-NG",
+    "kdy\000kdy-Latn-ID",
+    "kdz\000kdz-Latn-CM",
+    "kea\000kea-Latn-CV",
+    "keb\000keb-Latn-GA",
+    "kec\000kec-Latn-SD",
+    "ked\000ked-Latn-TZ",
+    "kee\000kee-Latn-US",
+    "kef\000kef-Latn-TG",
+    "keg\000keg-Latn-SD",
+    "keh\000keh-Latn-PG",
+    "kei\000kei-Latn-ID",
+    "kek\000kek-Latn-GT",
+    "kel\000kel-Latn-CD",
+    "kem\000kem-Latn-TL",
+    "ken\000ken-Latn-CM",
+    "keo\000keo-Latn-UG",
+    "ker\000ker-Latn-TD",
+    "kes\000kes-Latn-NG",
+    "ket\000ket-Cyrl-RU",
+    "keu\000keu-Latn-TG",
+    "kev\000kev-Mlym-IN",
+    "kew\000kew-Latn-PG",
+    "kex\000kex-Deva-IN",
+    "key\000key-Telu-IN",
+    "kez\000kez-Latn-NG",
+    "kfa\000kfa-Knda-IN",
+    "kfb\000kfb-Deva-IN",
+    "kfc\000kfc-Telu-IN",
+    "kfd\000kfd-Knda-IN",
+    "kfe\000kfe-Taml-IN",
+    "kff\000kff-Latn-IN",
+    "kfg\000kfg-Knda-IN",
+    "kfh\000kfh-Mlym-IN",
+    "kfi\000kfi-Taml-IN",
+    "kfk\000kfk-Deva-IN",
+    "kfl\000kfl-Latn-CM",
+    "kfm\000kfm-Arab-IR",
+    "kfn\000kfn-Latn-CM",
+    "kfo\000kfo-Latn-CI",
+    "kfp\000kfp-Deva-IN",
+    "kfq\000kfq-Deva-IN",
+    "kfr\000kfr-Deva-IN",
+    "kfs\000kfs-Deva-IN",
+    "kfu\000kfu-Deva-IN",
+    "kfv\000kfv-Latn-IN",
+    "kfw\000kfw-Latn-IN",
+    "kfx\000kfx-Deva-IN",
+    "kfy\000kfy-Deva-IN",
+    "kfz\000kfz-Latn-BF",
+    "kg\000kg-Latn-CD",
+    "kga\000kga-Latn-CI",
+    "kgb\000kgb-Latn-ID",
+    "kge\000kge-Latn-ID",
+    "kgf\000kgf-Latn-PG",
+    "kgj\000kgj-Deva-NP",
+    "kgk\000kgk-Latn-BR",
+    "kgl\000kgl-Latn-AU",
+    "kgo\000kgo-Latn-SD",
+    "kgp\000kgp-Latn-BR",
+    "kgq\000kgq-Latn-ID",
+    "kgr\000kgr-Latn-ID",
+    "kgs\000kgs-Latn-AU",
+    "kgt\000kgt-Latn-NG",
+    "kgu\000kgu-Latn-PG",
+    "kgv\000kgv-Latn-ID",
+    "kgw\000kgw-Latn-ID",
+    "kgx\000kgx-Latn-ID",
+    "kgy\000kgy-Tibt-NP",
+    "kha\000kha-Latn-IN",
+    "khb\000khb-Talu-CN",
+    "khc\000khc-Latn-ID",
+    "khd\000khd-Latn-ID",
+    "khe\000khe-Latn-ID",
+    "khf\000khf-Thai-LA",
+    "khg\000khg-Tibt-CN",
+    "khh\000khh-Latn-ID",
+    "khj\000khj-Latn-NG",
+    "khl\000khl-Latn-PG",
+    "khn\000khn-Deva-IN",
+    "kho\000kho-Brah-IR",
+    "khp\000khp-Latn-ID",
+    "khq\000khq-Latn-ML",
+    "khr\000khr-Latn-IN",
+    "khs\000khs-Latn-PG",
+    "kht\000kht-Mymr-IN",
+    "khu\000khu-Latn-AO",
+    "khv\000khv-Cyrl-RU",
+    "khw\000khw-Arab-PK",
+    "khx\000khx-Latn-CD",
+    "khy\000khy-Latn-CD",
+    "khz\000khz-Latn-PG",
+    "ki\000ki-Latn-KE",
+    "kia\000kia-Latn-TD",
+    "kib\000kib-Latn-SD",
+    "kic\000kic-Latn-US",
+    "kid\000kid-Latn-CM",
+    "kie\000kie-Latn-TD",
+    "kif\000kif-Deva-NP",
+    "kig\000kig-Latn-ID",
+    "kih\000kih-Latn-PG",
+    "kij\000kij-Latn-PG",
+    "kil\000kil-Latn-NG",
+    "kim\000kim-Cyrl-RU",
+    "kio\000kio-Latn-US",
+    "kip\000kip-Deva-NP",
+    "kiq\000kiq-Latn-ID",
+    "kis\000kis-Latn-PG",
+    "kit\000kit-Latn-PG",
+    "kiu\000kiu-Latn-TR",
+    "kiv\000kiv-Latn-TZ",
+    "kiw\000kiw-Latn-PG",
+    "kix\000kix-Latn-IN",
+    "kiy\000kiy-Latn-ID",
+    "kiz\000kiz-Latn-TZ",
+    "kj\000kj-Latn-NA",
+    "kja\000kja-Latn-ID",
+    "kjb\000kjb-Latn-GT",
+    "kjc\000kjc-Latn-ID",
+    "kjd\000kjd-Latn-PG",
+    "kje\000kje-Latn-ID",
+    "kjg\000kjg-Laoo-LA",
+    "kjh\000kjh-Cyrl-RU",
+    "kji\000kji-Latn-SB",
+    "kjj\000kjj-Latn-AZ",
+    "kjk\000kjk-Latn-ID",
+    "kjl\000kjl-Deva-NP",
+    "kjm\000kjm-Latn-VN",
+    "kjn\000kjn-Latn-AU",
+    "kjo\000kjo-Deva-IN",
+    "kjp\000kjp-Mymr-MM",
+    "kjq\000kjq-Latn-US",
+    "kjr\000kjr-Latn-ID",
+    "kjs\000kjs-Latn-PG",
+    "kjt\000kjt-Thai-TH",
+    "kju\000kju-Latn-US",
+    "kjx\000kjx-Latn-PG",
+    "kjy\000kjy-Latn-PG",
+    "kjz\000kjz-Tibt-BT",
+    "kk\000kk-Cyrl-KZ",
+    "kk-AF\000kk-Arab-AF",
+    "kk-Arab\000kk-Arab-CN",
+    "kk-CN\000kk-Arab-CN",
+    "kk-IR\000kk-Arab-IR",
+    "kk-MN\000kk-Arab-MN",
+    "kka\000kka-Latn-NG",
+    "kkb\000kkb-Latn-ID",
+    "kkc\000kkc-Latn-PG",
+    "kkd\000kkd-Latn-NG",
+    "kke\000kke-Latn-GN",
+    "kkf\000kkf-Tibt-IN",
+    "kkg\000kkg-Latn-PH",
+    "kkh\000kkh-Lana-MM",
+    "kki\000kki-Latn-TZ",
+    "kkj\000kkj-Latn-CM",
+    "kkk\000kkk-Latn-SB",
+    "kkl\000kkl-Latn-ID",
+    "kkm\000kkm-Latn-NG",
+    "kko\000kko-Latn-SD",
+    "kkp\000kkp-Latn-AU",
+    "kkq\000kkq-Latn-CD",
+    "kkr\000kkr-Latn-NG",
+    "kks\000kks-Latn-NG",
+    "kkt\000kkt-Deva-NP",
+    "kku\000kku-Latn-NG",
+    "kkv\000kkv-Latn-ID",
+    "kkw\000kkw-Latn-CG",
+    "kkx\000kkx-Latn-ID",
+    "kky\000kky-Latn-AU",
+    "kkz\000kkz-Latn-CA",
+    "kl\000kl-Latn-GL",
+    "kla\000kla-Latn-US",
+    "klb\000klb-Latn-MX",
+    "klc\000klc-Latn-CM",
+    "kld\000kld-Latn-AU",
+    "kle\000kle-Deva-NP",
+    "klf\000klf-Latn-TD",
+    "klg\000klg-Latn-PH",
+    "klh\000klh-Latn-PG",
+    "kli\000kli-Latn-ID",
+    "klj\000klj-Arab-IR",
+    "klk\000klk-Latn-NG",
+    "kll\000kll-Latn-PH",
+    "klm\000klm-Latn-PG",
+    "kln\000kln-Latn-KE",
+    "klo\000klo-Latn-NG",
+    "klp\000klp-Latn-PG",
+    "klq\000klq-Latn-PG",
+    "klr\000klr-Deva-NP",
+    "kls\000kls-Latn-PK",
+    "klt\000klt-Latn-PG",
+    "klu\000klu-Latn-LR",
+    "klv\000klv-Latn-VU",
+    "klw\000klw-Latn-ID",
+    "klx\000klx-Latn-PG",
+    "kly\000kly-Latn-ID",
+    "klz\000klz-Latn-ID",
+    "km\000km-Khmr-KH",
+    "kma\000kma-Latn-GH",
+    "kmb\000kmb-Latn-AO",
+    "kmc\000kmc-Latn-CN",
+    "kmd\000kmd-Latn-PH",
+    "kme\000kme-Latn-CM",
+    "kmf\000kmf-Latn-PG",
+    "kmg\000kmg-Latn-PG",
+    "kmh\000kmh-Latn-PG",
+    "kmi\000kmi-Latn-NG",
+    "kmj\000kmj-Deva-IN",
+    "kmk\000kmk-Latn-PH",
+    "kml\000kml-Latn-PH",
+    "kmm\000kmm-Latn-IN",
+    "kmn\000kmn-Latn-PG",
+    "kmo\000kmo-Latn-PG",
+    "kmp\000kmp-Latn-CM",
+    "kmq\000kmq-Latn-ET",
+    "kms\000kms-Latn-PG",
+    "kmt\000kmt-Latn-ID",
+    "kmu\000kmu-Latn-PG",
+    "kmv\000kmv-Latn-BR",
+    "kmw\000kmw-Latn-CD",
+    "kmx\000kmx-Latn-PG",
+    "kmy\000kmy-Latn-NG",
+    "kmz\000kmz-Arab-IR",
+    "kn\000kn-Knda-IN",
+    "kna\000kna-Latn-NG",
+    "knb\000knb-Latn-PH",
+    "knd\000knd-Latn-ID",
+    "kne\000kne-Latn-PH",
+    "knf\000knf-Latn-GW",
+    "kni\000kni-Latn-NG",
+    "knj\000knj-Latn-GT",
+    "knk\000knk-Latn-SL",
+    "knl\000knl-Latn-ID",
+    "knm\000knm-Latn-BR",
+    "knn\000knn-Deva-IN",
+    "kno\000kno-Latn-SL",
+    "knp\000knp-Latn-CM",
+    "knq\000knq-Latn-MY",
+    "knr\000knr-Latn-PG",
+    "kns\000kns-Latn-MY",
+    "knt\000knt-Latn-BR",
+    "knu\000knu-Latn-GN",
+    "knv\000knv-Latn-PG",
+    "knw\000knw-Latn-NA",
+    "knx\000knx-Latn-ID",
+    "kny\000kny-Latn-CD",
+    "knz\000knz-Latn-BF",
+    "ko\000ko-Kore-KR",
+    "koa\000koa-Latn-PG",
+    "koc\000koc-Latn-NG",
+    "kod\000kod-Latn-ID",
+    "koe\000koe-Latn-SS",
+    "kof\000kof-Latn-NG",
+    "kog\000kog-Latn-CO",
+    "koh\000koh-Latn-CG",
+    "koi\000koi-Cyrl-RU",
+    "kok\000kok-Deva-IN",
+    "kol\000kol-Latn-PG",
+    "koo\000koo-Latn-UG",
+    "kop\000kop-Latn-PG",
+    "koq\000koq-Latn-GA",
+    "kos\000kos-Latn-FM",
+    "kot\000kot-Latn-CM",
+    "kou\000kou-Latn-TD",
+    "kov\000kov-Latn-NG",
+    "kow\000kow-Latn-NG",
+    "koy\000koy-Latn-US",
+    "koz\000koz-Latn-PG",
+    "kpa\000kpa-Latn-NG",
+    "kpc\000kpc-Latn-CO",
+    "kpd\000kpd-Latn-ID",
+    "kpe\000kpe-Latn-LR",
+    "kpf\000kpf-Latn-PG",
+    "kpg\000kpg-Latn-FM",
+    "kph\000kph-Latn-GH",
+    "kpi\000kpi-Latn-ID",
+    "kpj\000kpj-Latn-BR",
+    "kpk\000kpk-Latn-NG",
+    "kpl\000kpl-Latn-CD",
+    "kpm\000kpm-Latn-VN",
+    "kpn\000kpn-Latn-BR",
+    "kpo\000kpo-Latn-TG",
+    "kpq\000kpq-Latn-ID",
+    "kpr\000kpr-Latn-PG",
+    "kps\000kps-Latn-ID",
+    "kpt\000kpt-Cyrl-RU",
+    "kpu\000kpu-Latn-ID",
+    "kpw\000kpw-Latn-PG",
+    "kpx\000kpx-Latn-PG",
+    "kpy\000kpy-Cyrl-RU",
+    "kpz\000kpz-Latn-UG",
+    "kqa\000kqa-Latn-PG",
+    "kqb\000kqb-Latn-PG",
+    "kqc\000kqc-Latn-PG",
+    "kqd\000kqd-Syrc-IQ",
+    "kqe\000kqe-Latn-PH",
+    "kqf\000kqf-Latn-PG",
+    "kqg\000kqg-Latn-BF",
+    "kqh\000kqh-Latn-TZ",
+    "kqi\000kqi-Latn-PG",
+    "kqj\000kqj-Latn-PG",
+    "kqk\000kqk-Latn-BJ",
+    "kql\000kql-Latn-PG",
+    "kqm\000kqm-Latn-CI",
+    "kqn\000kqn-Latn-ZM",
+    "kqo\000kqo-Latn-LR",
+    "kqp\000kqp-Latn-TD",
+    "kqq\000kqq-Latn-BR",
+    "kqr\000kqr-Latn-MY",
+    "kqs\000kqs-Latn-GN",
+    "kqt\000kqt-Latn-MY",
+    "kqu\000kqu-Latn-ZA",
+    "kqv\000kqv-Latn-ID",
+    "kqw\000kqw-Latn-PG",
+    "kqx\000kqx-Latn-CM",
+    "kqy\000kqy-Ethi-ET",
+    "kqz\000kqz-Latn-ZA",
+    "kr\000kr-Latn-NG",
+    "kra\000kra-Deva-NP",
+    "krb\000krb-Latn-US",
+    "krc\000krc-Cyrl-RU",
+    "krd\000krd-Latn-TL",
+    "kre\000kre-Latn-BR",
+    "krf\000krf-Latn-VU",
+    "krh\000krh-Latn-NG",
+    "kri\000kri-Latn-SL",
+    "krj\000krj-Latn-PH",
+    "krk\000krk-Cyrl-RU",
+    "krl\000krl-Latn-RU",
+    "krn\000krn-Latn-LR",
+    "kro\000kro-Latn-LR",
+    "krp\000krp-Latn-NG",
+    "krr\000krr-Khmr-KH",
+    "krs\000krs-Latn-SS",
+    "krt\000krt-Latn-NE",
+    "kru\000kru-Deva-IN",
+    "krv\000krv-Khmr-KH",
+    "krw\000krw-Latn-LR",
+    "krx\000krx-Latn-SN",
+    "kry\000kry-Latn-AZ",
+    "krz\000krz-Latn-ID",
+    "ks\000ks-Arab-IN",
+    "ksb\000ksb-Latn-TZ",
+    "ksc\000ksc-Latn-PH",
+    "ksd\000ksd-Latn-PG",
+    "kse\000kse-Latn-PG",
+    "ksf\000ksf-Latn-CM",
+    "ksg\000ksg-Latn-SB",
+    "ksh\000ksh-Latn-DE",
+    "ksi\000ksi-Latn-PG",
+    "ksj\000ksj-Latn-PG",
+    "ksk\000ksk-Latn-US",
+    "ksl\000ksl-Latn-PG",
+    "ksm\000ksm-Latn-NG",
+    "ksn\000ksn-Latn-PH",
+    "kso\000kso-Latn-NG",
+    "ksp\000ksp-Latn-CF",
+    "ksq\000ksq-Latn-NG",
+    "ksr\000ksr-Latn-PG",
+    "kss\000kss-Latn-LR",
+    "kst\000kst-Latn-BF",
+    "ksu\000ksu-Mymr-IN",
+    "ksv\000ksv-Latn-CD",
+    "ksw\000ksw-Mymr-MM",
+    "ksx\000ksx-Latn-ID",
+    "ksz\000ksz-Deva-IN",
+    "kta\000kta-Latn-VN",
+    "ktb\000ktb-Ethi-ET",
+    "ktc\000ktc-Latn-NG",
+    "ktd\000ktd-Latn-AU",
+    "kte\000kte-Deva-NP",
+    "ktf\000ktf-Latn-CD",
+    "ktg\000ktg-Latn-AU",
+    "kth\000kth-Latn-TD",
+    "kti\000kti-Latn-ID",
+    "ktj\000ktj-Latn-CI",
+    "ktk\000ktk-Latn-PG",
+    "ktl\000ktl-Arab-IR",
+    "ktm\000ktm-Latn-PG",
+    "ktn\000ktn-Latn-BR",
+    "kto\000kto-Latn-PG",
+    "ktp\000ktp-Plrd-CN",
+    "ktq\000ktq-Latn-PH",
+    "kts\000kts-Latn-ID",
+    "ktt\000ktt-Latn-ID",
+    "ktu\000ktu-Latn-CD",
+    "ktv\000ktv-Latn-VN",
+    "ktw\000ktw-Latn-US",
+    "ktx\000ktx-Latn-BR",
+    "kty\000kty-Latn-CD",
+    "ktz\000ktz-Latn-NA",
+    "ku\000ku-Latn-TR",
+    "ku-AM\000ku-Cyrl-AM",
+    "ku-AZ\000ku-Cyrl-AZ",
+    "ku-Arab\000ku-Arab-IQ",
+    "ku-Cyrl\000ku-Cyrl-AM",
+    "ku-GE\000ku-Cyrl-GE",
+    "ku-IQ\000ku-Arab-IQ",
+    "ku-IR\000ku-Arab-IR",
+    "ku-LB\000ku-Arab-LB",
+    "ku-TM\000ku-Cyrl-TM",
+    "ku-Yezi\000ku-Yezi-GE",
+    "kub\000kub-Latn-NG",
+    "kuc\000kuc-Latn-ID",
+    "kud\000kud-Latn-PG",
+    "kue\000kue-Latn-PG",
+    "kuf\000kuf-Laoo-LA",
+    "kug\000kug-Latn-NG",
+    "kuh\000kuh-Latn-NG",
+    "kui\000kui-Latn-BR",
+    "kuj\000kuj-Latn-TZ",
+    "kuk\000kuk-Latn-ID",
+    "kul\000kul-Latn-NG",
+    "kum\000kum-Cyrl-RU",
+    "kun\000kun-Latn-ER",
+    "kuo\000kuo-Latn-PG",
+    "kup\000kup-Latn-PG",
+    "kuq\000kuq-Latn-BR",
+    "kus\000kus-Latn-GH",
+    "kut\000kut-Latn-CA",
+    "kuu\000kuu-Latn-US",
+    "kuv\000kuv-Latn-ID",
+    "kuw\000kuw-Latn-CF",
+    "kux\000kux-Latn-AU",
+    "kuy\000kuy-Latn-AU",
+    "kuz\000kuz-Latn-CL",
+    "kv\000kv-Cyrl-RU",
+    "kva\000kva-Cyrl-RU",
+    "kvb\000kvb-Latn-ID",
+    "kvc\000kvc-Latn-PG",
+    "kvd\000kvd-Latn-ID",
+    "kve\000kve-Latn-MY",
+    "kvf\000kvf-Latn-TD",
+    "kvg\000kvg-Latn-PG",
+    "kvh\000kvh-Latn-ID",
+    "kvi\000kvi-Latn-TD",
+    "kvj\000kvj-Latn-CM",
+    "kvl\000kvl-Latn-MM",
+    "kvm\000kvm-Latn-CM",
+    "kvn\000kvn-Latn-CO",
+    "kvo\000kvo-Latn-ID",
+    "kvp\000kvp-Latn-ID",
+    "kvq\000kvq-Mymr-MM",
+    "kvr\000kvr-Latn-ID",
+    "kvt\000kvt-Mymr-MM",
+    "kvv\000kvv-Latn-ID",
+    "kvw\000kvw-Latn-ID",
+    "kvx\000kvx-Arab-PK",
+    "kvy\000kvy-Kali-MM",
+    "kvz\000kvz-Latn-ID",
+    "kw\000kw-Latn-GB",
+    "kwa\000kwa-Latn-BR",
+    "kwb\000kwb-Latn-NG",
+    "kwc\000kwc-Latn-CG",
+    "kwd\000kwd-Latn-SB",
+    "kwe\000kwe-Latn-ID",
+    "kwf\000kwf-Latn-SB",
+    "kwg\000kwg-Latn-TD",
+    "kwh\000kwh-Latn-ID",
+    "kwi\000kwi-Latn-CO",
+    "kwj\000kwj-Latn-PG",
+    "kwk\000kwk-Latn-CA",
+    "kwl\000kwl-Latn-NG",
+    "kwm\000kwm-Latn-NA",
+    "kwn\000kwn-Latn-NA",
+    "kwo\000kwo-Latn-PG",
+    "kwp\000kwp-Latn-CI",
+    "kwr\000kwr-Latn-ID",
+    "kws\000kws-Latn-CD",
+    "kwt\000kwt-Latn-ID",
+    "kwu\000kwu-Latn-CM",
+    "kwv\000kwv-Latn-TD",
+    "kww\000kww-Latn-SR",
+    "kwx\000kwx-Deva-IN",
+    "kwy\000kwy-Latn-AO",
+    "kwz\000kwz-Latn-AO",
+    "kxa\000kxa-Latn-PG",
+    "kxb\000kxb-Latn-CI",
+    "kxc\000kxc-Latn-ET",
+    "kxd\000kxd-Latn-BN",
+    "kxf\000kxf-Mymr-MM",
+    "kxi\000kxi-Latn-MY",
+    "kxj\000kxj-Latn-TD",
+    "kxk\000kxk-Mymr-MM",
+    "kxm\000kxm-Thai-TH",
+    "kxn\000kxn-Latn-MY",
+    "kxo\000kxo-Latn-BR",
+    "kxp\000kxp-Arab-PK",
+    "kxq\000kxq-Latn-ID",
+    "kxr\000kxr-Latn-PG",
+    "kxt\000kxt-Latn-PG",
+    "kxv\000kxv-Latn-IN",
+    "kxw\000kxw-Latn-PG",
+    "kxx\000kxx-Latn-CG",
+    "kxy\000kxy-Latn-VN",
+    "kxz\000kxz-Latn-PG",
+    "ky\000ky-Cyrl-KG",
+    "ky-Arab\000ky-Arab-CN",
+    "ky-CN\000ky-Arab-CN",
+    "ky-Latn\000ky-Latn-TR",
+    "ky-TR\000ky-Latn-TR",
+    "kya\000kya-Latn-TZ",
+    "kyb\000kyb-Latn-PH",
+    "kyc\000kyc-Latn-PG",
+    "kyd\000kyd-Latn-ID",
+    "kye\000kye-Latn-GH",
+    "kyf\000kyf-Latn-CI",
+    "kyg\000kyg-Latn-PG",
+    "kyh\000kyh-Latn-US",
+    "kyi\000kyi-Latn-MY",
+    "kyj\000kyj-Latn-PH",
+    "kyk\000kyk-Latn-PH",
+    "kyl\000kyl-Latn-US",
+    "kym\000kym-Latn-CF",
+    "kyn\000kyn-Latn-PH",
+    "kyo\000kyo-Latn-ID",
+    "kyq\000kyq-Latn-TD",
+    "kyr\000kyr-Latn-BR",
+    "kys\000kys-Latn-MY",
+    "kyt\000kyt-Latn-ID",
+    "kyu\000kyu-Kali-MM",
+    "kyv\000kyv-Deva-NP",
+    "kyw\000kyw-Deva-IN",
+    "kyx\000kyx-Latn-PG",
+    "kyy\000kyy-Latn-PG",
+    "kyz\000kyz-Latn-BR",
+    "kza\000kza-Latn-BF",
+    "kzb\000kzb-Latn-ID",
+    "kzc\000kzc-Latn-CI",
+    "kzd\000kzd-Latn-ID",
+    "kze\000kze-Latn-PG",
+    "kzf\000kzf-Latn-ID",
+    "kzi\000kzi-Latn-MY",
+    "kzk\000kzk-Latn-SB",
+    "kzl\000kzl-Latn-ID",
+    "kzm\000kzm-Latn-ID",
+    "kzn\000kzn-Latn-MW",
+    "kzo\000kzo-Latn-GA",
+    "kzp\000kzp-Latn-ID",
+    "kzr\000kzr-Latn-CM",
+    "kzs\000kzs-Latn-MY",
+    "kzu\000kzu-Latn-ID",
+    "kzv\000kzv-Latn-ID",
+    "kzw\000kzw-Latn-BR",
+    "kzx\000kzx-Latn-ID",
+    "kzy\000kzy-Latn-CD",
+    "kzz\000kzz-Latn-ID",
+    "la\000la-Latn-VA",
+    "laa\000laa-Latn-PH",
+    "lab\000lab-Lina-GR",
+    "lac\000lac-Latn-MX",
+    "lad\000lad-Hebr-IL",
+    "lae\000lae-Deva-IN",
+    "lag\000lag-Latn-TZ",
+    "lah\000lah-Arab-PK",
+    "lai\000lai-Latn-MW",
+    "laj\000laj-Latn-UG",
+    "lal\000lal-Latn-CD",
+    "lam\000lam-Latn-ZM",
+    "lan\000lan-Latn-NG",
+    "lap\000lap-Latn-TD",
+    "laq\000laq-Latn-VN",
+    "lar\000lar-Latn-GH",
+    "las\000las-Latn-TG",
+    "lau\000lau-Latn-ID",
+    "law\000law-Latn-ID",
+    "lax\000lax-Latn-IN",
+    "laz\000laz-Latn-PG",
+    "lb\000lb-Latn-LU",
+    "lbb\000lbb-Latn-PG",
+    "lbe\000lbe-Cyrl-RU",
+    "lbf\000lbf-Deva-IN",
+    "lbi\000lbi-Latn-CM",
+    "lbj\000lbj-Tibt-IN",
+    "lbl\000lbl-Latn-PH",
+    "lbm\000lbm-Deva-IN",
+    "lbn\000lbn-Latn-LA",
+    "lbo\000lbo-Laoo-LA",
+    "lbq\000lbq-Latn-PG",
+    "lbr\000lbr-Deva-NP",
+    "lbt\000lbt-Latn-VN",
+    "lbu\000lbu-Latn-PG",
+    "lbv\000lbv-Latn-PG",
+    "lbw\000lbw-Latn-ID",
+    "lbx\000lbx-Latn-ID",
+    "lby\000lby-Latn-AU",
+    "lbz\000lbz-Latn-AU",
+    "lcc\000lcc-Latn-ID",
+    "lcd\000lcd-Latn-ID",
+    "lce\000lce-Latn-ID",
+    "lcf\000lcf-Latn-ID",
+    "lch\000lch-Latn-AO",
+    "lcl\000lcl-Latn-ID",
+    "lcm\000lcm-Latn-PG",
+    "lcp\000lcp-Thai-CN",
+    "lcq\000lcq-Latn-ID",
+    "lcs\000lcs-Latn-ID",
+    "lda\000lda-Latn-CI",
+    "ldb\000ldb-Latn-NG",
+    "ldd\000ldd-Latn-NG",
+    "ldg\000ldg-Latn-NG",
+    "ldh\000ldh-Latn-NG",
+    "ldi\000ldi-Latn-CG",
+    "ldj\000ldj-Latn-NG",
+    "ldk\000ldk-Latn-NG",
+    "ldl\000ldl-Latn-NG",
+    "ldm\000ldm-Latn-GN",
+    "ldn\000ldn-Latn-001",
+    "ldo\000ldo-Latn-NG",
+    "ldp\000ldp-Latn-NG",
+    "ldq\000ldq-Latn-NG",
+    "lea\000lea-Latn-CD",
+    "leb\000leb-Latn-ZM",
+    "lec\000lec-Latn-BO",
+    "led\000led-Latn-CD",
+    "lee\000lee-Latn-BF",
+    "lef\000lef-Latn-GH",
+    "leh\000leh-Latn-ZM",
+    "lei\000lei-Latn-PG",
+    "lej\000lej-Latn-CD",
+    "lek\000lek-Latn-PG",
+    "lel\000lel-Latn-CD",
+    "lem\000lem-Latn-CM",
+    "len\000len-Latn-SV",
+    "leo\000leo-Latn-CM",
+    "lep\000lep-Lepc-IN",
+    "leq\000leq-Latn-PG",
+    "ler\000ler-Latn-PG",
+    "les\000les-Latn-CD",
+    "let\000let-Latn-PG",
+    "leu\000leu-Latn-PG",
+    "lev\000lev-Latn-ID",
+    "lew\000lew-Latn-ID",
+    "lex\000lex-Latn-ID",
+    "ley\000ley-Latn-ID",
+    "lez\000lez-Cyrl-RU",
+    "lfa\000lfa-Latn-CM",
+    "lfn\000lfn-Latn-001",
+    "lg\000lg-Latn-UG",
+    "lga\000lga-Latn-SB",
+    "lgb\000lgb-Latn-SB",
+    "lgg\000lgg-Latn-UG",
+    "lgh\000lgh-Latn-VN",
+    "lgi\000lgi-Latn-ID",
+    "lgk\000lgk-Latn-VU",
+    "lgl\000lgl-Latn-SB",
+    "lgm\000lgm-Latn-CD",
+    "lgn\000lgn-Latn-ET",
+    "lgo\000lgo-Latn-SS",
+    "lgq\000lgq-Latn-GH",
+    "lgr\000lgr-Latn-SB",
+    "lgt\000lgt-Latn-PG",
+    "lgu\000lgu-Latn-SB",
+    "lgz\000lgz-Latn-CD",
+    "lha\000lha-Latn-VN",
+    "lhh\000lhh-Latn-ID",
+    "lhi\000lhi-Latn-CN",
+    "lhm\000lhm-Deva-NP",
+    "lhn\000lhn-Latn-MY",
+    "lhs\000lhs-Syrc-SY",
+    "lht\000lht-Latn-VU",
+    "lhu\000lhu-Latn-CN",
+    "li\000li-Latn-NL",
+    "lia\000lia-Latn-SL",
+    "lib\000lib-Latn-PG",
+    "lic\000lic-Latn-CN",
+    "lid\000lid-Latn-PG",
+    "lie\000lie-Latn-CD",
+    "lif\000lif-Deva-NP",
+    "lif-Limb\000lif-Limb-IN",
+    "lig\000lig-Latn-GH",
+    "lih\000lih-Latn-PG",
+    "lij\000lij-Latn-IT",
+    "lik\000lik-Latn-CD",
+    "lil\000lil-Latn-CA",
+    "lio\000lio-Latn-ID",
+    "lip\000lip-Latn-GH",
+    "liq\000liq-Latn-ET",
+    "lir\000lir-Latn-LR",
+    "lis\000lis-Lisu-CN",
+    "liu\000liu-Latn-SD",
+    "liv\000liv-Latn-LV",
+    "liw\000liw-Latn-ID",
+    "lix\000lix-Latn-ID",
+    "liy\000liy-Latn-CF",
+    "liz\000liz-Latn-CD",
+    "lja\000lja-Latn-AU",
+    "lje\000lje-Latn-ID",
+    "lji\000lji-Latn-ID",
+    "ljl\000ljl-Latn-ID",
+    "ljp\000ljp-Latn-ID",
+    "ljw\000ljw-Latn-AU",
+    "ljx\000ljx-Latn-AU",
+    "lka\000lka-Latn-TL",
+    "lkb\000lkb-Latn-KE",
+    "lkc\000lkc-Latn-VN",
+    "lkd\000lkd-Latn-BR",
+    "lke\000lke-Latn-UG",
+    "lkh\000lkh-Tibt-BT",
+    "lki\000lki-Arab-IR",
+    "lkj\000lkj-Latn-MY",
+    "lkl\000lkl-Latn-PG",
+    "lkm\000lkm-Latn-AU",
+    "lkn\000lkn-Latn-VU",
+    "lko\000lko-Latn-KE",
+    "lkr\000lkr-Latn-SS",
+    "lks\000lks-Latn-KE",
+    "lkt\000lkt-Latn-US",
+    "lku\000lku-Latn-AU",
+    "lky\000lky-Latn-SS",
+    "lla\000lla-Latn-NG",
+    "llb\000llb-Latn-MZ",
+    "llc\000llc-Latn-GN",
+    "lld\000lld-Latn-IT",
+    "lle\000lle-Latn-PG",
+    "llf\000llf-Latn-PG",
+    "llg\000llg-Latn-ID",
+    "lli\000lli-Latn-CG",
+    "llj\000llj-Latn-AU",
+    "llk\000llk-Latn-MY",
+    "lll\000lll-Latn-PG",
+    "llm\000llm-Latn-ID",
+    "lln\000lln-Latn-TD",
+    "llp\000llp-Latn-VU",
+    "llq\000llq-Latn-ID",
+    "llu\000llu-Latn-SB",
+    "llx\000llx-Latn-FJ",
+    "lma\000lma-Latn-GN",
+    "lmb\000lmb-Latn-VU",
+    "lmc\000lmc-Latn-AU",
+    "lmd\000lmd-Latn-SD",
+    "lme\000lme-Latn-TD",
+    "lmf\000lmf-Latn-ID",
+    "lmg\000lmg-Latn-PG",
+    "lmh\000lmh-Deva-NP",
+    "lmi\000lmi-Latn-CD",
+    "lmj\000lmj-Latn-ID",
+    "lmk\000lmk-Latn-IN",
+    "lml\000lml-Latn-VU",
+    "lmn\000lmn-Telu-IN",
+    "lmo\000lmo-Latn-IT",
+    "lmp\000lmp-Latn-CM",
+    "lmq\000lmq-Latn-ID",
+    "lmr\000lmr-Latn-ID",
+    "lmu\000lmu-Latn-VU",
+    "lmv\000lmv-Latn-FJ",
+    "lmw\000lmw-Latn-US",
+    "lmx\000lmx-Latn-CM",
+    "lmy\000lmy-Latn-ID",
+    "ln\000ln-Latn-CD",
+    "lna\000lna-Latn-CF",
+    "lnb\000lnb-Latn-NA",
+    "lnd\000lnd-Latn-ID",
+    "lng\000lng-Latn-HU",
+    "lnh\000lnh-Latn-MY",
+    "lni\000lni-Latn-PG",
+    "lnj\000lnj-Latn-AU",
+    "lnl\000lnl-Latn-CF",
+    "lnm\000lnm-Latn-PG",
+    "lnn\000lnn-Latn-VU",
+    "lns\000lns-Latn-CM",
+    "lnu\000lnu-Latn-NG",
+    "lnw\000lnw-Latn-AU",
+    "lnz\000lnz-Latn-CD",
+    "lo\000lo-Laoo-LA",
+    "loa\000loa-Latn-ID",
+    "lob\000lob-Latn-BF",
+    "loc\000loc-Latn-PH",
+    "loe\000loe-Latn-ID",
+    "log\000log-Latn-CD",
+    "loh\000loh-Latn-SS",
+    "loi\000loi-Latn-CI",
+    "loj\000loj-Latn-PG",
+    "lok\000lok-Latn-SL",
+    "lol\000lol-Latn-CD",
+    "lom\000lom-Latn-LR",
+    "lon\000lon-Latn-MW",
+    "loo\000loo-Latn-CD",
+    "lop\000lop-Latn-NG",
+    "loq\000loq-Latn-CD",
+    "lor\000lor-Latn-CI",
+    "los\000los-Latn-PG",
+    "lot\000lot-Latn-SS",
+    "lou\000lou-Latn-US",
+    "low\000low-Latn-MY",
+    "lox\000lox-Latn-ID",
+    "loy\000loy-Deva-NP",
+    "loz\000loz-Latn-ZM",
+    "lpa\000lpa-Latn-VU",
+    "lpe\000lpe-Latn-ID",
+    "lpn\000lpn-Latn-MM",
+    "lpo\000lpo-Plrd-CN",
+    "lpx\000lpx-Latn-SS",
+    "lqr\000lqr-Latn-SS",
+    "lra\000lra-Latn-MY",
+    "lrc\000lrc-Arab-IR",
+    "lrg\000lrg-Latn-AU",
+    "lri\000lri-Latn-KE",
+    "lrk\000lrk-Arab-PK",
+    "lrl\000lrl-Arab-IR",
+    "lrm\000lrm-Latn-KE",
+    "lrn\000lrn-Latn-ID",
+    "lro\000lro-Latn-SD",
+    "lrt\000lrt-Latn-ID",
+    "lrv\000lrv-Latn-VU",
+    "lrz\000lrz-Latn-VU",
+    "lsa\000lsa-Arab-IR",
+    "lsd\000lsd-Hebr-IL",
+    "lse\000lse-Latn-CD",
+    "lsi\000lsi-Latn-MM",
+    "lsm\000lsm-Latn-UG",
+    "lsr\000lsr-Latn-PG",
+    "lss\000lss-Arab-PK",
+    "lt\000lt-Latn-LT",
+    "ltc\000ltc-Hant-CN",
+    "ltg\000ltg-Latn-LV",
+    "lth\000lth-Latn-UG",
+    "lti\000lti-Latn-ID",
+    "ltn\000ltn-Latn-BR",
+    "lto\000lto-Latn-KE",
+    "lts\000lts-Latn-KE",
+    "ltu\000ltu-Latn-ID",
+    "lu\000lu-Latn-CD",
+    "lua\000lua-Latn-CD",
+    "luc\000luc-Latn-UG",
+    "lud\000lud-Latn-RU",
+    "lue\000lue-Latn-ZM",
+    "luf\000luf-Latn-PG",
+    "luh\000luh-Hans-CN",
+    "lui\000lui-Latn-US",
+    "luj\000luj-Latn-CD",
+    "luk\000luk-Tibt-BT",
+    "lul\000lul-Latn-SS",
+    "lum\000lum-Latn-AO",
+    "lun\000lun-Latn-ZM",
+    "luo\000luo-Latn-KE",
+    "lup\000lup-Latn-GA",
+    "luq\000luq-Latn-CU",
+    "lur\000lur-Latn-ID",
+    "lus\000lus-Latn-IN",
+    "lut\000lut-Latn-US",
+    "luu\000luu-Deva-NP",
+    "luv\000luv-Arab-OM",
+    "luw\000luw-Latn-CM",
+    "luy\000luy-Latn-KE",
+    "luz\000luz-Arab-IR",
+    "lv\000lv-Latn-LV",
+    "lva\000lva-Latn-TL",
+    "lvi\000lvi-Latn-LA",
+    "lvk\000lvk-Latn-SB",
+    "lvl\000lvl-Latn-CD",
+    "lvu\000lvu-Latn-ID",
+    "lwa\000lwa-Latn-CD",
+    "lwe\000lwe-Latn-ID",
+    "lwg\000lwg-Latn-KE",
+    "lwh\000lwh-Latn-VN",
+    "lwl\000lwl-Thai-TH",
+    "lwm\000lwm-Thai-CN",
+    "lwo\000lwo-Latn-SS",
+    "lwt\000lwt-Latn-ID",
+    "lww\000lww-Latn-VU",
+    "lxm\000lxm-Latn-PG",
+    "lya\000lya-Tibt-BT",
+    "lyn\000lyn-Latn-ZM",
+    "lzh\000lzh-Hant-CN",
+    "lzl\000lzl-Latn-VU",
+    "lzn\000lzn-Latn-MM",
+    "lzz\000lzz-Latn-TR",
+    "lzz-GE\000lzz-Geor-GE",
+    "lzz-Geor\000lzz-Geor-GE",
+    "maa\000maa-Latn-MX",
+    "mab\000mab-Latn-MX",
+    "mad\000mad-Latn-ID",
+    "mae\000mae-Latn-NG",
+    "maf\000maf-Latn-CM",
+    "mag\000mag-Deva-IN",
+    "mai\000mai-Deva-IN",
+    "maj\000maj-Latn-MX",
+    "mak\000mak-Latn-ID",
+    "mam\000mam-Latn-GT",
+    "man\000man-Latn-GM",
+    "man-Nkoo\000man-Nkoo-GN",
+    "maq\000maq-Latn-MX",
+    "mas\000mas-Latn-KE",
+    "mat\000mat-Latn-MX",
+    "mau\000mau-Latn-MX",
+    "mav\000mav-Latn-BR",
+    "maw\000maw-Latn-GH",
+    "max\000max-Latn-ID",
+    "maz\000maz-Latn-MX",
+    "mba\000mba-Latn-PH",
+    "mbb\000mbb-Latn-PH",
+    "mbc\000mbc-Latn-BR",
+    "mbd\000mbd-Latn-PH",
+    "mbf\000mbf-Latn-SG",
+    "mbh\000mbh-Latn-PG",
+    "mbi\000mbi-Latn-PH",
+    "mbj\000mbj-Latn-BR",
+    "mbk\000mbk-Latn-PG",
+    "mbl\000mbl-Latn-BR",
+    "mbm\000mbm-Latn-CG",
+    "mbn\000mbn-Latn-CO",
+    "mbo\000mbo-Latn-CM",
+    "mbp\000mbp-Latn-CO",
+    "mbq\000mbq-Latn-PG",
+    "mbr\000mbr-Latn-CO",
+    "mbs\000mbs-Latn-PH",
+    "mbt\000mbt-Latn-PH",
+    "mbu\000mbu-Latn-NG",
+    "mbv\000mbv-Latn-GN",
+    "mbw\000mbw-Latn-PG",
+    "mbx\000mbx-Latn-PG",
+    "mby\000mby-Arab-PK",
+    "mbz\000mbz-Latn-MX",
+    "mca\000mca-Latn-PY",
+    "mcb\000mcb-Latn-PE",
+    "mcc\000mcc-Latn-PG",
+    "mcd\000mcd-Latn-PE",
+    "mce\000mce-Latn-MX",
+    "mcf\000mcf-Latn-PE",
+    "mcg\000mcg-Latn-VE",
+    "mch\000mch-Latn-VE",
+    "mci\000mci-Latn-PG",
+    "mcj\000mcj-Latn-NG",
+    "mck\000mck-Latn-AO",
+    "mcl\000mcl-Latn-CO",
+    "mcm\000mcm-Latn-MY",
+    "mcn\000mcn-Latn-TD",
+    "mco\000mco-Latn-MX",
+    "mcp\000mcp-Latn-CM",
+    "mcq\000mcq-Latn-PG",
+    "mcr\000mcr-Latn-PG",
+    "mcs\000mcs-Latn-CM",
+    "mct\000mct-Latn-CM",
+    "mcu\000mcu-Latn-CM",
+    "mcv\000mcv-Latn-PG",
+    "mcw\000mcw-Latn-TD",
+    "mcx\000mcx-Latn-CF",
+    "mcy\000mcy-Latn-PG",
+    "mcz\000mcz-Latn-PG",
+    "mda\000mda-Latn-NG",
+    "mdb\000mdb-Latn-PG",
+    "mdc\000mdc-Latn-PG",
+    "mdd\000mdd-Latn-CM",
+    "mde\000mde-Arab-TD",
+    "mdf\000mdf-Cyrl-RU",
+    "mdg\000mdg-Latn-TD",
+    "mdh\000mdh-Latn-PH",
+    "mdi\000mdi-Latn-CD",
+    "mdj\000mdj-Latn-CD",
+    "mdk\000mdk-Latn-CD",
+    "mdm\000mdm-Latn-CD",
+    "mdn\000mdn-Latn-CF",
+    "mdp\000mdp-Latn-CD",
+    "mdq\000mdq-Latn-CD",
+    "mdr\000mdr-Latn-ID",
+    "mds\000mds-Latn-PG",
+    "mdt\000mdt-Latn-CG",
+    "mdu\000mdu-Latn-CG",
+    "mdv\000mdv-Latn-MX",
+    "mdw\000mdw-Latn-CG",
+    "mdx\000mdx-Ethi-ET",
+    "mdy\000mdy-Ethi-ET",
+    "mdz\000mdz-Latn-BR",
+    "mea\000mea-Latn-CM",
+    "meb\000meb-Latn-PG",
+    "mec\000mec-Latn-AU",
+    "med\000med-Latn-PG",
+    "mee\000mee-Latn-PG",
+    "meh\000meh-Latn-MX",
+    "mej\000mej-Latn-ID",
+    "mek\000mek-Latn-PG",
+    "mel\000mel-Latn-MY",
+    "mem\000mem-Latn-AU",
+    "men\000men-Latn-SL",
+    "meo\000meo-Latn-MY",
+    "mep\000mep-Latn-AU",
+    "meq\000meq-Latn-CM",
+    "mer\000mer-Latn-KE",
+    "mes\000mes-Latn-TD",
+    "met\000met-Latn-PG",
+    "meu\000meu-Latn-PG",
+    "mev\000mev-Latn-LR",
+    "mew\000mew-Latn-NG",
+    "mey\000mey-Arab-DZ",
+    "mey-Latn\000mey-Latn-SN",
+    "mey-SN\000mey-Latn-SN",
+    "mez\000mez-Latn-US",
+    "mfa\000mfa-Arab-TH",
+    "mfb\000mfb-Latn-ID",
+    "mfc\000mfc-Latn-CD",
+    "mfd\000mfd-Latn-CM",
+    "mfe\000mfe-Latn-MU",
+    "mff\000mff-Latn-CM",
+    "mfg\000mfg-Latn-GN",
+    "mfh\000mfh-Latn-CM",
+    "mfi\000mfi-Arab-CM",
+    "mfj\000mfj-Latn-CM",
+    "mfk\000mfk-Latn-CM",
+    "mfl\000mfl-Latn-NG",
+    "mfm\000mfm-Latn-NG",
+    "mfn\000mfn-Latn-NG",
+    "mfo\000mfo-Latn-NG",
+    "mfp\000mfp-Latn-ID",
+    "mfq\000mfq-Latn-TG",
+    "mfr\000mfr-Latn-AU",
+    "mft\000mft-Latn-PG",
+    "mfu\000mfu-Latn-AO",
+    "mfv\000mfv-Latn-SN",
+    "mfw\000mfw-Latn-PG",
+    "mfx\000mfx-Latn-ET",
+    "mfy\000mfy-Latn-MX",
+    "mfz\000mfz-Latn-SS",
+    "mg\000mg-Latn-MG",
+    "mga\000mga-Latg-IE",
+    "mgb\000mgb-Latn-TD",
+    "mgc\000mgc-Latn-SS",
+    "mgd\000mgd-Latn-SS",
+    "mge\000mge-Latn-TD",
+    "mgf\000mgf-Latn-ID",
+    "mgg\000mgg-Latn-CM",
+    "mgh\000mgh-Latn-MZ",
+    "mgi\000mgi-Latn-NG",
+    "mgj\000mgj-Latn-NG",
+    "mgk\000mgk-Latn-ID",
+    "mgl\000mgl-Latn-PG",
+    "mgm\000mgm-Latn-TL",
+    "mgn\000mgn-Latn-CF",
+    "mgo\000mgo-Latn-CM",
+    "mgp\000mgp-Deva-NP",
+    "mgq\000mgq-Latn-TZ",
+    "mgr\000mgr-Latn-ZM",
+    "mgs\000mgs-Latn-TZ",
+    "mgt\000mgt-Latn-PG",
+    "mgu\000mgu-Latn-PG",
+    "mgv\000mgv-Latn-TZ",
+    "mgw\000mgw-Latn-TZ",
+    "mgy\000mgy-Latn-TZ",
+    "mgz\000mgz-Latn-TZ",
+    "mh\000mh-Latn-MH",
+    "mhb\000mhb-Latn-GA",
+    "mhc\000mhc-Latn-MX",
+    "mhd\000mhd-Latn-TZ",
+    "mhe\000mhe-Latn-MY",
+    "mhf\000mhf-Latn-PG",
+    "mhg\000mhg-Latn-AU",
+    "mhi\000mhi-Latn-UG",
+    "mhj\000mhj-Arab-AF",
+    "mhk\000mhk-Latn-CM",
+    "mhl\000mhl-Latn-PG",
+    "mhm\000mhm-Latn-MZ",
+    "mhn\000mhn-Latn-IT",
+    "mho\000mho-Latn-ZM",
+    "mhp\000mhp-Latn-ID",
+    "mhq\000mhq-Latn-US",
+    "mhs\000mhs-Latn-ID",
+    "mht\000mht-Latn-VE",
+    "mhu\000mhu-Latn-IN",
+    "mhw\000mhw-Latn-BW",
+    "mhx\000mhx-Latn-MM",
+    "mhy\000mhy-Latn-ID",
+    "mhz\000mhz-Latn-ID",
+    "mi\000mi-Latn-NZ",
+    "mia\000mia-Latn-US",
+    "mib\000mib-Latn-MX",
+    "mic\000mic-Latn-CA",
+    "mid\000mid-Mand-IQ",
+    "mie\000mie-Latn-MX",
+    "mif\000mif-Latn-CM",
+    "mig\000mig-Latn-MX",
+    "mih\000mih-Latn-MX",
+    "mii\000mii-Latn-MX",
+    "mij\000mij-Latn-CM",
+    "mik\000mik-Latn-US",
+    "mil\000mil-Latn-MX",
+    "mim\000mim-Latn-MX",
+    "min\000min-Latn-ID",
+    "mio\000mio-Latn-MX",
+    "mip\000mip-Latn-MX",
+    "miq\000miq-Latn-NI",
+    "mir\000mir-Latn-MX",
+    "mit\000mit-Latn-MX",
+    "miu\000miu-Latn-MX",
+    "miw\000miw-Latn-PG",
+    "mix\000mix-Latn-MX",
+    "miy\000miy-Latn-MX",
+    "miz\000miz-Latn-MX",
+    "mjb\000mjb-Latn-TL",
+    "mjc\000mjc-Latn-MX",
+    "mjd\000mjd-Latn-US",
+    "mje\000mje-Latn-TD",
+    "mjg\000mjg-Latn-CN",
+    "mjh\000mjh-Latn-TZ",
+    "mji\000mji-Latn-CN",
+    "mjj\000mjj-Latn-PG",
+    "mjk\000mjk-Latn-PG",
+    "mjl\000mjl-Deva-IN",
+    "mjm\000mjm-Latn-PG",
+    "mjn\000mjn-Latn-PG",
+    "mjq\000mjq-Mlym-IN",
+    "mjr\000mjr-Mlym-IN",
+    "mjs\000mjs-Latn-NG",
+    "mjt\000mjt-Deva-IN",
+    "mju\000mju-Telu-IN",
+    "mjv\000mjv-Mlym-IN",
+    "mjw\000mjw-Latn-IN",
+    "mjx\000mjx-Latn-BD",
+    "mjy\000mjy-Latn-US",
+    "mjz\000mjz-Deva-NP",
+    "mk\000mk-Cyrl-MK",
+    "mka\000mka-Latn-CI",
+    "mkb\000mkb-Deva-IN",
+    "mkc\000mkc-Latn-PG",
+    "mke\000mke-Deva-IN",
+    "mkf\000mkf-Latn-NG",
+    "mki\000mki-Arab-PK",
+    "mkj\000mkj-Latn-FM",
+    "mkk\000mkk-Latn-CM",
+    "mkl\000mkl-Latn-BJ",
+    "mkm\000mkm-Thai-TH",
+    "mkn\000mkn-Latn-ID",
+    "mko\000mko-Latn-NG",
+    "mkp\000mkp-Latn-PG",
+    "mkr\000mkr-Latn-PG",
+    "mks\000mks-Latn-MX",
+    "mkt\000mkt-Latn-NC",
+    "mkv\000mkv-Latn-VU",
+    "mkw\000mkw-Latn-CG",
+    "mkx\000mkx-Latn-PH",
+    "mky\000mky-Latn-ID",
+    "mkz\000mkz-Latn-TL",
+    "ml\000ml-Mlym-IN",
+    "mla\000mla-Latn-VU",
+    "mlb\000mlb-Latn-CM",
+    "mlc\000mlc-Latn-VN",
+    "mle\000mle-Latn-PG",
+    "mlf\000mlf-Thai-LA",
+    "mlh\000mlh-Latn-PG",
+    "mli\000mli-Latn-ID",
+    "mlj\000mlj-Latn-TD",
+    "mlk\000mlk-Latn-KE",
+    "mll\000mll-Latn-VU",
+    "mln\000mln-Latn-SB",
+    "mlo\000mlo-Latn-SN",
+    "mlp\000mlp-Latn-PG",
+    "mlr\000mlr-Latn-CM",
+    "mls\000mls-Latn-SD",
+    "mlu\000mlu-Latn-SB",
+    "mlv\000mlv-Latn-VU",
+    "mlw\000mlw-Latn-CM",
+    "mlx\000mlx-Latn-VU",
+    "mlz\000mlz-Latn-PH",
+    "mma\000mma-Latn-NG",
+    "mmb\000mmb-Latn-ID",
+    "mmc\000mmc-Latn-MX",
+    "mmd\000mmd-Latn-CN",
+    "mme\000mme-Latn-VU",
+    "mmf\000mmf-Latn-NG",
+    "mmg\000mmg-Latn-VU",
+    "mmh\000mmh-Latn-BR",
+    "mmi\000mmi-Latn-PG",
+    "mmm\000mmm-Latn-VU",
+    "mmn\000mmn-Latn-PH",
+    "mmo\000mmo-Latn-PG",
+    "mmp\000mmp-Latn-PG",
+    "mmq\000mmq-Latn-PG",
+    "mmr\000mmr-Latn-CN",
+    "mmt\000mmt-Latn-PG",
+    "mmu\000mmu-Latn-CM",
+    "mmv\000mmv-Latn-BR",
+    "mmw\000mmw-Latn-VU",
+    "mmx\000mmx-Latn-PG",
+    "mmy\000mmy-Latn-TD",
+    "mmz\000mmz-Latn-CD",
+    "mn\000mn-Cyrl-MN",
+    "mn-CN\000mn-Mong-CN",
+    "mn-Mong\000mn-Mong-CN",
+    "mna\000mna-Latn-PG",
+    "mnb\000mnb-Latn-ID",
+    "mnc\000mnc-Mong-CN",
+    "mnd\000mnd-Latn-BR",
+    "mne\000mne-Latn-TD",
+    "mnf\000mnf-Latn-CM",
+    "mng\000mng-Latn-VN",
+    "mnh\000mnh-Latn-CD",
+    "mni\000mni-Beng-IN",
+    "mnj\000mnj-Arab-AF",
+    "mnk\000mnk-Latn-GM",
+    "mnl\000mnl-Latn-VU",
+    "mnm\000mnm-Latn-PG",
+    "mnn\000mnn-Latn-VN",
+    "mnp\000mnp-Latn-CN",
+    "mnq\000mnq-Latn-MY",
+    "mnr\000mnr-Latn-US",
+    "mns\000mns-Cyrl-RU",
+    "mnu\000mnu-Latn-ID",
+    "mnv\000mnv-Latn-SB",
+    "mnw\000mnw-Mymr-MM",
+    "mnx\000mnx-Latn-ID",
+    "mny\000mny-Latn-MZ",
+    "mnz\000mnz-Latn-ID",
+    "mo\000mo-Latn-RO",
+    "moa\000moa-Latn-CI",
+    "moc\000moc-Latn-AR",
+    "mod\000mod-Latn-US",
+    "moe\000moe-Latn-CA",
+    "mog\000mog-Latn-ID",
+    "moh\000moh-Latn-CA",
+    "moi\000moi-Latn-NG",
+    "moj\000moj-Latn-CG",
+    "mok\000mok-Latn-ID",
+    "mom\000mom-Latn-NI",
+    "moo\000moo-Latn-VN",
+    "mop\000mop-Latn-BZ",
+    "moq\000moq-Latn-ID",
+    "mor\000mor-Latn-SD",
+    "mos\000mos-Latn-BF",
+    "mot\000mot-Latn-CO",
+    "mou\000mou-Latn-TD",
+    "mov\000mov-Latn-US",
+    "mow\000mow-Latn-CG",
+    "mox\000mox-Latn-PG",
+    "moy\000moy-Latn-ET",
+    "moz\000moz-Latn-TD",
+    "mpa\000mpa-Latn-TZ",
+    "mpb\000mpb-Latn-AU",
+    "mpc\000mpc-Latn-AU",
+    "mpd\000mpd-Latn-BR",
+    "mpe\000mpe-Latn-ET",
+    "mpg\000mpg-Latn-TD",
+    "mph\000mph-Latn-AU",
+    "mpi\000mpi-Latn-CM",
+    "mpj\000mpj-Latn-AU",
+    "mpk\000mpk-Latn-TD",
+    "mpl\000mpl-Latn-PG",
+    "mpm\000mpm-Latn-MX",
+    "mpn\000mpn-Latn-PG",
+    "mpo\000mpo-Latn-PG",
+    "mpp\000mpp-Latn-PG",
+    "mpq\000mpq-Latn-BR",
+    "mpr\000mpr-Latn-SB",
+    "mps\000mps-Latn-PG",
+    "mpt\000mpt-Latn-PG",
+    "mpu\000mpu-Latn-BR",
+    "mpv\000mpv-Latn-PG",
+    "mpw\000mpw-Latn-BR",
+    "mpx\000mpx-Latn-PG",
+    "mpy\000mpy-Latn-ID",
+    "mpz\000mpz-Thai-TH",
+    "mqa\000mqa-Latn-ID",
+    "mqb\000mqb-Latn-CM",
+    "mqc\000mqc-Latn-ID",
+    "mqe\000mqe-Latn-PG",
+    "mqf\000mqf-Latn-ID",
+    "mqg\000mqg-Latn-ID",
+    "mqh\000mqh-Latn-MX",
+    "mqi\000mqi-Latn-ID",
+    "mqj\000mqj-Latn-ID",
+    "mqk\000mqk-Latn-PH",
+    "mql\000mql-Latn-BJ",
+    "mqm\000mqm-Latn-PF",
+    "mqn\000mqn-Latn-ID",
+    "mqo\000mqo-Latn-ID",
+    "mqp\000mqp-Latn-ID",
+    "mqq\000mqq-Latn-MY",
+    "mqr\000mqr-Latn-ID",
+    "mqs\000mqs-Latn-ID",
+    "mqt\000mqt-Latn-TH",
+    "mqu\000mqu-Latn-SS",
+    "mqv\000mqv-Latn-PG",
+    "mqw\000mqw-Latn-PG",
+    "mqx\000mqx-Latn-ID",
+    "mqy\000mqy-Latn-ID",
+    "mqz\000mqz-Latn-PG",
+    "mr\000mr-Deva-IN",
+    "mra\000mra-Thai-TH",
+    "mrb\000mrb-Latn-VU",
+    "mrc\000mrc-Latn-US",
+    "mrd\000mrd-Deva-NP",
+    "mrf\000mrf-Latn-ID",
+    "mrg\000mrg-Latn-IN",
+    "mrh\000mrh-Latn-IN",
+    "mrj\000mrj-Cyrl-RU",
+    "mrk\000mrk-Latn-NC",
+    "mrl\000mrl-Latn-FM",
+    "mrm\000mrm-Latn-VU",
+    "mrn\000mrn-Latn-SB",
+    "mro\000mro-Mroo-BD",
+    "mrp\000mrp-Latn-VU",
+    "mrq\000mrq-Latn-PF",
+    "mrr\000mrr-Deva-IN",
+    "mrs\000mrs-Latn-VU",
+    "mrt\000mrt-Latn-NG",
+    "mru\000mru-Latn-CM",
+    "mrv\000mrv-Latn-PF",
+    "mrw\000mrw-Latn-PH",
+    "mrx\000mrx-Latn-ID",
+    "mry\000mry-Latn-PH",
+    "mrz\000mrz-Latn-ID",
+    "ms\000ms-Latn-MY",
+    "ms-CC\000ms-Arab-CC",
+    "msb\000msb-Latn-PH",
+    "mse\000mse-Latn-TD",
+    "msf\000msf-Latn-ID",
+    "msg\000msg-Latn-ID",
+    "msh\000msh-Latn-MG",
+    "msi\000msi-Latn-MY",
+    "msj\000msj-Latn-CD",
+    "msk\000msk-Latn-PH",
+    "msl\000msl-Latn-ID",
+    "msm\000msm-Latn-PH",
+    "msn\000msn-Latn-VU",
+    "mso\000mso-Latn-ID",
+    "msp\000msp-Latn-BR",
+    "msq\000msq-Latn-NC",
+    "mss\000mss-Latn-ID",
+    "msu\000msu-Latn-PG",
+    "msv\000msv-Latn-CM",
+    "msw\000msw-Latn-GW",
+    "msx\000msx-Latn-PG",
+    "msy\000msy-Latn-PG",
+    "msz\000msz-Latn-PG",
+    "mt\000mt-Latn-MT",
+    "mta\000mta-Latn-PH",
+    "mtb\000mtb-Latn-CI",
+    "mtc\000mtc-Latn-PG",
+    "mtd\000mtd-Latn-ID",
+    "mte\000mte-Latn-SB",
+    "mtf\000mtf-Latn-PG",
+    "mtg\000mtg-Latn-ID",
+    "mth\000mth-Latn-ID",
+    "mti\000mti-Latn-PG",
+    "mtj\000mtj-Latn-ID",
+    "mtk\000mtk-Latn-CM",
+    "mtl\000mtl-Latn-NG",
+    "mtm\000mtm-Cyrl-RU",
+    "mtn\000mtn-Latn-NI",
+    "mto\000mto-Latn-MX",
+    "mtp\000mtp-Latn-BO",
+    "mtq\000mtq-Latn-VN",
+    "mtr\000mtr-Deva-IN",
+    "mts\000mts-Latn-PE",
+    "mtt\000mtt-Latn-VU",
+    "mtu\000mtu-Latn-MX",
+    "mtv\000mtv-Latn-PG",
+    "mtw\000mtw-Latn-PH",
+    "mtx\000mtx-Latn-MX",
+    "mty\000mty-Latn-PG",
+    "mua\000mua-Latn-CM",
+    "mub\000mub-Latn-TD",
+    "muc\000muc-Latn-CM",
+    "mud\000mud-Cyrl-RU",
+    "mue\000mue-Latn-EC",
+    "mug\000mug-Latn-CM",
+    "muh\000muh-Latn-SS",
+    "mui\000mui-Latn-ID",
+    "muj\000muj-Latn-TD",
+    "muk\000muk-Tibt-NP",
+    "mum\000mum-Latn-PG",
+    "muo\000muo-Latn-CM",
+    "muq\000muq-Latn-CN",
+    "mur\000mur-Latn-SS",
+    "mus\000mus-Latn-US",
+    "mut\000mut-Deva-IN",
+    "muu\000muu-Latn-KE",
+    "muv\000muv-Taml-IN",
+    "mux\000mux-Latn-PG",
+    "muy\000muy-Latn-CM",
+    "muz\000muz-Ethi-ET",
+    "mva\000mva-Latn-PG",
+    "mvd\000mvd-Latn-ID",
+    "mve\000mve-Arab-PK",
+    "mvf\000mvf-Mong-CN",
+    "mvg\000mvg-Latn-MX",
+    "mvh\000mvh-Latn-TD",
+    "mvk\000mvk-Latn-PG",
+    "mvl\000mvl-Latn-AU",
+    "mvn\000mvn-Latn-PG",
+    "mvo\000mvo-Latn-SB",
+    "mvp\000mvp-Latn-ID",
+    "mvq\000mvq-Latn-PG",
+    "mvr\000mvr-Latn-ID",
+    "mvs\000mvs-Latn-ID",
+    "mvt\000mvt-Latn-VU",
+    "mvu\000mvu-Latn-TD",
+    "mvv\000mvv-Latn-MY",
+    "mvw\000mvw-Latn-TZ",
+    "mvx\000mvx-Latn-ID",
+    "mvy\000mvy-Arab-PK",
+    "mvz\000mvz-Ethi-ET",
+    "mwa\000mwa-Latn-PG",
+    "mwb\000mwb-Latn-PG",
+    "mwc\000mwc-Latn-PG",
+    "mwe\000mwe-Latn-TZ",
+    "mwf\000mwf-Latn-AU",
+    "mwg\000mwg-Latn-PG",
+    "mwh\000mwh-Latn-PG",
+    "mwi\000mwi-Latn-VU",
+    "mwk\000mwk-Latn-ML",
+    "mwl\000mwl-Latn-PT",
+    "mwm\000mwm-Latn-TD",
+    "mwn\000mwn-Latn-ZM",
+    "mwo\000mwo-Latn-VU",
+    "mwp\000mwp-Latn-AU",
+    "mwq\000mwq-Latn-MM",
+    "mwr\000mwr-Deva-IN",
+    "mws\000mws-Latn-KE",
+    "mwt\000mwt-Mymr-MM",
+    "mwu\000mwu-Latn-SS",
+    "mwv\000mwv-Latn-ID",
+    "mww\000mww-Hmnp-US",
+    "mwz\000mwz-Latn-CD",
+    "mxa\000mxa-Latn-MX",
+    "mxb\000mxb-Latn-MX",
+    "mxc\000mxc-Latn-ZW",
+    "mxd\000mxd-Latn-ID",
+    "mxe\000mxe-Latn-VU",
+    "mxf\000mxf-Latn-CM",
+    "mxg\000mxg-Latn-AO",
+    "mxh\000mxh-Latn-CD",
+    "mxi\000mxi-Latn-ES",
+    "mxj\000mxj-Latn-IN",
+    "mxk\000mxk-Latn-PG",
+    "mxl\000mxl-Latn-BJ",
+    "mxm\000mxm-Latn-PG",
+    "mxn\000mxn-Latn-ID",
+    "mxo\000mxo-Latn-ZM",
+    "mxp\000mxp-Latn-MX",
+    "mxq\000mxq-Latn-MX",
+    "mxr\000mxr-Latn-MY",
+    "mxs\000mxs-Latn-MX",
+    "mxt\000mxt-Latn-MX",
+    "mxu\000mxu-Latn-CM",
+    "mxv\000mxv-Latn-MX",
+    "mxw\000mxw-Latn-PG",
+    "mxx\000mxx-Latn-CI",
+    "mxy\000mxy-Latn-MX",
+    "mxz\000mxz-Latn-ID",
+    "my\000my-Mymr-MM",
+    "myb\000myb-Latn-TD",
+    "myc\000myc-Latn-CD",
+    "mye\000mye-Latn-GA",
+    "myf\000myf-Latn-ET",
+    "myg\000myg-Latn-CM",
+    "myh\000myh-Latn-US",
+    "myj\000myj-Latn-SS",
+    "myk\000myk-Latn-ML",
+    "myl\000myl-Latn-ID",
+    "mym\000mym-Ethi-ET",
+    "myp\000myp-Latn-BR",
+    "myr\000myr-Latn-PE",
+    "myu\000myu-Latn-BR",
+    "myv\000myv-Cyrl-RU",
+    "myw\000myw-Latn-PG",
+    "myx\000myx-Latn-UG",
+    "myy\000myy-Latn-CO",
+    "myz\000myz-Mand-IR",
+    "mza\000mza-Latn-MX",
+    "mzb\000mzb-Arab-DZ",
+    "mzd\000mzd-Latn-CM",
+    "mze\000mze-Latn-PG",
+    "mzh\000mzh-Latn-AR",
+    "mzi\000mzi-Latn-MX",
+    "mzj\000mzj-Latn-LR",
+    "mzk\000mzk-Latn-NG",
+    "mzl\000mzl-Latn-MX",
+    "mzm\000mzm-Latn-NG",
+    "mzn\000mzn-Arab-IR",
+    "mzo\000mzo-Latn-BR",
+    "mzp\000mzp-Latn-BO",
+    "mzq\000mzq-Latn-ID",
+    "mzr\000mzr-Latn-BR",
+    "mzt\000mzt-Latn-MY",
+    "mzu\000mzu-Latn-PG",
+    "mzv\000mzv-Latn-CF",
+    "mzw\000mzw-Latn-GH",
+    "mzx\000mzx-Latn-GY",
+    "mzz\000mzz-Latn-PG",
+    "na\000na-Latn-NR",
+    "naa\000naa-Latn-ID",
+    "nab\000nab-Latn-BR",
+    "nac\000nac-Latn-PG",
+    "nae\000nae-Latn-ID",
+    "naf\000naf-Latn-PG",
+    "nag\000nag-Latn-IN",
+    "naj\000naj-Latn-GN",
+    "nak\000nak-Latn-PG",
+    "nal\000nal-Latn-PG",
+    "nam\000nam-Latn-AU",
+    "nan\000nan-Hans-CN",
+    "nan-Hant\000nan-Hant-TW",
+    "nan-MO\000nan-Hant-MO",
+    "nan-TW\000nan-Hant-TW",
+    "nao\000nao-Deva-NP",
+    "nap\000nap-Latn-IT",
+    "naq\000naq-Latn-NA",
+    "nar\000nar-Latn-NG",
+    "nas\000nas-Latn-PG",
+    "nat\000nat-Latn-NG",
+    "naw\000naw-Latn-GH",
+    "nax\000nax-Latn-PG",
+    "nay\000nay-Latn-AU",
+    "naz\000naz-Latn-MX",
+    "nb\000nb-Latn-NO",
+    "nba\000nba-Latn-AO",
+    "nbb\000nbb-Latn-NG",
+    "nbc\000nbc-Latn-IN",
+    "nbd\000nbd-Latn-CD",
+    "nbe\000nbe-Latn-IN",
+    "nbh\000nbh-Latn-NG",
+    "nbi\000nbi-Latn-IN",
+    "nbj\000nbj-Latn-AU",
+    "nbk\000nbk-Latn-PG",
+    "nbm\000nbm-Latn-CF",
+    "nbn\000nbn-Latn-ID",
+    "nbo\000nbo-Latn-NG",
+    "nbp\000nbp-Latn-NG",
+    "nbq\000nbq-Latn-ID",
+    "nbr\000nbr-Latn-NG",
+    "nbt\000nbt-Latn-IN",
+    "nbu\000nbu-Latn-IN",
+    "nbv\000nbv-Latn-CM",
+    "nbw\000nbw-Latn-CD",
+    "nby\000nby-Latn-PG",
+    "nca\000nca-Latn-PG",
+    "ncb\000ncb-Latn-IN",
+    "ncc\000ncc-Latn-PG",
+    "ncd\000ncd-Deva-NP",
+    "nce\000nce-Latn-PG",
+    "ncf\000ncf-Latn-PG",
+    "ncg\000ncg-Latn-CA",
+    "nch\000nch-Latn-MX",
+    "nci\000nci-Latn-MX",
+    "ncj\000ncj-Latn-MX",
+    "nck\000nck-Latn-AU",
+    "ncl\000ncl-Latn-MX",
+    "ncm\000ncm-Latn-PG",
+    "ncn\000ncn-Latn-PG",
+    "nco\000nco-Latn-PG",
+    "ncq\000ncq-Laoo-LA",
+    "ncr\000ncr-Latn-CM",
+    "nct\000nct-Latn-IN",
+    "ncu\000ncu-Latn-GH",
+    "ncx\000ncx-Latn-MX",
+    "ncz\000ncz-Latn-US",
+    "nd\000nd-Latn-ZW",
+    "nda\000nda-Latn-CG",
+    "ndb\000ndb-Latn-CM",
+    "ndc\000ndc-Latn-MZ",
+    "ndd\000ndd-Latn-NG",
+    "ndf\000ndf-Cyrl-RU",
+    "ndg\000ndg-Latn-TZ",
+    "ndh\000ndh-Latn-TZ",
+    "ndi\000ndi-Latn-NG",
+    "ndj\000ndj-Latn-TZ",
+    "ndk\000ndk-Latn-CD",
+    "ndl\000ndl-Latn-CD",
+    "ndm\000ndm-Latn-TD",
+    "ndn\000ndn-Latn-CG",
+    "ndp\000ndp-Latn-UG",
+    "ndq\000ndq-Latn-AO",
+    "ndr\000ndr-Latn-NG",
+    "nds\000nds-Latn-DE",
+    "ndt\000ndt-Latn-CD",
+    "ndu\000ndu-Latn-CM",
+    "ndv\000ndv-Latn-SN",
+    "ndw\000ndw-Latn-CD",
+    "ndx\000ndx-Latn-ID",
+    "ndy\000ndy-Latn-CF",
+    "ndz\000ndz-Latn-SS",
+    "ne\000ne-Deva-NP",
+    "nea\000nea-Latn-ID",
+    "neb\000neb-Latn-CI",
+    "nec\000nec-Latn-ID",
+    "ned\000ned-Latn-NG",
+    "nee\000nee-Latn-NC",
+    "neg\000neg-Cyrl-RU",
+    "neh\000neh-Tibt-BT",
+    "nei\000nei-Xsux-TR",
+    "nej\000nej-Latn-PG",
+    "nek\000nek-Latn-NC",
+    "nem\000nem-Latn-NC",
+    "nen\000nen-Latn-NC",
+    "neo\000neo-Latn-VN",
+    "neq\000neq-Latn-MX",
+    "ner\000ner-Latn-ID",
+    "net\000net-Latn-PG",
+    "neu\000neu-Latn-001",
+    "new\000new-Deva-NP",
+    "nex\000nex-Latn-PG",
+    "ney\000ney-Latn-CI",
+    "nez\000nez-Latn-US",
+    "nfa\000nfa-Latn-ID",
+    "nfd\000nfd-Latn-NG",
+    "nfl\000nfl-Latn-SB",
+    "nfr\000nfr-Latn-GH",
+    "nfu\000nfu-Latn-CM",
+    "ng\000ng-Latn-NA",
+    "nga\000nga-Latn-CD",
+    "ngb\000ngb-Latn-CD",
+    "ngc\000ngc-Latn-CD",
+    "ngd\000ngd-Latn-CF",
+    "nge\000nge-Latn-CM",
+    "ngg\000ngg-Latn-CF",
+    "ngh\000ngh-Latn-ZA",
+    "ngi\000ngi-Latn-NG",
+    "ngj\000ngj-Latn-CM",
+    "ngk\000ngk-Latn-AU",
+    "ngl\000ngl-Latn-MZ",
+    "ngm\000ngm-Latn-FM",
+    "ngn\000ngn-Latn-CM",
+    "ngp\000ngp-Latn-TZ",
+    "ngq\000ngq-Latn-TZ",
+    "ngr\000ngr-Latn-SB",
+    "ngs\000ngs-Latn-NG",
+    "ngt\000ngt-Laoo-LA",
+    "ngu\000ngu-Latn-MX",
+    "ngv\000ngv-Latn-CM",
+    "ngw\000ngw-Latn-NG",
+    "ngx\000ngx-Latn-NG",
+    "ngy\000ngy-Latn-CM",
+    "ngz\000ngz-Latn-CG",
+    "nha\000nha-Latn-AU",
+    "nhb\000nhb-Latn-CI",
+    "nhc\000nhc-Latn-MX",
+    "nhd\000nhd-Latn-PY",
+    "nhe\000nhe-Latn-MX",
+    "nhf\000nhf-Latn-AU",
+    "nhg\000nhg-Latn-MX",
+    "nhi\000nhi-Latn-MX",
+    "nhk\000nhk-Latn-MX",
+    "nhm\000nhm-Latn-MX",
+    "nhn\000nhn-Latn-MX",
+    "nho\000nho-Latn-PG",
+    "nhp\000nhp-Latn-MX",
+    "nhq\000nhq-Latn-MX",
+    "nhr\000nhr-Latn-BW",
+    "nht\000nht-Latn-MX",
+    "nhu\000nhu-Latn-CM",
+    "nhv\000nhv-Latn-MX",
+    "nhw\000nhw-Latn-MX",
+    "nhx\000nhx-Latn-MX",
+    "nhy\000nhy-Latn-MX",
+    "nhz\000nhz-Latn-MX",
+    "nia\000nia-Latn-ID",
+    "nib\000nib-Latn-PG",
+    "nid\000nid-Latn-AU",
+    "nie\000nie-Latn-TD",
+    "nif\000nif-Latn-PG",
+    "nig\000nig-Latn-AU",
+    "nih\000nih-Latn-TZ",
+    "nii\000nii-Latn-PG",
+    "nij\000nij-Latn-ID",
+    "nil\000nil-Latn-ID",
+    "nim\000nim-Latn-TZ",
+    "nin\000nin-Latn-NG",
+    "nio\000nio-Cyrl-RU",
+    "niq\000niq-Latn-KE",
+    "nir\000nir-Latn-ID",
+    "nis\000nis-Latn-PG",
+    "nit\000nit-Telu-IN",
+    "niu\000niu-Latn-NU",
+    "niv\000niv-Cyrl-RU",
+    "niw\000niw-Latn-PG",
+    "nix\000nix-Latn-CD",
+    "niy\000niy-Latn-CD",
+    "niz\000niz-Latn-PG",
+    "nja\000nja-Latn-NG",
+    "njb\000njb-Latn-IN",
+    "njd\000njd-Latn-TZ",
+    "njh\000njh-Latn-IN",
+    "nji\000nji-Latn-AU",
+    "njj\000njj-Latn-CM",
+    "njl\000njl-Latn-SS",
+    "njm\000njm-Latn-IN",
+    "njn\000njn-Latn-IN",
+    "njo\000njo-Latn-IN",
+    "njr\000njr-Latn-NG",
+    "njs\000njs-Latn-ID",
+    "njt\000njt-Latn-SR",
+    "nju\000nju-Latn-AU",
+    "njx\000njx-Latn-CG",
+    "njy\000njy-Latn-CM",
+    "njz\000njz-Latn-IN",
+    "nka\000nka-Latn-ZM",
+    "nkb\000nkb-Latn-IN",
+    "nkc\000nkc-Latn-CM",
+    "nkd\000nkd-Latn-IN",
+    "nke\000nke-Latn-SB",
+    "nkf\000nkf-Latn-IN",
+    "nkg\000nkg-Latn-PG",
+    "nkh\000nkh-Latn-IN",
+    "nki\000nki-Latn-IN",
+    "nkj\000nkj-Latn-ID",
+    "nkk\000nkk-Latn-VU",
+    "nkm\000nkm-Latn-PG",
+    "nkn\000nkn-Latn-AO",
+    "nko\000nko-Latn-GH",
+    "nkq\000nkq-Latn-GH",
+    "nkr\000nkr-Latn-FM",
+    "nks\000nks-Latn-ID",
+    "nkt\000nkt-Latn-TZ",
+    "nku\000nku-Latn-CI",
+    "nkv\000nkv-Latn-MW",
+    "nkw\000nkw-Latn-CD",
+    "nkx\000nkx-Latn-NG",
+    "nkz\000nkz-Latn-NG",
+    "nl\000nl-Latn-NL",
+    "nla\000nla-Latn-CM",
+    "nlc\000nlc-Latn-ID",
+    "nle\000nle-Latn-KE",
+    "nlg\000nlg-Latn-SB",
+    "nli\000nli-Arab-AF",
+    "nlj\000nlj-Latn-CD",
+    "nlk\000nlk-Latn-ID",
+    "nlm\000nlm-Arab-PK",
+    "nlo\000nlo-Latn-CD",
+    "nlq\000nlq-Latn-MM",
+    "nlu\000nlu-Latn-GH",
+    "nlv\000nlv-Latn-MX",
+    "nlw\000nlw-Latn-AU",
+    "nlx\000nlx-Deva-IN",
+    "nly\000nly-Latn-AU",
+    "nlz\000nlz-Latn-SB",
+    "nma\000nma-Latn-IN",
+    "nmb\000nmb-Latn-VU",
+    "nmc\000nmc-Latn-TD",
+    "nmd\000nmd-Latn-GA",
+    "nme\000nme-Latn-IN",
+    "nmf\000nmf-Latn-IN",
+    "nmg\000nmg-Latn-CM",
+    "nmh\000nmh-Latn-IN",
+    "nmi\000nmi-Latn-NG",
+    "nmj\000nmj-Latn-CF",
+    "nmk\000nmk-Latn-VU",
+    "nml\000nml-Latn-CM",
+    "nmm\000nmm-Deva-NP",
+    "nmn\000nmn-Latn-BW",
+    "nmo\000nmo-Latn-IN",
+    "nmp\000nmp-Latn-AU",
+    "nmq\000nmq-Latn-ZW",
+    "nmr\000nmr-Latn-CM",
+    "nms\000nms-Latn-VU",
+    "nmt\000nmt-Latn-FM",
+    "nmu\000nmu-Latn-US",
+    "nmv\000nmv-Latn-AU",
+    "nmw\000nmw-Latn-PG",
+    "nmx\000nmx-Latn-PG",
+    "nmz\000nmz-Latn-TG",
+    "nn\000nn-Latn-NO",
+    "nna\000nna-Latn-AU",
+    "nnb\000nnb-Latn-CD",
+    "nnc\000nnc-Latn-TD",
+    "nnd\000nnd-Latn-VU",
+    "nne\000nne-Latn-AO",
+    "nnf\000nnf-Latn-PG",
+    "nng\000nng-Latn-IN",
+    "nnh\000nnh-Latn-CM",
+    "nni\000nni-Latn-ID",
+    "nnj\000nnj-Latn-ET",
+    "nnk\000nnk-Latn-PG",
+    "nnl\000nnl-Latn-IN",
+    "nnm\000nnm-Latn-PG",
+    "nnn\000nnn-Latn-TD",
+    "nnp\000nnp-Wcho-IN",
+    "nnq\000nnq-Latn-TZ",
+    "nnr\000nnr-Latn-AU",
+    "nnt\000nnt-Latn-US",
+    "nnu\000nnu-Latn-GH",
+    "nnv\000nnv-Latn-AU",
+    "nnw\000nnw-Latn-BF",
+    "nny\000nny-Latn-AU",
+    "nnz\000nnz-Latn-CM",
+    "no\000no-Latn-NO",
+    "noa\000noa-Latn-CO",
+    "noc\000noc-Latn-PG",
+    "nod\000nod-Lana-TH",
+    "noe\000noe-Deva-IN",
+    "nof\000nof-Latn-PG",
+    "nog\000nog-Cyrl-RU",
+    "noh\000noh-Latn-PG",
+    "noi\000noi-Deva-IN",
+    "noj\000noj-Latn-CO",
+    "nok\000nok-Latn-US",
+    "non\000non-Runr-SE",
+    "nop\000nop-Latn-PG",
+    "noq\000noq-Latn-CD",
+    "nos\000nos-Yiii-CN",
+    "not\000not-Latn-PE",
+    "nou\000nou-Latn-PG",
+    "nov\000nov-Latn-001",
+    "now\000now-Latn-TZ",
+    "noy\000noy-Latn-TD",
+    "npb\000npb-Tibt-BT",
+    "npg\000npg-Latn-MM",
+    "nph\000nph-Latn-IN",
+    "npl\000npl-Latn-MX",
+    "npn\000npn-Latn-PG",
+    "npo\000npo-Latn-IN",
+    "nps\000nps-Latn-ID",
+    "npu\000npu-Latn-IN",
+    "npx\000npx-Latn-SB",
+    "npy\000npy-Latn-ID",
+    "nqg\000nqg-Latn-BJ",
+    "nqk\000nqk-Latn-BJ",
+    "nql\000nql-Latn-AO",
+    "nqm\000nqm-Latn-ID",
+    "nqn\000nqn-Latn-PG",
+    "nqo\000nqo-Nkoo-GN",
+    "nqq\000nqq-Latn-MM",
+    "nqt\000nqt-Latn-NG",
+    "nqy\000nqy-Latn-MM",
+    "nr\000nr-Latn-ZA",
+    "nra\000nra-Latn-GA",
+    "nrb\000nrb-Latn-ER",
+    "nre\000nre-Latn-IN",
+    "nrf\000nrf-Latn-JE",
+    "nrg\000nrg-Latn-VU",
+    "nri\000nri-Latn-IN",
+    "nrk\000nrk-Latn-AU",
+    "nrl\000nrl-Latn-AU",
+    "nrm\000nrm-Latn-MY",
+    "nrn\000nrn-Runr-GB",
+    "nrp\000nrp-Latn-IT",
+    "nru\000nru-Latn-CN",
+    "nrx\000nrx-Latn-AU",
+    "nrz\000nrz-Latn-PG",
+    "nsa\000nsa-Latn-IN",
+    "nsb\000nsb-Latn-ZA",
+    "nsc\000nsc-Latn-NG",
+    "nsd\000nsd-Yiii-CN",
+    "nse\000nse-Latn-ZM",
+    "nsf\000nsf-Yiii-CN",
+    "nsg\000nsg-Latn-TZ",
+    "nsh\000nsh-Latn-CM",
+    "nsk\000nsk-Cans-CA",
+    "nsm\000nsm-Latn-IN",
+    "nsn\000nsn-Latn-PG",
+    "nso\000nso-Latn-ZA",
+    "nsq\000nsq-Latn-US",
+    "nss\000nss-Latn-PG",
+    "nst\000nst-Tnsa-IN",
+    "nsu\000nsu-Latn-MX",
+    "nsv\000nsv-Yiii-CN",
+    "nsw\000nsw-Latn-VU",
+    "nsx\000nsx-Latn-AO",
+    "nsy\000nsy-Latn-ID",
+    "nsz\000nsz-Latn-US",
+    "ntd\000ntd-Latn-MY",
+    "ntg\000ntg-Latn-AU",
+    "nti\000nti-Latn-BF",
+    "ntj\000ntj-Latn-AU",
+    "ntk\000ntk-Latn-TZ",
+    "ntm\000ntm-Latn-BJ",
+    "nto\000nto-Latn-CD",
+    "ntp\000ntp-Latn-MX",
+    "ntr\000ntr-Latn-GH",
+    "ntu\000ntu-Latn-SB",
+    "ntx\000ntx-Latn-MM",
+    "nty\000nty-Yiii-VN",
+    "ntz\000ntz-Arab-IR",
+    "nua\000nua-Latn-NC",
+    "nuc\000nuc-Latn-BR",
+    "nud\000nud-Latn-PG",
+    "nue\000nue-Latn-CF",
+    "nuf\000nuf-Latn-CN",
+    "nug\000nug-Latn-AU",
+    "nuh\000nuh-Latn-NG",
+    "nui\000nui-Latn-GQ",
+    "nuj\000nuj-Latn-UG",
+    "nuk\000nuk-Latn-CA",
+    "num\000num-Latn-TO",
+    "nun\000nun-Latn-MM",
+    "nuo\000nuo-Latn-VN",
+    "nup\000nup-Latn-NG",
+    "nuq\000nuq-Latn-PG",
+    "nur\000nur-Latn-PG",
+    "nus\000nus-Latn-SS",
+    "nut\000nut-Latn-VN",
+    "nuu\000nuu-Latn-CD",
+    "nuv\000nuv-Latn-BF",
+    "nuw\000nuw-Latn-FM",
+    "nux\000nux-Latn-PG",
+    "nuy\000nuy-Latn-AU",
+    "nuz\000nuz-Latn-MX",
+    "nv\000nv-Latn-US",
+    "nvh\000nvh-Latn-VU",
+    "nvm\000nvm-Latn-PG",
+    "nvo\000nvo-Latn-CM",
+    "nwb\000nwb-Latn-CI",
+    "nwc\000nwc-Newa-NP",
+    "nwe\000nwe-Latn-CM",
+    "nwg\000nwg-Latn-AU",
+    "nwi\000nwi-Latn-VU",
+    "nwm\000nwm-Latn-SS",
+    "nwo\000nwo-Latn-AU",
+    "nwr\000nwr-Latn-PG",
+    "nww\000nww-Latn-TZ",
+    "nwx\000nwx-Deva-NP",
+    "nxa\000nxa-Latn-TL",
+    "nxd\000nxd-Latn-CD",
+    "nxe\000nxe-Latn-ID",
+    "nxg\000nxg-Latn-ID",
+    "nxi\000nxi-Latn-TZ",
+    "nxk\000nxk-Latn-MM",
+    "nxl\000nxl-Latn-ID",
+    "nxn\000nxn-Latn-AU",
+    "nxo\000nxo-Latn-GA",
+    "nxq\000nxq-Latn-CN",
+    "nxr\000nxr-Latn-PG",
+    "nxx\000nxx-Latn-ID",
+    "ny\000ny-Latn-MW",
+    "nyb\000nyb-Latn-GH",
+    "nyc\000nyc-Latn-CD",
+    "nyd\000nyd-Latn-KE",
+    "nye\000nye-Latn-AO",
+    "nyf\000nyf-Latn-KE",
+    "nyg\000nyg-Latn-CD",
+    "nyh\000nyh-Latn-AU",
+    "nyi\000nyi-Latn-SD",
+    "nyj\000nyj-Latn-CD",
+    "nyk\000nyk-Latn-AO",
+    "nyl\000nyl-Thai-TH",
+    "nym\000nym-Latn-TZ",
+    "nyn\000nyn-Latn-UG",
+    "nyo\000nyo-Latn-UG",
+    "nyp\000nyp-Latn-UG",
+    "nyq\000nyq-Arab-IR",
+    "nyr\000nyr-Latn-MW",
+    "nys\000nys-Latn-AU",
+    "nyt\000nyt-Latn-AU",
+    "nyu\000nyu-Latn-MZ",
+    "nyv\000nyv-Latn-AU",
+    "nyw\000nyw-Thai-TH",
+    "nyx\000nyx-Latn-AU",
+    "nyy\000nyy-Latn-TZ",
+    "nza\000nza-Latn-CM",
+    "nzb\000nzb-Latn-GA",
+    "nzd\000nzd-Latn-CD",
+    "nzi\000nzi-Latn-GH",
+    "nzk\000nzk-Latn-CF",
+    "nzm\000nzm-Latn-IN",
+    "nzr\000nzr-Latn-NG",
+    "nzu\000nzu-Latn-CG",
+    "nzy\000nzy-Latn-TD",
+    "nzz\000nzz-Latn-ML",
+    "oaa\000oaa-Cyrl-RU",
+    "oac\000oac-Cyrl-RU",
+    "oar\000oar-Syrc-SY",
+    "oav\000oav-Geor-GE",
+    "obi\000obi-Latn-US",
+    "obk\000obk-Latn-PH",
+    "obl\000obl-Latn-CM",
+    "obm\000obm-Phnx-JO",
+    "obo\000obo-Latn-PH",
+    "obr\000obr-Mymr-MM",
+    "obt\000obt-Latn-FR",
+    "obu\000obu-Latn-NG",
+    "oc\000oc-Latn-FR",
+    "oca\000oca-Latn-PE",
+    "oco\000oco-Latn-GB",
+    "ocu\000ocu-Latn-MX",
+    "oda\000oda-Latn-NG",
+    "odk\000odk-Arab-PK",
+    "odt\000odt-Latn-NL",
+    "odu\000odu-Latn-NG",
+    "ofs\000ofs-Latn-NL",
+    "ofu\000ofu-Latn-NG",
+    "ogb\000ogb-Latn-NG",
+    "ogc\000ogc-Latn-NG",
+    "ogg\000ogg-Latn-NG",
+    "ogo\000ogo-Latn-NG",
+    "ogu\000ogu-Latn-NG",
+    "oht\000oht-Xsux-TR",
+    "ohu\000ohu-Latn-HU",
+    "oia\000oia-Latn-ID",
+    "oie\000oie-Latn-SS",
+    "oin\000oin-Latn-PG",
+    "oj\000oj-Cans-CA",
+    "ojb\000ojb-Latn-CA",
+    "ojc\000ojc-Latn-CA",
+    "ojs\000ojs-Cans-CA",
+    "ojv\000ojv-Latn-SB",
+    "ojw\000ojw-Latn-CA",
+    "oka\000oka-Latn-CA",
+    "okb\000okb-Latn-NG",
+    "okc\000okc-Latn-CD",
+    "okd\000okd-Latn-NG",
+    "oke\000oke-Latn-NG",
+    "okg\000okg-Latn-AU",
+    "oki\000oki-Latn-KE",
+    "okk\000okk-Latn-PG",
+    "okm\000okm-Hang-KR",
+    "oko\000oko-Hani-KR",
+    "okr\000okr-Latn-NG",
+    "oks\000oks-Latn-NG",
+    "oku\000oku-Latn-CM",
+    "okv\000okv-Latn-PG",
+    "okx\000okx-Latn-NG",
+    "okz\000okz-Khmr-KH",
+    "ola\000ola-Deva-NP",
+    "old\000old-Latn-TZ",
+    "ole\000ole-Tibt-BT",
+    "olk\000olk-Latn-AU",
+    "olm\000olm-Latn-NG",
+    "olo\000olo-Latn-RU",
+    "olr\000olr-Latn-VU",
+    "olt\000olt-Latn-LT",
+    "olu\000olu-Latn-AO",
+    "om\000om-Latn-ET",
+    "oma\000oma-Latn-US",
+    "omb\000omb-Latn-VU",
+    "omc\000omc-Latn-PE",
+    "omg\000omg-Latn-PE",
+    "omi\000omi-Latn-CD",
+    "omk\000omk-Cyrl-RU",
+    "oml\000oml-Latn-CD",
+    "omo\000omo-Latn-PG",
+    "omp\000omp-Mtei-IN",
+    "omr\000omr-Modi-IN",
+    "omt\000omt-Latn-KE",
+    "omu\000omu-Latn-PE",
+    "omw\000omw-Latn-PG",
+    "omx\000omx-Mymr-MM",
+    "ona\000ona-Latn-AR",
+    "one\000one-Latn-CA",
+    "ong\000ong-Latn-PG",
+    "oni\000oni-Latn-ID",
+    "onj\000onj-Latn-PG",
+    "onk\000onk-Latn-PG",
+    "onn\000onn-Latn-PG",
+    "ono\000ono-Latn-CA",
+    "onp\000onp-Latn-IN",
+    "onr\000onr-Latn-PG",
+    "ons\000ons-Latn-PG",
+    "ont\000ont-Latn-PG",
+    "onu\000onu-Latn-VU",
+    "onx\000onx-Latn-ID",
+    "ood\000ood-Latn-US",
+    "oon\000oon-Deva-IN",
+    "oor\000oor-Latn-ZA",
+    "opa\000opa-Latn-NG",
+    "opk\000opk-Latn-ID",
+    "opm\000opm-Latn-PG",
+    "opo\000opo-Latn-PG",
+    "opt\000opt-Latn-MX",
+    "opy\000opy-Latn-BR",
+    "or\000or-Orya-IN",
+    "ora\000ora-Latn-SB",
+    "orc\000orc-Latn-KE",
+    "ore\000ore-Latn-PE",
+    "org\000org-Latn-NG",
+    "orn\000orn-Latn-MY",
+    "oro\000oro-Latn-PG",
+    "orr\000orr-Latn-NG",
+    "ors\000ors-Latn-MY",
+    "ort\000ort-Telu-IN",
+    "oru\000oru-Arab-PK",
+    "orv\000orv-Cyrl-RU",
+    "orw\000orw-Latn-BR",
+    "orx\000orx-Latn-NG",
+    "orz\000orz-Latn-ID",
+    "os\000os-Cyrl-GE",
+    "osa\000osa-Osge-US",
+    "osc\000osc-Ital-IT",
+    "osi\000osi-Java-ID",
+    "oso\000oso-Latn-NG",
+    "osp\000osp-Latn-ES",
+    "ost\000ost-Latn-CM",
+    "osu\000osu-Latn-PG",
+    "osx\000osx-Latn-DE",
+    "ota\000ota-Arab-TR",
+    "otb\000otb-Tibt-CN",
+    "otd\000otd-Latn-ID",
+    "ote\000ote-Latn-MX",
+    "oti\000oti-Latn-BR",
+    "otk\000otk-Orkh-MN",
+    "otl\000otl-Latn-MX",
+    "otm\000otm-Latn-MX",
+    "otn\000otn-Latn-MX",
+    "otq\000otq-Latn-MX",
+    "otr\000otr-Latn-SD",
+    "ots\000ots-Latn-MX",
+    "ott\000ott-Latn-MX",
+    "otu\000otu-Latn-BR",
+    "otw\000otw-Latn-CA",
+    "otx\000otx-Latn-MX",
+    "oty\000oty-Gran-IN",
+    "otz\000otz-Latn-MX",
+    "oub\000oub-Latn-LR",
+    "oue\000oue-Latn-PG",
+    "oui\000oui-Ougr-CN",
+    "oum\000oum-Latn-PG",
+    "ovd\000ovd-Latn-SE",
+    "owi\000owi-Latn-PG",
+    "owl\000owl-Latn-GB",
+    "oyb\000oyb-Laoo-LA",
+    "oyd\000oyd-Latn-ET",
+    "oym\000oym-Latn-BR",
+    "oyy\000oyy-Latn-PG",
+    "ozm\000ozm-Latn-CM",
+    "pa\000pa-Guru-IN",
+    "pa-Arab\000pa-Arab-PK",
+    "pa-PK\000pa-Arab-PK",
+    "pab\000pab-Latn-BR",
+    "pac\000pac-Latn-VN",
+    "pad\000pad-Latn-BR",
+    "pae\000pae-Latn-CD",
+    "paf\000paf-Latn-BR",
+    "pag\000pag-Latn-PH",
+    "pah\000pah-Latn-BR",
+    "pai\000pai-Latn-NG",
+    "pak\000pak-Latn-BR",
+    "pal\000pal-Phli-IR",
+    "pal-Phlp\000pal-Phlp-CN",
+    "pam\000pam-Latn-PH",
+    "pao\000pao-Latn-US",
+    "pap\000pap-Latn-CW",
+    "paq\000paq-Cyrl-TJ",
+    "par\000par-Latn-US",
+    "pas\000pas-Latn-ID",
+    "pau\000pau-Latn-PW",
+    "pav\000pav-Latn-BR",
+    "paw\000paw-Latn-US",
+    "pax\000pax-Latn-BR",
+    "pay\000pay-Latn-HN",
+    "paz\000paz-Latn-BR",
+    "pbb\000pbb-Latn-CO",
+    "pbc\000pbc-Latn-GY",
+    "pbe\000pbe-Latn-MX",
+    "pbf\000pbf-Latn-MX",
+    "pbg\000pbg-Latn-VE",
+    "pbh\000pbh-Latn-VE",
+    "pbi\000pbi-Latn-CM",
+    "pbl\000pbl-Latn-NG",
+    "pbm\000pbm-Latn-MX",
+    "pbn\000pbn-Latn-NG",
+    "pbo\000pbo-Latn-GW",
+    "pbp\000pbp-Latn-GN",
+    "pbr\000pbr-Latn-TZ",
+    "pbs\000pbs-Latn-MX",
+    "pbt\000pbt-Arab-AF",
+    "pbv\000pbv-Latn-IN",
+    "pby\000pby-Latn-PG",
+    "pca\000pca-Latn-MX",
+    "pcb\000pcb-Khmr-KH",
+    "pcc\000pcc-Latn-CN",
+    "pcd\000pcd-Latn-FR",
+    "pce\000pce-Mymr-MM",
+    "pcf\000pcf-Mlym-IN",
+    "pcg\000pcg-Mlym-IN",
+    "pch\000pch-Deva-IN",
+    "pci\000pci-Deva-IN",
+    "pcj\000pcj-Telu-IN",
+    "pck\000pck-Latn-IN",
+    "pcm\000pcm-Latn-NG",
+    "pcn\000pcn-Latn-NG",
+    "pcp\000pcp-Latn-BO",
+    "pcw\000pcw-Latn-NG",
+    "pda\000pda-Latn-PG",
+    "pdc\000pdc-Latn-US",
+    "pdn\000pdn-Latn-ID",
+    "pdo\000pdo-Latn-ID",
+    "pdt\000pdt-Latn-CA",
+    "pdu\000pdu-Latn-MM",
+    "pea\000pea-Latn-ID",
+    "peb\000peb-Latn-US",
+    "ped\000ped-Latn-PG",
+    "pee\000pee-Latn-ID",
+    "peg\000peg-Orya-IN",
+    "pei\000pei-Latn-MX",
+    "pek\000pek-Latn-PG",
+    "pel\000pel-Latn-ID",
+    "pem\000pem-Latn-CD",
+    "peo\000peo-Xpeo-IR",
+    "pep\000pep-Latn-PG",
+    "peq\000peq-Latn-US",
+    "pev\000pev-Latn-VE",
+    "pex\000pex-Latn-PG",
+    "pey\000pey-Latn-ID",
+    "pez\000pez-Latn-MY",
+    "pfa\000pfa-Latn-FM",
+    "pfe\000pfe-Latn-CM",
+    "pfl\000pfl-Latn-DE",
+    "pga\000pga-Latn-SS",
+    "pgd\000pgd-Khar-PK",
+    "pgg\000pgg-Deva-IN",
+    "pgi\000pgi-Latn-PG",
+    "pgk\000pgk-Latn-VU",
+    "pgl\000pgl-Ogam-IE",
+    "pgn\000pgn-Ital-IT",
+    "pgs\000pgs-Latn-NG",
+    "pgu\000pgu-Latn-ID",
+    "phd\000phd-Deva-IN",
+    "phg\000phg-Latn-VN",
+    "phh\000phh-Latn-VN",
+    "phk\000phk-Mymr-IN",
+    "phl\000phl-Arab-PK",
+    "phm\000phm-Latn-MZ",
+    "phn\000phn-Phnx-LB",
+    "pho\000pho-Laoo-LA",
+    "phr\000phr-Arab-PK",
+    "pht\000pht-Thai-TH",
+    "phu\000phu-Thai-TH",
+    "phv\000phv-Arab-AF",
+    "phw\000phw-Deva-NP",
+    "pi\000pi-Latn-GB",
+    "pi-Deva\000pi-Deva-IN",
+    "pi-IN\000pi-Deva-IN",
+    "pi-LK\000pi-Sinh-LK",
+    "pi-MM\000pi-Mymr-MM",
+    "pi-Mymr\000pi-Mymr-MM",
+    "pi-Sinh\000pi-Sinh-LK",
+    "pi-TH\000pi-Thai-TH",
+    "pi-Thai\000pi-Thai-TH",
+    "pia\000pia-Latn-MX",
+    "pib\000pib-Latn-PE",
+    "pic\000pic-Latn-GA",
+    "pid\000pid-Latn-VE",
+    "pif\000pif-Latn-FM",
+    "pig\000pig-Latn-PE",
+    "pih\000pih-Latn-NF",
+    "pij\000pij-Latn-CO",
+    "pil\000pil-Latn-BJ",
+    "pim\000pim-Latn-US",
+    "pin\000pin-Latn-PG",
+    "pio\000pio-Latn-CO",
+    "pip\000pip-Latn-NG",
+    "pir\000pir-Latn-BR",
+    "pis\000pis-Latn-SB",
+    "pit\000pit-Latn-AU",
+    "piu\000piu-Latn-AU",
+    "piv\000piv-Latn-SB",
+    "piw\000piw-Latn-TZ",
+    "pix\000pix-Latn-PG",
+    "piy\000piy-Latn-NG",
+    "piz\000piz-Latn-NC",
+    "pjt\000pjt-Latn-AU",
+    "pka\000pka-Brah-IN",
+    "pkb\000pkb-Latn-KE",
+    "pkg\000pkg-Latn-PG",
+    "pkh\000pkh-Latn-BD",
+    "pkn\000pkn-Latn-AU",
+    "pko\000pko-Latn-KE",
+    "pkp\000pkp-Latn-CK",
+    "pkr\000pkr-Mlym-IN",
+    "pku\000pku-Latn-ID",
+    "pl\000pl-Latn-PL",
+    "pla\000pla-Latn-PG",
+    "plb\000plb-Latn-VU",
+    "plc\000plc-Latn-PH",
+    "pld\000pld-Latn-GB",
+    "ple\000ple-Latn-ID",
+    "plg\000plg-Latn-AR",
+    "plh\000plh-Latn-ID",
+    "plk\000plk-Arab-PK",
+    "pll\000pll-Mymr-MM",
+    "pln\000pln-Latn-CO",
+    "plo\000plo-Latn-MX",
+    "plr\000plr-Latn-CI",
+    "pls\000pls-Latn-MX",
+    "plu\000plu-Latn-BR",
+    "plv\000plv-Latn-PH",
+    "plw\000plw-Latn-PH",
+    "plz\000plz-Latn-MY",
+    "pma\000pma-Latn-VU",
+    "pmb\000pmb-Latn-CD",
+    "pmd\000pmd-Latn-AU",
+    "pme\000pme-Latn-NC",
+    "pmf\000pmf-Latn-ID",
+    "pmh\000pmh-Brah-IN",
+    "pmi\000pmi-Latn-CN",
+    "pmj\000pmj-Latn-CN",
+    "pml\000pml-Latn-TN",
+    "pmm\000pmm-Latn-CM",
+    "pmn\000pmn-Latn-CM",
+    "pmo\000pmo-Latn-ID",
+    "pmq\000pmq-Latn-MX",
+    "pmr\000pmr-Latn-PG",
+    "pms\000pms-Latn-IT",
+    "pmt\000pmt-Latn-PF",
+    "pmw\000pmw-Latn-US",
+    "pmx\000pmx-Latn-IN",
+    "pmy\000pmy-Latn-ID",
+    "pmz\000pmz-Latn-MX",
+    "pna\000pna-Latn-MY",
+    "pnc\000pnc-Latn-ID",
+    "pnd\000pnd-Latn-AO",
+    "pne\000pne-Latn-MY",
+    "png\000png-Latn-NG",
+    "pnh\000pnh-Latn-CK",
+    "pni\000pni-Latn-ID",
+    "pnj\000pnj-Latn-AU",
+    "pnk\000pnk-Latn-BO",
+    "pnl\000pnl-Latn-BF",
+    "pnm\000pnm-Latn-MY",
+    "pnn\000pnn-Latn-PG",
+    "pno\000pno-Latn-PE",
+    "pnp\000pnp-Latn-ID",
+    "pnq\000pnq-Latn-BF",
+    "pnr\000pnr-Latn-PG",
+    "pns\000pns-Latn-ID",
+    "pnt\000pnt-Grek-GR",
+    "pnt-Cyrl\000pnt-Cyrl-RU",
+    "pnt-Latn\000pnt-Latn-TR",
+    "pnt-RU\000pnt-Cyrl-RU",
+    "pnt-TR\000pnt-Latn-TR",
+    "pnv\000pnv-Latn-AU",
+    "pnw\000pnw-Latn-AU",
+    "pny\000pny-Latn-CM",
+    "pnz\000pnz-Latn-CF",
+    "poc\000poc-Latn-GT",
+    "poe\000poe-Latn-MX",
+    "pof\000pof-Latn-CD",
+    "pog\000pog-Latn-BR",
+    "poh\000poh-Latn-GT",
+    "poi\000poi-Latn-MX",
+    "pok\000pok-Latn-BR",
+    "pom\000pom-Latn-US",
+    "pon\000pon-Latn-FM",
+    "poo\000poo-Latn-US",
+    "pop\000pop-Latn-NC",
+    "poq\000poq-Latn-MX",
+    "pos\000pos-Latn-MX",
+    "pot\000pot-Latn-US",
+    "pov\000pov-Latn-GW",
+    "pow\000pow-Latn-MX",
+    "poy\000poy-Latn-TZ",
+    "ppe\000ppe-Latn-PG",
+    "ppi\000ppi-Latn-MX",
+    "ppk\000ppk-Latn-ID",
+    "ppl\000ppl-Latn-SV",
+    "ppm\000ppm-Latn-ID",
+    "ppn\000ppn-Latn-PG",
+    "ppo\000ppo-Latn-PG",
+    "ppp\000ppp-Latn-CD",
+    "ppq\000ppq-Latn-PG",
+    "pps\000pps-Latn-MX",
+    "ppt\000ppt-Latn-PG",
+    "pqa\000pqa-Latn-NG",
+    "pqm\000pqm-Latn-CA",
+    "prc\000prc-Arab-AF",
+    "prd\000prd-Arab-IR",
+    "pre\000pre-Latn-ST",
+    "prf\000prf-Latn-PH",
+    "prg\000prg-Latn-PL",
+    "prh\000prh-Latn-PH",
+    "pri\000pri-Latn-NC",
+    "prk\000prk-Latn-MM",
+    "prm\000prm-Latn-PG",
+    "pro\000pro-Latn-FR",
+    "prq\000prq-Latn-PE",
+    "prr\000prr-Latn-BR",
+    "prt\000prt-Thai-TH",
+    "pru\000pru-Latn-ID",
+    "prw\000prw-Latn-PG",
+    "prx\000prx-Arab-IN",
+    "ps\000ps-Arab-AF",
+    "psa\000psa-Latn-ID",
+    "pse\000pse-Latn-ID",
+    "psh\000psh-Arab-AF",
+    "psi\000psi-Arab-AF",
+    "psm\000psm-Latn-BO",
+    "psn\000psn-Latn-ID",
+    "psq\000psq-Latn-PG",
+    "pss\000pss-Latn-PG",
+    "pst\000pst-Arab-PK",
+    "psu\000psu-Brah-IN",
+    "psw\000psw-Latn-VU",
+    "pt\000pt-Latn-BR",
+    "pta\000pta-Latn-PY",
+    "pth\000pth-Latn-BR",
+    "pti\000pti-Latn-AU",
+    "ptn\000ptn-Latn-ID",
+    "pto\000pto-Latn-BR",
+    "ptp\000ptp-Latn-PG",
+    "ptr\000ptr-Latn-VU",
+    "ptt\000ptt-Latn-ID",
+    "ptu\000ptu-Latn-ID",
+    "ptv\000ptv-Latn-VU",
+    "pua\000pua-Latn-MX",
+    "pub\000pub-Latn-IN",
+    "puc\000puc-Latn-ID",
+    "pud\000pud-Latn-ID",
+    "pue\000pue-Latn-AR",
+    "puf\000puf-Latn-ID",
+    "pug\000pug-Latn-BF",
+    "pui\000pui-Latn-CO",
+    "puj\000puj-Latn-ID",
+    "pum\000pum-Deva-NP",
+    "puo\000puo-Latn-VN",
+    "pup\000pup-Latn-PG",
+    "puq\000puq-Latn-BO",
+    "pur\000pur-Latn-BR",
+    "put\000put-Latn-ID",
+    "puu\000puu-Latn-GA",
+    "puw\000puw-Latn-FM",
+    "pux\000pux-Latn-PG",
+    "puy\000puy-Latn-US",
+    "pwa\000pwa-Latn-PG",
+    "pwb\000pwb-Latn-NG",
+    "pwg\000pwg-Latn-PG",
+    "pwm\000pwm-Latn-PH",
+    "pwn\000pwn-Latn-TW",
+    "pwo\000pwo-Mymr-MM",
+    "pwr\000pwr-Deva-IN",
+    "pww\000pww-Thai-TH",
+    "pxm\000pxm-Latn-MX",
+    "pye\000pye-Latn-CI",
+    "pym\000pym-Latn-NG",
+    "pyn\000pyn-Latn-BR",
+    "pyu\000pyu-Latn-TW",
+    "pyx\000pyx-Mymr-MM",
+    "pyy\000pyy-Latn-MM",
+    "pze\000pze-Latn-NG",
+    "pzh\000pzh-Latn-TW",
+    "pzn\000pzn-Latn-MM",
+    "qu\000qu-Latn-PE",
+    "qua\000qua-Latn-US",
+    "qub\000qub-Latn-PE",
+    "quc\000quc-Latn-GT",
+    "qud\000qud-Latn-EC",
+    "quf\000quf-Latn-PE",
+    "qug\000qug-Latn-EC",
+    "qui\000qui-Latn-US",
+    "quk\000quk-Latn-PE",
+    "qul\000qul-Latn-BO",
+    "qum\000qum-Latn-GT",
+    "qun\000qun-Latn-US",
+    "qup\000qup-Latn-PE",
+    "quq\000quq-Latn-ES",
+    "qur\000qur-Latn-PE",
+    "qus\000qus-Latn-AR",
+    "quv\000quv-Latn-GT",
+    "quw\000quw-Latn-EC",
+    "qux\000qux-Latn-PE",
+    "quy\000quy-Latn-PE",
+    "qva\000qva-Latn-PE",
+    "qvc\000qvc-Latn-PE",
+    "qve\000qve-Latn-PE",
+    "qvh\000qvh-Latn-PE",
+    "qvi\000qvi-Latn-EC",
+    "qvj\000qvj-Latn-EC",
+    "qvl\000qvl-Latn-PE",
+    "qvm\000qvm-Latn-PE",
+    "qvn\000qvn-Latn-PE",
+    "qvo\000qvo-Latn-PE",
+    "qvp\000qvp-Latn-PE",
+    "qvs\000qvs-Latn-PE",
+    "qvw\000qvw-Latn-PE",
+    "qvz\000qvz-Latn-EC",
+    "qwa\000qwa-Latn-PE",
+    "qwc\000qwc-Latn-PE",
+    "qwh\000qwh-Latn-PE",
+    "qwm\000qwm-Latn-HU",
+    "qws\000qws-Latn-PE",
+    "qwt\000qwt-Latn-US",
+    "qxa\000qxa-Latn-PE",
+    "qxc\000qxc-Latn-PE",
+    "qxh\000qxh-Latn-PE",
+    "qxl\000qxl-Latn-EC",
+    "qxn\000qxn-Latn-PE",
+    "qxo\000qxo-Latn-PE",
+    "qxp\000qxp-Latn-PE",
+    "qxq\000qxq-Arab-IR",
+    "qxr\000qxr-Latn-EC",
+    "qxt\000qxt-Latn-PE",
+    "qxu\000qxu-Latn-PE",
+    "qxw\000qxw-Latn-PE",
+    "qya\000qya-Latn-001",
+    "qyp\000qyp-Latn-US",
+    "raa\000raa-Deva-NP",
+    "rab\000rab-Deva-NP",
+    "rac\000rac-Latn-ID",
+    "rad\000rad-Latn-VN",
+    "raf\000raf-Deva-NP",
+    "rag\000rag-Latn-KE",
+    "rah\000rah-Beng-IN",
+    "rai\000rai-Latn-PG",
+    "raj\000raj-Deva-IN",
+    "rak\000rak-Latn-PG",
+    "ram\000ram-Latn-BR",
+    "ran\000ran-Latn-ID",
+    "rao\000rao-Latn-PG",
+    "rap\000rap-Latn-CL",
+    "rar\000rar-Latn-CK",
+    "rav\000rav-Deva-NP",
+    "raw\000raw-Latn-MM",
+    "rax\000rax-Latn-NG",
+    "ray\000ray-Latn-PF",
+    "raz\000raz-Latn-ID",
+    "rbb\000rbb-Mymr-MM",
+    "rbk\000rbk-Latn-PH",
+    "rbl\000rbl-Latn-PH",
+    "rbp\000rbp-Latn-AU",
+    "rcf\000rcf-Latn-RE",
+    "rdb\000rdb-Arab-IR",
+    "rea\000rea-Latn-PG",
+    "reb\000reb-Latn-ID",
+    "ree\000ree-Latn-MY",
+    "reg\000reg-Latn-TZ",
+    "rei\000rei-Orya-IN",
+    "rej\000rej-Latn-ID",
+    "rel\000rel-Latn-KE",
+    "rem\000rem-Latn-PE",
+    "ren\000ren-Latn-VN",
+    "res\000res-Latn-NG",
+    "ret\000ret-Latn-ID",
+    "rey\000rey-Latn-BO",
+    "rga\000rga-Latn-VU",
+    "rgn\000rgn-Latn-IT",
+    "rgr\000rgr-Latn-PE",
+    "rgs\000rgs-Latn-VN",
+    "rgu\000rgu-Latn-ID",
+    "rhg\000rhg-Rohg-MM",
+    "rhp\000rhp-Latn-PG",
+    "ria\000ria-Latn-IN",
+    "rif\000rif-Latn-MA",
+    "ril\000ril-Latn-MM",
+    "rim\000rim-Latn-TZ",
+    "rin\000rin-Latn-NG",
+    "rir\000rir-Latn-ID",
+    "rit\000rit-Latn-AU",
+    "riu\000riu-Latn-ID",
+    "rjg\000rjg-Latn-ID",
+    "rji\000rji-Deva-NP",
+    "rjs\000rjs-Deva-NP",
+    "rka\000rka-Khmr-KH",
+    "rkb\000rkb-Latn-BR",
+    "rkh\000rkh-Latn-CK",
+    "rki\000rki-Mymr-MM",
+    "rkm\000rkm-Latn-BF",
+    "rkt\000rkt-Beng-BD",
+    "rkw\000rkw-Latn-AU",
+    "rm\000rm-Latn-CH",
+    "rma\000rma-Latn-NI",
+    "rmb\000rmb-Latn-AU",
+    "rmc\000rmc-Latn-SK",
+    "rmd\000rmd-Latn-DK",
+    "rme\000rme-Latn-GB",
+    "rmf\000rmf-Latn-FI",
+    "rmg\000rmg-Latn-NO",
+    "rmh\000rmh-Latn-ID",
+    "rmi\000rmi-Armn-AM",
+    "rmk\000rmk-Latn-PG",
+    "rml\000rml-Latn-PL",
+    "rmm\000rmm-Latn-ID",
+    "rmn\000rmn-Latn-RS",
+    "rmo\000rmo-Latn-CH",
+    "rmp\000rmp-Latn-PG",
+    "rmq\000rmq-Latn-ES",
+    "rmt\000rmt-Arab-IR",
+    "rmu\000rmu-Latn-SE",
+    "rmw\000rmw-Latn-GB",
+    "rmx\000rmx-Latn-VN",
+    "rmz\000rmz-Mymr-IN",
+    "rn\000rn-Latn-BI",
+    "rnd\000rnd-Latn-CD",
+    "rng\000rng-Latn-MZ",
+    "rnl\000rnl-Latn-IN",
+    "rnn\000rnn-Latn-ID",
+    "rnr\000rnr-Latn-AU",
+    "rnw\000rnw-Latn-TZ",
+    "ro\000ro-Latn-RO",
+    "rob\000rob-Latn-ID",
+    "roc\000roc-Latn-VN",
+    "rod\000rod-Latn-NG",
+    "roe\000roe-Latn-PG",
+    "rof\000rof-Latn-TZ",
+    "rog\000rog-Latn-VN",
+    "rol\000rol-Latn-PH",
+    "rom\000rom-Latn-RO",
+    "roo\000roo-Latn-PG",
+    "rop\000rop-Latn-AU",
+    "ror\000ror-Latn-ID",
+    "rou\000rou-Latn-TD",
+    "row\000row-Latn-ID",
+    "rpn\000rpn-Latn-VU",
+    "rpt\000rpt-Latn-PG",
+    "rri\000rri-Latn-SB",
+    "rrm\000rrm-Latn-NZ",
+    "rro\000rro-Latn-PG",
+    "rrt\000rrt-Latn-AU",
+    "rsk\000rsk-Cyrl-RS",
+    "rsw\000rsw-Latn-NG",
+    "rtc\000rtc-Latn-MM",
+    "rth\000rth-Latn-ID",
+    "rtm\000rtm-Latn-FJ",
+    "rtw\000rtw-Deva-IN",
+    "ru\000ru-Cyrl-RU",
+    "rub\000rub-Latn-UG",
+    "ruc\000ruc-Latn-UG",
+    "rue\000rue-Cyrl-UA",
+    "ruf\000ruf-Latn-TZ",
+    "rug\000rug-Latn-SB",
+    "rui\000rui-Latn-TZ",
+    "ruk\000ruk-Latn-NG",
+    "ruo\000ruo-Latn-HR",
+    "rup\000rup-Latn-RO",
+    "ruq\000ruq-Latn-GR",
+    "rut\000rut-Cyrl-RU",
+    "ruu\000ruu-Latn-MY",
+    "ruy\000ruy-Latn-NG",
+    "ruz\000ruz-Latn-NG",
+    "rw\000rw-Latn-RW",
+    "rwa\000rwa-Latn-PG",
+    "rwk\000rwk-Latn-TZ",
+    "rwl\000rwl-Latn-TZ",
+    "rwm\000rwm-Latn-UG",
+    "rwo\000rwo-Latn-PG",
+    "rwr\000rwr-Deva-IN",
+    "rxd\000rxd-Latn-AU",
+    "rxw\000rxw-Latn-AU",
+    "ryu\000ryu-Kana-JP",
+    "sa\000sa-Deva-IN",
+    "saa\000saa-Latn-TD",
+    "sab\000sab-Latn-PA",
+    "sac\000sac-Latn-US",
+    "sad\000sad-Latn-TZ",
+    "sae\000sae-Latn-BR",
+    "saf\000saf-Latn-GH",
+    "sah\000sah-Cyrl-RU",
+    "saj\000saj-Latn-ID",
+    "sak\000sak-Latn-GA",
+    "sam\000sam-Samr-PS",
+    "sao\000sao-Latn-ID",
+    "saq\000saq-Latn-KE",
+    "sar\000sar-Latn-BO",
+    "sas\000sas-Latn-ID",
+    "sat\000sat-Olck-IN",
+    "sau\000sau-Latn-ID",
+    "sav\000sav-Latn-SN",
+    "saw\000saw-Latn-ID",
+    "sax\000sax-Latn-VU",
+    "say\000say-Latn-NG",
+    "saz\000saz-Saur-IN",
+    "sba\000sba-Latn-TD",
+    "sbb\000sbb-Latn-SB",
+    "sbc\000sbc-Latn-PG",
+    "sbd\000sbd-Latn-BF",
+    "sbe\000sbe-Latn-PG",
+    "sbg\000sbg-Latn-ID",
+    "sbh\000sbh-Latn-PG",
+    "sbi\000sbi-Latn-PG",
+    "sbj\000sbj-Latn-TD",
+    "sbk\000sbk-Latn-TZ",
+    "sbl\000sbl-Latn-PH",
+    "sbm\000sbm-Latn-TZ",
+    "sbn\000sbn-Arab-PK",
+    "sbo\000sbo-Latn-MY",
+    "sbp\000sbp-Latn-TZ",
+    "sbq\000sbq-Latn-PG",
+    "sbr\000sbr-Latn-ID",
+    "sbs\000sbs-Latn-NA",
+    "sbt\000sbt-Latn-ID",
+    "sbu\000sbu-Tibt-IN",
+    "sbv\000sbv-Latn-IT",
+    "sbw\000sbw-Latn-GA",
+    "sbx\000sbx-Latn-ID",
+    "sby\000sby-Latn-ZM",
+    "sbz\000sbz-Latn-CF",
+    "sc\000sc-Latn-IT",
+    "scb\000scb-Latn-VN",
+    "sce\000sce-Latn-CN",
+    "scf\000scf-Latn-PA",
+    "scg\000scg-Latn-ID",
+    "sch\000sch-Latn-IN",
+    "sci\000sci-Latn-LK",
+    "sck\000sck-Deva-IN",
+    "scl\000scl-Arab-PK",
+    "scn\000scn-Latn-IT",
+    "sco\000sco-Latn-GB",
+    "scp\000scp-Deva-NP",
+    "scs\000scs-Latn-CA",
+    "sct\000sct-Laoo-LA",
+    "scu\000scu-Takr-IN",
+    "scv\000scv-Latn-NG",
+    "scw\000scw-Latn-NG",
+    "scx\000scx-Grek-IT",
+    "sd\000sd-Arab-PK",
+    "sd-Deva\000sd-Deva-IN",
+    "sd-IN\000sd-Deva-IN",
+    "sd-Khoj\000sd-Khoj-IN",
+    "sd-Sind\000sd-Sind-IN",
+    "sda\000sda-Latn-ID",
+    "sdb\000sdb-Arab-IQ",
+    "sdc\000sdc-Latn-IT",
+    "sde\000sde-Latn-NG",
+    "sdf\000sdf-Arab-IQ",
+    "sdg\000sdg-Arab-AF",
+    "sdh\000sdh-Arab-IR",
+    "sdj\000sdj-Latn-CG",
+    "sdk\000sdk-Latn-PG",
+    "sdn\000sdn-Latn-IT",
+    "sdo\000sdo-Latn-MY",
+    "sdq\000sdq-Latn-ID",
+    "sdr\000sdr-Beng-BD",
+    "sds\000sds-Arab-TN",
+    "sdu\000sdu-Latn-ID",
+    "sdx\000sdx-Latn-MY",
+    "se\000se-Latn-NO",
+    "sea\000sea-Latn-MY",
+    "seb\000seb-Latn-CI",
+    "sec\000sec-Latn-CA",
+    "sed\000sed-Latn-VN",
+    "see\000see-Latn-US",
+    "sef\000sef-Latn-CI",
+    "seg\000seg-Latn-TZ",
+    "seh\000seh-Latn-MZ",
+    "sei\000sei-Latn-MX",
+    "sej\000sej-Latn-PG",
+    "sek\000sek-Latn-CA",
+    "sel\000sel-Cyrl-RU",
+    "sen\000sen-Latn-BF",
+    "seo\000seo-Latn-PG",
+    "sep\000sep-Latn-BF",
+    "seq\000seq-Latn-BF",
+    "ser\000ser-Latn-US",
+    "ses\000ses-Latn-ML",
+    "set\000set-Latn-ID",
+    "seu\000seu-Latn-ID",
+    "sev\000sev-Latn-CI",
+    "sew\000sew-Latn-PG",
+    "sey\000sey-Latn-EC",
+    "sez\000sez-Latn-MM",
+    "sfe\000sfe-Latn-PH",
+    "sfm\000sfm-Plrd-CN",
+    "sfw\000sfw-Latn-GH",
+    "sg\000sg-Latn-CF",
+    "sga\000sga-Latn-IE",
+    "sgb\000sgb-Latn-PH",
+    "sgc\000sgc-Latn-KE",
+    "sgd\000sgd-Latn-PH",
+    "sge\000sge-Latn-ID",
+    "sgh\000sgh-Cyrl-TJ",
+    "sgi\000sgi-Latn-CM",
+    "sgj\000sgj-Deva-IN",
+    "sgm\000sgm-Latn-KE",
+    "sgp\000sgp-Latn-IN",
+    "sgr\000sgr-Arab-IR",
+    "sgs\000sgs-Latn-LT",
+    "sgt\000sgt-Tibt-BT",
+    "sgu\000sgu-Latn-ID",
+    "sgw\000sgw-Ethi-ET",
+    "sgy\000sgy-Arab-AF",
+    "sgz\000sgz-Latn-PG",
+    "sha\000sha-Latn-NG",
+    "shb\000shb-Latn-BR",
+    "shc\000shc-Latn-CD",
+    "shd\000shd-Arab-PK",
+    "she\000she-Latn-ET",
+    "shg\000shg-Latn-BW",
+    "shh\000shh-Latn-US",
+    "shi\000shi-Tfng-MA",
+    "shj\000shj-Latn-SD",
+    "shk\000shk-Latn-SS",
+    "shm\000shm-Arab-IR",
+    "shn\000shn-Mymr-MM",
+    "sho\000sho-Latn-NG",
+    "shp\000shp-Latn-PE",
+    "shq\000shq-Latn-ZM",
+    "shr\000shr-Latn-CD",
+    "shs\000shs-Latn-CA",
+    "sht\000sht-Latn-US",
+    "shu\000shu-Arab-TD",
+    "shv\000shv-Arab-OM",
+    "shw\000shw-Latn-SD",
+    "shy\000shy-Latn-DZ",
+    "shz\000shz-Latn-ML",
+    "si\000si-Sinh-LK",
+    "sia\000sia-Cyrl-RU",
+    "sib\000sib-Latn-MY",
+    "sid\000sid-Latn-ET",
+    "sie\000sie-Latn-ZM",
+    "sif\000sif-Latn-BF",
+    "sig\000sig-Latn-GH",
+    "sih\000sih-Latn-NC",
+    "sii\000sii-Latn-IN",
+    "sij\000sij-Latn-PG",
+    "sik\000sik-Latn-BR",
+    "sil\000sil-Latn-GH",
+    "sim\000sim-Latn-PG",
+    "sip\000sip-Tibt-IN",
+    "siq\000siq-Latn-PG",
+    "sir\000sir-Latn-NG",
+    "sis\000sis-Latn-US",
+    "siu\000siu-Latn-PG",
+    "siv\000siv-Latn-PG",
+    "siw\000siw-Latn-PG",
+    "six\000six-Latn-PG",
+    "siy\000siy-Arab-IR",
+    "siz\000siz-Arab-EG",
+    "sja\000sja-Latn-CO",
+    "sjb\000sjb-Latn-ID",
+    "sjc\000sjc-Hans-CN",
+    "sjd\000sjd-Cyrl-RU",
+    "sje\000sje-Latn-SE",
+    "sjg\000sjg-Latn-TD",
+    "sjl\000sjl-Latn-IN",
+    "sjm\000sjm-Latn-PH",
+    "sjp\000sjp-Deva-IN",
+    "sjr\000sjr-Latn-PG",
+    "sjt\000sjt-Cyrl-RU",
+    "sju\000sju-Latn-SE",
+    "sjw\000sjw-Latn-US",
+    "sk\000sk-Latn-SK",
+    "ska\000ska-Latn-US",
+    "skb\000skb-Thai-TH",
+    "skc\000skc-Latn-PG",
+    "skd\000skd-Latn-US",
+    "ske\000ske-Latn-VU",
+    "skf\000skf-Latn-BR",
+    "skg\000skg-Latn-MG",
+    "skh\000skh-Latn-ID",
+    "ski\000ski-Latn-ID",
+    "skj\000skj-Deva-NP",
+    "skm\000skm-Latn-PG",
+    "skn\000skn-Latn-PH",
+    "sko\000sko-Latn-ID",
+    "skp\000skp-Latn-MY",
+    "skq\000skq-Latn-BF",
+    "skr\000skr-Arab-PK",
+    "sks\000sks-Latn-PG",
+    "skt\000skt-Latn-CD",
+    "sku\000sku-Latn-VU",
+    "skv\000skv-Latn-ID",
+    "skw\000skw-Latn-GY",
+    "skx\000skx-Latn-ID",
+    "sky\000sky-Latn-SB",
+    "skz\000skz-Latn-ID",
+    "sl\000sl-Latn-SI",
+    "slc\000slc-Latn-CO",
+    "sld\000sld-Latn-BF",
+    "slg\000slg-Latn-ID",
+    "slh\000slh-Latn-US",
+    "sli\000sli-Latn-PL",
+    "slj\000slj-Latn-BR",
+    "sll\000sll-Latn-PG",
+    "slm\000slm-Latn-PH",
+    "sln\000sln-Latn-US",
+    "slp\000slp-Latn-ID",
+    "slr\000slr-Latn-CN",
+    "slu\000slu-Latn-ID",
+    "slw\000slw-Latn-PG",
+    "slx\000slx-Latn-CD",
+    "sly\000sly-Latn-ID",
+    "slz\000slz-Latn-ID",
+    "sm\000sm-Latn-WS",
+    "sma\000sma-Latn-SE",
+    "smb\000smb-Latn-PG",
+    "smc\000smc-Latn-PG",
+    "smf\000smf-Latn-PG",
+    "smg\000smg-Latn-PG",
+    "smh\000smh-Yiii-CN",
+    "smj\000smj-Latn-SE",
+    "smk\000smk-Latn-PH",
+    "sml\000sml-Latn-PH",
+    "smn\000smn-Latn-FI",
+    "smp\000smp-Samr-IL",
+    "smq\000smq-Latn-PG",
+    "smr\000smr-Latn-ID",
+    "sms\000sms-Latn-FI",
+    "smt\000smt-Latn-IN",
+    "smu\000smu-Khmr-KH",
+    "smw\000smw-Latn-ID",
+    "smx\000smx-Latn-CD",
+    "smy\000smy-Arab-IR",
+    "smz\000smz-Latn-PG",
+    "sn\000sn-Latn-ZW",
+    "snc\000snc-Latn-PG",
+    "sne\000sne-Latn-MY",
+    "snf\000snf-Latn-SN",
+    "sng\000sng-Latn-CD",
+    "sni\000sni-Latn-PE",
+    "snj\000snj-Latn-CF",
+    "snk\000snk-Latn-ML",
+    "snl\000snl-Latn-PH",
+    "snm\000snm-Latn-UG",
+    "snn\000snn-Latn-CO",
+    "sno\000sno-Latn-US",
+    "snp\000snp-Latn-PG",
+    "snq\000snq-Latn-GA",
+    "snr\000snr-Latn-PG",
+    "sns\000sns-Latn-VU",
+    "snu\000snu-Latn-ID",
+    "snv\000snv-Latn-MY",
+    "snw\000snw-Latn-GH",
+    "snx\000snx-Latn-PG",
+    "sny\000sny-Latn-PG",
+    "snz\000snz-Latn-PG",
+    "so\000so-Latn-SO",
+    "soa\000soa-Tavt-TH",
+    "sob\000sob-Latn-ID",
+    "soc\000soc-Latn-CD",
+    "sod\000sod-Latn-CD",
+    "soe\000soe-Latn-CD",
+    "sog\000sog-Sogd-UZ",
+    "soi\000soi-Deva-NP",
+    "sok\000sok-Latn-TD",
+    "sol\000sol-Latn-PG",
+    "soo\000soo-Latn-CD",
+    "sop\000sop-Latn-CD",
+    "soq\000soq-Latn-PG",
+    "sor\000sor-Latn-TD",
+    "sos\000sos-Latn-BF",
+    "sou\000sou-Thai-TH",
+    "sov\000sov-Latn-PW",
+    "sow\000sow-Latn-PG",
+    "sox\000sox-Latn-CM",
+    "soy\000soy-Latn-BJ",
+    "soz\000soz-Latn-TZ",
+    "spb\000spb-Latn-ID",
+    "spc\000spc-Latn-VE",
+    "spd\000spd-Latn-PG",
+    "spe\000spe-Latn-PG",
+    "spg\000spg-Latn-MY",
+    "spi\000spi-Latn-ID",
+    "spk\000spk-Latn-PG",
+    "spl\000spl-Latn-PG",
+    "spm\000spm-Latn-PG",
+    "spn\000spn-Latn-PY",
+    "spo\000spo-Latn-US",
+    "spp\000spp-Latn-ML",
+    "spq\000spq-Latn-PE",
+    "spr\000spr-Latn-ID",
+    "sps\000sps-Latn-PG",
+    "spt\000spt-Tibt-IN",
+    "spv\000spv-Orya-IN",
+    "sq\000sq-Latn-AL",
+    "sqa\000sqa-Latn-NG",
+    "sqh\000sqh-Latn-NG",
+    "sqm\000sqm-Latn-CF",
+    "sqo\000sqo-Arab-IR",
+    "sqq\000sqq-Laoo-LA",
+    "sqt\000sqt-Arab-YE",
+    "squ\000squ-Latn-CA",
+    "sr\000sr-Cyrl-RS",
+    "sr-ME\000sr-Latn-ME",
+    "sr-RO\000sr-Latn-RO",
+    "sr-TR\000sr-Latn-TR",
+    "sra\000sra-Latn-PG",
+    "srb\000srb-Sora-IN",
+    "sre\000sre-Latn-ID",
+    "srf\000srf-Latn-PG",
+    "srg\000srg-Latn-PH",
+    "srh\000srh-Arab-CN",
+    "sri\000sri-Latn-CO",
+    "srk\000srk-Latn-MY",
+    "srl\000srl-Latn-ID",
+    "srm\000srm-Latn-SR",
+    "srn\000srn-Latn-SR",
+    "sro\000sro-Latn-IT",
+    "srq\000srq-Latn-BO",
+    "srr\000srr-Latn-SN",
+    "srs\000srs-Latn-CA",
+    "srt\000srt-Latn-ID",
+    "sru\000sru-Latn-BR",
+    "srv\000srv-Latn-PH",
+    "srw\000srw-Latn-ID",
+    "srx\000srx-Deva-IN",
+    "sry\000sry-Latn-PG",
+    "srz\000srz-Arab-IR",
+    "ss\000ss-Latn-ZA",
+    "ssb\000ssb-Latn-PH",
+    "ssc\000ssc-Latn-TZ",
+    "ssd\000ssd-Latn-PG",
+    "sse\000sse-Latn-PH",
+    "ssf\000ssf-Latn-TW",
+    "ssg\000ssg-Latn-PG",
+    "ssh\000ssh-Arab-AE",
+    "ssj\000ssj-Latn-PG",
+    "ssl\000ssl-Latn-GH",
+    "ssm\000ssm-Latn-MY",
+    "ssn\000ssn-Latn-KE",
+    "sso\000sso-Latn-PG",
+    "ssq\000ssq-Latn-ID",
+    "sss\000sss-Laoo-LA",
+    "sst\000sst-Latn-PG",
+    "ssu\000ssu-Latn-PG",
+    "ssv\000ssv-Latn-VU",
+    "ssx\000ssx-Latn-PG",
+    "ssy\000ssy-Latn-ER",
+    "ssz\000ssz-Latn-PG",
+    "st\000st-Latn-ZA",
+    "sta\000sta-Latn-ZM",
+    "stb\000stb-Latn-PH",
+    "ste\000ste-Latn-ID",
+    "stf\000stf-Latn-PG",
+    "stg\000stg-Latn-VN",
+    "sth\000sth-Latn-IE",
+    "sti\000sti-Latn-VN",
+    "stj\000stj-Latn-BF",
+    "stk\000stk-Latn-PG",
+    "stl\000stl-Latn-NL",
+    "stm\000stm-Latn-PG",
+    "stn\000stn-Latn-SB",
+    "sto\000sto-Latn-CA",
+    "stp\000stp-Latn-MX",
+    "stq\000stq-Latn-DE",
+    "str\000str-Latn-CA",
+    "sts\000sts-Arab-AF",
+    "stt\000stt-Latn-VN",
+    "stu\000stu-Lana-MM",
+    "stu-CN\000stu-Tale-CN",
+    "stu-Tale\000stu-Tale-CN",
+    "stv\000stv-Ethi-ET",
+    "stw\000stw-Latn-FM",
+    "sty\000sty-Cyrl-RU",
+    "su\000su-Latn-ID",
+    "sua\000sua-Latn-PG",
+    "sub\000sub-Latn-CD",
+    "suc\000suc-Latn-PH",
+    "sue\000sue-Latn-PG",
+    "sug\000sug-Latn-PG",
+    "sui\000sui-Latn-PG",
+    "suj\000suj-Latn-TZ",
+    "suk\000suk-Latn-TZ",
+    "suo\000suo-Latn-PG",
+    "suq\000suq-Latn-ET",
+    "sur\000sur-Latn-NG",
+    "sus\000sus-Latn-GN",
+    "sut\000sut-Latn-NI",
+    "suv\000suv-Latn-IN",
+    "suw\000suw-Latn-TZ",
+    "suy\000suy-Latn-BR",
+    "suz\000suz-Deva-NP",
+    "sv\000sv-Latn-SE",
+    "sva\000sva-Geor-GE",
+    "svb\000svb-Latn-PG",
+    "svc\000svc-Latn-VC",
+    "sve\000sve-Latn-ID",
+    "svm\000svm-Latn-IT",
+    "svs\000svs-Latn-SB",
+    "sw\000sw-Latn-TZ",
+    "swb\000swb-Arab-YT",
+    "swf\000swf-Latn-CD",
+    "swg\000swg-Latn-DE",
+    "swi\000swi-Hani-CN",
+    "swj\000swj-Latn-GA",
+    "swk\000swk-Latn-MW",
+    "swm\000swm-Latn-PG",
+    "swo\000swo-Latn-BR",
+    "swp\000swp-Latn-PG",
+    "swq\000swq-Latn-CM",
+    "swr\000swr-Latn-ID",
+    "sws\000sws-Latn-ID",
+    "swt\000swt-Latn-ID",
+    "swu\000swu-Latn-ID",
+    "swv\000swv-Deva-IN",
+    "sww\000sww-Latn-VU",
+    "swx\000swx-Latn-BR",
+    "swy\000swy-Latn-TD",
+    "sxb\000sxb-Latn-KE",
+    "sxe\000sxe-Latn-GA",
+    "sxn\000sxn-Latn-ID",
+    "sxr\000sxr-Latn-TW",
+    "sxs\000sxs-Latn-NG",
+    "sxu\000sxu-Runr-DE",
+    "sxw\000sxw-Latn-BJ",
+    "sya\000sya-Latn-ID",
+    "syb\000syb-Latn-PH",
+    "syc\000syc-Syrc-TR",
+    "syi\000syi-Latn-GA",
+    "syk\000syk-Latn-NG",
+    "syl\000syl-Beng-BD",
+    "sym\000sym-Latn-BF",
+    "syn\000syn-Syrc-IR",
+    "syo\000syo-Latn-KH",
+    "syr\000syr-Syrc-IQ",
+    "sys\000sys-Latn-TD",
+    "syw\000syw-Deva-NP",
+    "syx\000syx-Latn-GA",
+    "sza\000sza-Latn-MY",
+    "szb\000szb-Latn-ID",
+    "szc\000szc-Latn-MY",
+    "szg\000szg-Latn-CD",
+    "szl\000szl-Latn-PL",
+    "szn\000szn-Latn-ID",
+    "szp\000szp-Latn-ID",
+    "szv\000szv-Latn-CM",
+    "szw\000szw-Latn-ID",
+    "szy\000szy-Latn-TW",
+    "ta\000ta-Taml-IN",
+    "taa\000taa-Latn-US",
+    "tab\000tab-Cyrl-RU",
+    "tac\000tac-Latn-MX",
+    "tad\000tad-Latn-ID",
+    "tae\000tae-Latn-BR",
+    "taf\000taf-Latn-BR",
+    "tag\000tag-Latn-SD",
+    "taj\000taj-Deva-NP",
+    "tak\000tak-Latn-NG",
+    "tal\000tal-Latn-NG",
+    "tan\000tan-Latn-NG",
+    "tao\000tao-Latn-TW",
+    "tap\000tap-Latn-CD",
+    "taq\000taq-Latn-ML",
+    "tar\000tar-Latn-MX",
+    "tas\000tas-Latn-VN",
+    "tau\000tau-Latn-US",
+    "tav\000tav-Latn-CO",
+    "taw\000taw-Latn-PG",
+    "tax\000tax-Latn-TD",
+    "tay\000tay-Latn-TW",
+    "taz\000taz-Latn-SD",
+    "tba\000tba-Latn-BR",
+    "tbc\000tbc-Latn-PG",
+    "tbd\000tbd-Latn-PG",
+    "tbe\000tbe-Latn-SB",
+    "tbf\000tbf-Latn-PG",
+    "tbg\000tbg-Latn-PG",
+    "tbh\000tbh-Latn-AU",
+    "tbi\000tbi-Latn-SD",
+    "tbj\000tbj-Latn-PG",
+    "tbk\000tbk-Tagb-PH",
+    "tbl\000tbl-Latn-PH",
+    "tbm\000tbm-Latn-CD",
+    "tbn\000tbn-Latn-CO",
+    "tbo\000tbo-Latn-PG",
+    "tbp\000tbp-Latn-ID",
+    "tbs\000tbs-Latn-PG",
+    "tbt\000tbt-Latn-CD",
+    "tbu\000tbu-Latn-MX",
+    "tbv\000tbv-Latn-PG",
+    "tbw\000tbw-Latn-PH",
+    "tbx\000tbx-Latn-PG",
+    "tby\000tby-Latn-ID",
+    "tbz\000tbz-Latn-BJ",
+    "tca\000tca-Latn-BR",
+    "tcb\000tcb-Latn-US",
+    "tcc\000tcc-Latn-TZ",
+    "tcd\000tcd-Latn-GH",
+    "tce\000tce-Latn-CA",
+    "tcf\000tcf-Latn-MX",
+    "tcg\000tcg-Latn-ID",
+    "tch\000tch-Latn-TC",
+    "tci\000tci-Latn-PG",
+    "tck\000tck-Latn-GA",
+    "tcm\000tcm-Latn-ID",
+    "tcn\000tcn-Deva-NP",
+    "tco\000tco-Mymr-MM",
+    "tcp\000tcp-Latn-MM",
+    "tcq\000tcq-Latn-ID",
+    "tcs\000tcs-Latn-AU",
+    "tcu\000tcu-Latn-MX",
+    "tcw\000tcw-Latn-MX",
+    "tcx\000tcx-Taml-IN",
+    "tcy\000tcy-Knda-IN",
+    "tcz\000tcz-Latn-IN",
+    "tda\000tda-Tfng-NE",
+    "tdb\000tdb-Deva-IN",
+    "tdc\000tdc-Latn-CO",
+    "tdd\000tdd-Tale-CN",
+    "tde\000tde-Latn-ML",
+    "tdg\000tdg-Deva-NP",
+    "tdh\000tdh-Deva-NP",
+    "tdi\000tdi-Latn-ID",
+    "tdj\000tdj-Latn-ID",
+    "tdk\000tdk-Latn-NG",
+    "tdl\000tdl-Latn-NG",
+    "tdm\000tdm-Latn-GY",
+    "tdn\000tdn-Latn-ID",
+    "tdo\000tdo-Latn-NG",
+    "tdq\000tdq-Latn-NG",
+    "tdr\000tdr-Latn-VN",
+    "tds\000tds-Latn-ID",
+    "tdt\000tdt-Latn-TL",
+    "tdv\000tdv-Latn-NG",
+    "tdx\000tdx-Latn-MG",
+    "tdy\000tdy-Latn-PH",
+    "te\000te-Telu-IN",
+    "tea\000tea-Latn-MY",
+    "teb\000teb-Latn-EC",
+    "tec\000tec-Latn-KE",
+    "ted\000ted-Latn-CI",
+    "tee\000tee-Latn-MX",
+    "teg\000teg-Latn-GA",
+    "teh\000teh-Latn-AR",
+    "tei\000tei-Latn-PG",
+    "tek\000tek-Latn-CD",
+    "tem\000tem-Latn-SL",
+    "ten\000ten-Latn-CO",
+    "teo\000teo-Latn-UG",
+    "tep\000tep-Latn-MX",
+    "teq\000teq-Latn-SD",
+    "ter\000ter-Latn-BR",
+    "tes\000tes-Java-ID",
+    "tet\000tet-Latn-TL",
+    "teu\000teu-Latn-UG",
+    "tev\000tev-Latn-ID",
+    "tew\000tew-Latn-US",
+    "tex\000tex-Latn-SS",
+    "tey\000tey-Latn-SD",
+    "tez\000tez-Latn-NE",
+    "tfi\000tfi-Latn-BJ",
+    "tfn\000tfn-Latn-US",
+    "tfo\000tfo-Latn-ID",
+    "tfr\000tfr-Latn-PA",
+    "tft\000tft-Latn-ID",
+    "tg\000tg-Cyrl-TJ",
+    "tg-Arab\000tg-Arab-PK",
+    "tg-PK\000tg-Arab-PK",
+    "tga\000tga-Latn-KE",
+    "tgb\000tgb-Latn-MY",
+    "tgc\000tgc-Latn-PG",
+    "tgd\000tgd-Latn-NG",
+    "tge\000tge-Deva-NP",
+    "tgf\000tgf-Tibt-BT",
+    "tgh\000tgh-Latn-TT",
+    "tgi\000tgi-Latn-PG",
+    "tgj\000tgj-Latn-IN",
+    "tgn\000tgn-Latn-PH",
+    "tgo\000tgo-Latn-PG",
+    "tgp\000tgp-Latn-VU",
+    "tgq\000tgq-Latn-MY",
+    "tgs\000tgs-Latn-VU",
+    "tgt\000tgt-Latn-PH",
+    "tgu\000tgu-Latn-PG",
+    "tgv\000tgv-Latn-BR",
+    "tgw\000tgw-Latn-CI",
+    "tgx\000tgx-Latn-CA",
+    "tgy\000tgy-Latn-SS",
+    "tgz\000tgz-Latn-AU",
+    "th\000th-Thai-TH",
+    "thd\000thd-Latn-AU",
+    "the\000the-Deva-NP",
+    "thf\000thf-Deva-NP",
+    "thh\000thh-Latn-MX",
+    "thi\000thi-Tale-LA",
+    "thk\000thk-Latn-KE",
+    "thl\000thl-Deva-NP",
+    "thm\000thm-Thai-TH",
+    "thp\000thp-Latn-CA",
+    "thq\000thq-Deva-NP",
+    "thr\000thr-Deva-NP",
+    "ths\000ths-Deva-NP",
+    "tht\000tht-Latn-CA",
+    "thu\000thu-Latn-SS",
+    "thv\000thv-Latn-DZ",
+    "thy\000thy-Latn-NG",
+    "thz\000thz-Latn-NE",
+    "ti\000ti-Ethi-ET",
+    "tic\000tic-Latn-SD",
+    "tif\000tif-Latn-PG",
+    "tig\000tig-Ethi-ER",
+    "tih\000tih-Latn-MY",
+    "tii\000tii-Latn-CD",
+    "tij\000tij-Deva-NP",
+    "tik\000tik-Latn-CM",
+    "til\000til-Latn-US",
+    "tim\000tim-Latn-PG",
+    "tin\000tin-Cyrl-RU",
+    "tio\000tio-Latn-PG",
+    "tip\000tip-Latn-ID",
+    "tiq\000tiq-Latn-BF",
+    "tis\000tis-Latn-PH",
+    "tit\000tit-Latn-CO",
+    "tiu\000tiu-Latn-PH",
+    "tiv\000tiv-Latn-NG",
+    "tiw\000tiw-Latn-AU",
+    "tix\000tix-Latn-US",
+    "tiy\000tiy-Latn-PH",
+    "tja\000tja-Latn-LR",
+    "tjg\000tjg-Latn-ID",
+    "tji\000tji-Latn-CN",
+    "tjj\000tjj-Latn-AU",
+    "tjl\000tjl-Mymr-MM",
+    "tjn\000tjn-Latn-CI",
+    "tjo\000tjo-Arab-DZ",
+    "tjp\000tjp-Latn-AU",
+    "tjs\000tjs-Latn-CN",
+    "tju\000tju-Latn-AU",
+    "tjw\000tjw-Latn-AU",
+    "tk\000tk-Latn-TM",
+    "tka\000tka-Latn-BR",
+    "tkb\000tkb-Deva-IN",
+    "tkd\000tkd-Latn-TL",
+    "tke\000tke-Latn-MZ",
+    "tkf\000tkf-Latn-BR",
+    "tkg\000tkg-Latn-MG",
+    "tkl\000tkl-Latn-TK",
+    "tkp\000tkp-Latn-SB",
+    "tkq\000tkq-Latn-NG",
+    "tkr\000tkr-Latn-AZ",
+    "tks\000tks-Arab-IR",
+    "tkt\000tkt-Deva-NP",
+    "tku\000tku-Latn-MX",
+    "tkv\000tkv-Latn-PG",
+    "tkw\000tkw-Latn-SB",
+    "tkx\000tkx-Latn-ID",
+    "tkz\000tkz-Latn-VN",
+    "tl\000tl-Latn-PH",
+    "tla\000tla-Latn-MX",
+    "tlb\000tlb-Latn-ID",
+    "tlc\000tlc-Latn-MX",
+    "tld\000tld-Latn-ID",
+    "tlf\000tlf-Latn-PG",
+    "tlg\000tlg-Latn-ID",
+    "tli\000tli-Latn-US",
+    "tlj\000tlj-Latn-UG",
+    "tlk\000tlk-Latn-ID",
+    "tll\000tll-Latn-CD",
+    "tlm\000tlm-Latn-VU",
+    "tln\000tln-Latn-ID",
+    "tlp\000tlp-Latn-MX",
+    "tlq\000tlq-Latn-MM",
+    "tlr\000tlr-Latn-SB",
+    "tls\000tls-Latn-VU",
+    "tlt\000tlt-Latn-ID",
+    "tlu\000tlu-Latn-ID",
+    "tlv\000tlv-Latn-ID",
+    "tlx\000tlx-Latn-PG",
+    "tly\000tly-Latn-AZ",
+    "tma\000tma-Latn-TD",
+    "tmb\000tmb-Latn-VU",
+    "tmc\000tmc-Latn-TD",
+    "tmd\000tmd-Latn-PG",
+    "tme\000tme-Latn-BR",
+    "tmf\000tmf-Latn-PY",
+    "tmg\000tmg-Latn-ID",
+    "tmh\000tmh-Latn-NE",
+    "tmi\000tmi-Latn-VU",
+    "tmj\000tmj-Latn-ID",
+    "tml\000tml-Latn-ID",
+    "tmm\000tmm-Latn-VN",
+    "tmn\000tmn-Latn-ID",
+    "tmo\000tmo-Latn-MY",
+    "tmq\000tmq-Latn-PG",
+    "tmr\000tmr-Syrc-IL",
+    "tmt\000tmt-Latn-VU",
+    "tmu\000tmu-Latn-ID",
+    "tmv\000tmv-Latn-CD",
+    "tmw\000tmw-Latn-MY",
+    "tmy\000tmy-Latn-PG",
+    "tmz\000tmz-Latn-VE",
+    "tn\000tn-Latn-ZA",
+    "tna\000tna-Latn-BO",
+    "tnb\000tnb-Latn-CO",
+    "tnc\000tnc-Latn-CO",
+    "tnd\000tnd-Latn-CO",
+    "tng\000tng-Latn-TD",
+    "tnh\000tnh-Latn-PG",
+    "tni\000tni-Latn-ID",
+    "tnk\000tnk-Latn-VU",
+    "tnl\000tnl-Latn-VU",
+    "tnm\000tnm-Latn-ID",
+    "tnn\000tnn-Latn-VU",
+    "tno\000tno-Latn-BO",
+    "tnp\000tnp-Latn-VU",
+    "tnq\000tnq-Latn-PR",
+    "tnr\000tnr-Latn-SN",
+    "tns\000tns-Latn-PG",
+    "tnt\000tnt-Latn-ID",
+    "tnv\000tnv-Cakm-BD",
+    "tnw\000tnw-Latn-ID",
+    "tnx\000tnx-Latn-SB",
+    "tny\000tny-Latn-TZ",
+    "to\000to-Latn-TO",
+    "tob\000tob-Latn-AR",
+    "toc\000toc-Latn-MX",
+    "tod\000tod-Latn-GN",
+    "tof\000tof-Latn-PG",
+    "tog\000tog-Latn-MW",
+    "toh\000toh-Latn-MZ",
+    "toi\000toi-Latn-ZM",
+    "toj\000toj-Latn-MX",
+    "tok\000tok-Latn-001",
+    "tol\000tol-Latn-US",
+    "tom\000tom-Latn-ID",
+    "too\000too-Latn-MX",
+    "top\000top-Latn-MX",
+    "toq\000toq-Latn-SS",
+    "tor\000tor-Latn-CD",
+    "tos\000tos-Latn-MX",
+    "tou\000tou-Latn-VN",
+    "tov\000tov-Arab-IR",
+    "tow\000tow-Latn-US",
+    "tox\000tox-Latn-PW",
+    "toy\000toy-Latn-ID",
+    "toz\000toz-Latn-CM",
+    "tpa\000tpa-Latn-PG",
+    "tpc\000tpc-Latn-MX",
+    "tpe\000tpe-Latn-BD",
+    "tpf\000tpf-Latn-ID",
+    "tpg\000tpg-Latn-ID",
+    "tpi\000tpi-Latn-PG",
+    "tpj\000tpj-Latn-PY",
+    "tpk\000tpk-Latn-BR",
+    "tpl\000tpl-Latn-MX",
+    "tpm\000tpm-Latn-GH",
+    "tpn\000tpn-Latn-BR",
+    "tpp\000tpp-Latn-MX",
+    "tpr\000tpr-Latn-BR",
+    "tpt\000tpt-Latn-MX",
+    "tpu\000tpu-Khmr-KH",
+    "tpv\000tpv-Latn-MP",
+    "tpx\000tpx-Latn-MX",
+    "tpy\000tpy-Latn-BR",
+    "tpz\000tpz-Latn-PG",
+    "tqb\000tqb-Latn-BR",
+    "tql\000tql-Latn-VU",
+    "tqm\000tqm-Latn-PG",
+    "tqn\000tqn-Latn-US",
+    "tqo\000tqo-Latn-PG",
+    "tqp\000tqp-Latn-PG",
+    "tqt\000tqt-Latn-MX",
+    "tqu\000tqu-Latn-SB",
+    "tqw\000tqw-Latn-US",
+    "tr\000tr-Latn-TR",
+    "tra\000tra-Arab-AF",
+    "trb\000trb-Latn-PG",
+    "trc\000trc-Latn-MX",
+    "tre\000tre-Latn-ID",
+    "trf\000trf-Latn-TT",
+    "trg\000trg-Hebr-IL",
+    "trh\000trh-Latn-PG",
+    "tri\000tri-Latn-SR",
+    "trj\000trj-Latn-TD",
+    "trl\000trl-Latn-GB",
+    "trm\000trm-Arab-AF",
+    "trn\000trn-Latn-BO",
+    "tro\000tro-Latn-IN",
+    "trp\000trp-Latn-IN",
+    "trq\000trq-Latn-MX",
+    "trr\000trr-Latn-PE",
+    "trs\000trs-Latn-MX",
+    "trt\000trt-Latn-ID",
+    "tru\000tru-Latn-TR",
+    "trv\000trv-Latn-TW",
+    "trw\000trw-Arab-PK",
+    "trx\000trx-Latn-MY",
+    "try\000try-Latn-IN",
+    "trz\000trz-Latn-BR",
+    "ts\000ts-Latn-ZA",
+    "tsa\000tsa-Latn-CG",
+    "tsb\000tsb-Latn-ET",
+    "tsc\000tsc-Latn-MZ",
+    "tsd\000tsd-Grek-GR",
+    "tsg\000tsg-Latn-PH",
+    "tsh\000tsh-Latn-CM",
+    "tsi\000tsi-Latn-CA",
+    "tsj\000tsj-Tibt-BT",
+    "tsl\000tsl-Latn-VN",
+    "tsp\000tsp-Latn-BF",
+    "tsr\000tsr-Latn-VU",
+    "tst\000tst-Latn-ML",
+    "tsu\000tsu-Latn-TW",
+    "tsv\000tsv-Latn-GA",
+    "tsw\000tsw-Latn-NG",
+    "tsx\000tsx-Latn-PG",
+    "tsz\000tsz-Latn-MX",
+    "tt\000tt-Cyrl-RU",
+    "ttb\000ttb-Latn-NG",
+    "ttc\000ttc-Latn-GT",
+    "ttd\000ttd-Latn-PG",
+    "tte\000tte-Latn-PG",
+    "ttf\000ttf-Latn-CM",
+    "tth\000tth-Laoo-LA",
+    "tti\000tti-Latn-ID",
+    "ttj\000ttj-Latn-UG",
+    "ttk\000ttk-Latn-CO",
+    "ttl\000ttl-Latn-ZM",
+    "ttm\000ttm-Latn-CA",
+    "ttn\000ttn-Latn-ID",
+    "tto\000tto-Laoo-LA",
+    "ttp\000ttp-Latn-ID",
+    "ttr\000ttr-Latn-NG",
+    "tts\000tts-Thai-TH",
+    "ttt\000ttt-Latn-AZ",
+    "ttu\000ttu-Latn-PG",
+    "ttv\000ttv-Latn-PG",
+    "ttw\000ttw-Latn-MY",
+    "tty\000tty-Latn-ID",
+    "ttz\000ttz-Deva-NP",
+    "tua\000tua-Latn-PG",
+    "tub\000tub-Latn-US",
+    "tuc\000tuc-Latn-PG",
+    "tud\000tud-Latn-BR",
+    "tue\000tue-Latn-CO",
+    "tuf\000tuf-Latn-CO",
+    "tug\000tug-Latn-TD",
+    "tuh\000tuh-Latn-PG",
+    "tui\000tui-Latn-CM",
+    "tuj\000tuj-Latn-ID",
+    "tul\000tul-Latn-NG",
+    "tum\000tum-Latn-MW",
+    "tun\000tun-Latn-US",
+    "tuo\000tuo-Latn-BR",
+    "tuq\000tuq-Latn-TD",
+    "tus\000tus-Latn-CA",
+    "tuu\000tuu-Latn-US",
+    "tuv\000tuv-Latn-KE",
+    "tux\000tux-Latn-BR",
+    "tuy\000tuy-Latn-KE",
+    "tuz\000tuz-Latn-BF",
+    "tva\000tva-Latn-SB",
+    "tvd\000tvd-Latn-NG",
+    "tve\000tve-Latn-ID",
+    "tvi\000tvi-Latn-NG",
+    "tvk\000tvk-Latn-VU",
+    "tvl\000tvl-Latn-TV",
+    "tvm\000tvm-Latn-ID",
+    "tvn\000tvn-Mymr-MM",
+    "tvo\000tvo-Latn-ID",
+    "tvs\000tvs-Latn-KE",
+    "tvt\000tvt-Latn-IN",
+    "tvu\000tvu-Latn-CM",
+    "tvw\000tvw-Latn-ID",
+    "tvx\000tvx-Latn-TW",
+    "twa\000twa-Latn-US",
+    "twb\000twb-Latn-PH",
+    "twd\000twd-Latn-NL",
+    "twe\000twe-Latn-ID",
+    "twf\000twf-Latn-US",
+    "twg\000twg-Latn-ID",
+    "twh\000twh-Latn-VN",
+    "twl\000twl-Latn-MZ",
+    "twm\000twm-Tibt-IN",
+    "twn\000twn-Latn-CM",
+    "two\000two-Latn-BW",
+    "twp\000twp-Latn-PG",
+    "twq\000twq-Latn-NE",
+    "twr\000twr-Latn-MX",
+    "twt\000twt-Latn-BR",
+    "twu\000twu-Latn-ID",
+    "tww\000tww-Latn-PG",
+    "twx\000twx-Latn-MZ",
+    "twy\000twy-Latn-ID",
+    "txa\000txa-Latn-MY",
+    "txe\000txe-Latn-ID",
+    "txg\000txg-Tang-CN",
+    "txi\000txi-Latn-BR",
+    "txj\000txj-Latn-NG",
+    "txm\000txm-Latn-ID",
+    "txn\000txn-Latn-ID",
+    "txo\000txo-Toto-IN",
+    "txq\000txq-Latn-ID",
+    "txs\000txs-Latn-ID",
+    "txt\000txt-Latn-ID",
+    "txu\000txu-Latn-BR",
+    "txx\000txx-Latn-MY",
+    "txy\000txy-Latn-MG",
+    "ty\000ty-Latn-PF",
+    "tya\000tya-Latn-PG",
+    "tye\000tye-Latn-NG",
+    "tyh\000tyh-Latn-VN",
+    "tyi\000tyi-Latn-CG",
+    "tyj\000tyj-Latn-VN",
+    "tyl\000tyl-Latn-VN",
+    "tyn\000tyn-Latn-ID",
+    "typ\000typ-Latn-AU",
+    "tyr\000tyr-Tavt-VN",
+    "tys\000tys-Latn-VN",
+    "tyt\000tyt-Latn-VN",
+    "tyu\000tyu-Latn-BW",
+    "tyv\000tyv-Cyrl-RU",
+    "tyx\000tyx-Latn-CG",
+    "tyy\000tyy-Latn-NG",
+    "tyz\000tyz-Latn-VN",
+    "tzh\000tzh-Latn-MX",
+    "tzj\000tzj-Latn-GT",
+    "tzl\000tzl-Latn-001",
+    "tzm\000tzm-Latn-MA",
+    "tzn\000tzn-Latn-ID",
+    "tzo\000tzo-Latn-MX",
+    "tzx\000tzx-Latn-PG",
+    "uam\000uam-Latn-BR",
+    "uar\000uar-Latn-PG",
+    "uba\000uba-Latn-NG",
+    "ubi\000ubi-Latn-TD",
+    "ubl\000ubl-Latn-PH",
+    "ubr\000ubr-Latn-PG",
+    "ubu\000ubu-Latn-PG",
+    "uby\000uby-Latn-TR",
+    "uda\000uda-Latn-NG",
+    "ude\000ude-Cyrl-RU",
+    "udg\000udg-Mlym-IN",
+    "udi\000udi-Cyrl-RU",
+    "udj\000udj-Latn-ID",
+    "udl\000udl-Latn-CM",
+    "udm\000udm-Cyrl-RU",
+    "udu\000udu-Latn-SD",
+    "ues\000ues-Latn-ID",
+    "ufi\000ufi-Latn-PG",
+    "ug\000ug-Arab-CN",
+    "ug-Cyrl\000ug-Cyrl-KZ",
+    "ug-KZ\000ug-Cyrl-KZ",
+    "ug-MN\000ug-Cyrl-MN",
+    "uga\000uga-Ugar-SY",
+    "ugb\000ugb-Latn-AU",
+    "uge\000uge-Latn-SB",
+    "ugh\000ugh-Cyrl-RU",
+    "ugo\000ugo-Thai-TH",
+    "uha\000uha-Latn-NG",
+    "uhn\000uhn-Latn-ID",
+    "uis\000uis-Latn-PG",
+    "uiv\000uiv-Latn-CM",
+    "uji\000uji-Latn-NG",
+    "uk\000uk-Cyrl-UA",
+    "uka\000uka-Latn-ID",
+    "ukg\000ukg-Latn-PG",
+    "ukh\000ukh-Latn-CF",
+    "uki\000uki-Orya-IN",
+    "ukk\000ukk-Latn-MM",
+    "ukp\000ukp-Latn-NG",
+    "ukq\000ukq-Latn-NG",
+    "uku\000uku-Latn-NG",
+    "ukv\000ukv-Latn-SS",
+    "ukw\000ukw-Latn-NG",
+    "uky\000uky-Latn-AU",
+    "ula\000ula-Latn-NG",
+    "ulb\000ulb-Latn-NG",
+    "ulc\000ulc-Cyrl-RU",
+    "ule\000ule-Latn-AR",
+    "ulf\000ulf-Latn-ID",
+    "uli\000uli-Latn-FM",
+    "ulk\000ulk-Latn-AU",
+    "ulm\000ulm-Latn-ID",
+    "uln\000uln-Latn-PG",
+    "ulu\000ulu-Latn-ID",
+    "ulw\000ulw-Latn-NI",
+    "uly\000uly-Latn-NG",
+    "uma\000uma-Latn-US",
+    "umb\000umb-Latn-AO",
+    "umd\000umd-Latn-AU",
+    "umg\000umg-Latn-AU",
+    "umi\000umi-Latn-MY",
+    "umm\000umm-Latn-NG",
+    "umn\000umn-Latn-MM",
+    "umo\000umo-Latn-BR",
+    "ump\000ump-Latn-AU",
+    "umr\000umr-Latn-AU",
+    "ums\000ums-Latn-ID",
+    "una\000una-Latn-PG",
+    "und\000en-Latn-US",
+    "und-419\000es-Latn-419",
+    "und-AD\000ca-Latn-AD",
+    "und-AE\000ar-Arab-AE",
+    "und-AF\000fa-Arab-AF",
+    "und-AL\000sq-Latn-AL",
+    "und-AM\000hy-Armn-AM",
+    "und-AO\000pt-Latn-AO",
+    "und-AR\000es-Latn-AR",
+    "und-AS\000sm-Latn-AS",
+    "und-AT\000de-Latn-AT",
+    "und-AW\000nl-Latn-AW",
+    "und-AX\000sv-Latn-AX",
+    "und-AZ\000az-Latn-AZ",
+    "und-Adlm\000ff-Adlm-GN",
+    "und-Aghb\000xag-Aghb-AZ",
+    "und-Ahom\000aho-Ahom-IN",
+    "und-Arab\000ar-Arab-EG",
+    "und-Arab-AF\000fa-Arab-AF",
+    "und-Arab-AZ\000az-Arab-AZ",
+    "und-Arab-BN\000ms-Arab-BN",
+    "und-Arab-CC\000ms-Arab-CC",
+    "und-Arab-CN\000ug-Arab-CN",
+    "und-Arab-GB\000ur-Arab-GB",
+    "und-Arab-ID\000ms-Arab-ID",
+    "und-Arab-IN\000ur-Arab-IN",
+    "und-Arab-IR\000fa-Arab-IR",
+    "und-Arab-KH\000cja-Arab-KH",
+    "und-Arab-MM\000rhg-Arab-MM",
+    "und-Arab-MN\000kk-Arab-MN",
+    "und-Arab-MU\000ur-Arab-MU",
+    "und-Arab-NG\000ha-Arab-NG",
+    "und-Arab-PK\000ur-Arab-PK",
+    "und-Arab-TH\000mfa-Arab-TH",
+    "und-Arab-TJ\000fa-Arab-TJ",
+    "und-Arab-TR\000apc-Arab-TR",
+    "und-Arab-YT\000swb-Arab-YT",
+    "und-Armi\000arc-Armi-IR",
+    "und-Armn\000hy-Armn-AM",
+    "und-Avst\000ae-Avst-IR",
+    "und-BA\000bs-Latn-BA",
+    "und-BD\000bn-Beng-BD",
+    "und-BE\000nl-Latn-BE",
+    "und-BF\000fr-Latn-BF",
+    "und-BG\000bg-Cyrl-BG",
+    "und-BH\000ar-Arab-BH",
+    "und-BI\000rn-Latn-BI",
+    "und-BJ\000fr-Latn-BJ",
+    "und-BL\000fr-Latn-BL",
+    "und-BN\000ms-Latn-BN",
+    "und-BO\000es-Latn-BO",
+    "und-BQ\000pap-Latn-BQ",
+    "und-BR\000pt-Latn-BR",
+    "und-BT\000dz-Tibt-BT",
+    "und-BV\000no-Latn-BV",
+    "und-BY\000ru-Cyrl-BY",
+    "und-Bali\000ban-Bali-ID",
+    "und-Bamu\000bax-Bamu-CM",
+    "und-Bass\000bsq-Bass-LR",
+    "und-Batk\000bbc-Batk-ID",
+    "und-Beng\000bn-Beng-BD",
+    "und-Berf\000zag-Berf-SD",
+    "und-Bhks\000sa-Bhks-IN",
+    "und-Bopo\000zh-Bopo-TW",
+    "und-Brah\000pka-Brah-IN",
+    "und-Brai\000fr-Brai-FR",
+    "und-Bugi\000bug-Bugi-ID",
+    "und-Buhd\000bku-Buhd-PH",
+    "und-CC\000ms-Arab-CC",
+    "und-CD\000fr-Latn-CD",
+    "und-CF\000sg-Latn-CF",
+    "und-CG\000fr-Latn-CG",
+    "und-CH\000de-Latn-CH",
+    "und-CI\000fr-Latn-CI",
+    "und-CL\000es-Latn-CL",
+    "und-CM\000fr-Latn-CM",
+    "und-CN\000zh-Hans-CN",
+    "und-CO\000es-Latn-CO",
+    "und-CR\000es-Latn-CR",
+    "und-CU\000es-Latn-CU",
+    "und-CV\000pt-Latn-CV",
+    "und-CW\000pap-Latn-CW",
+    "und-CY\000el-Grek-CY",
+    "und-CZ\000cs-Latn-CZ",
+    "und-Cakm\000ccp-Cakm-BD",
+    "und-Cans\000iu-Cans-CA",
+    "und-Cari\000xcr-Cari-TR",
+    "und-Cham\000cjm-Cham-VN",
+    "und-Cher\000chr-Cher-US",
+    "und-Chrs\000xco-Chrs-UZ",
+    "und-Copt\000cop-Copt-EG",
+    "und-Cpmn\000und-Cpmn-CY",
+    "und-Cprt\000ecy-Cprt-CY",
+    "und-Cyrl\000ru-Cyrl-RU",
+    "und-Cyrl-AF\000kaa-Cyrl-AF",
+    "und-Cyrl-AL\000mk-Cyrl-AL",
+    "und-Cyrl-AZ\000az-Cyrl-AZ",
+    "und-Cyrl-BA\000sr-Cyrl-BA",
+    "und-Cyrl-BG\000bg-Cyrl-BG",
+    "und-Cyrl-GE\000ab-Cyrl-GE",
+    "und-Cyrl-GR\000mk-Cyrl-GR",
+    "und-Cyrl-IR\000kaa-Cyrl-IR",
+    "und-Cyrl-KG\000ky-Cyrl-KG",
+    "und-Cyrl-MD\000uk-Cyrl-MD",
+    "und-Cyrl-ME\000sr-Cyrl-ME",
+    "und-Cyrl-MK\000mk-Cyrl-MK",
+    "und-Cyrl-MN\000mn-Cyrl-MN",
+    "und-Cyrl-RO\000bg-Cyrl-RO",
+    "und-Cyrl-RS\000sr-Cyrl-RS",
+    "und-Cyrl-SK\000uk-Cyrl-SK",
+    "und-Cyrl-TJ\000tg-Cyrl-TJ",
+    "und-Cyrl-TR\000kbd-Cyrl-TR",
+    "und-Cyrl-UA\000uk-Cyrl-UA",
+    "und-Cyrl-UZ\000uz-Cyrl-UZ",
+    "und-Cyrl-XK\000sr-Cyrl-XK",
+    "und-DE\000de-Latn-DE",
+    "und-DJ\000fr-Latn-DJ",
+    "und-DK\000da-Latn-DK",
+    "und-DO\000es-Latn-DO",
+    "und-DZ\000ar-Arab-DZ",
+    "und-Deva\000hi-Deva-IN",
+    "und-Deva-BT\000ne-Deva-BT",
+    "und-Deva-FJ\000hif-Deva-FJ",
+    "und-Deva-MU\000bho-Deva-MU",
+    "und-Deva-NP\000ne-Deva-NP",
+    "und-Deva-PK\000btv-Deva-PK",
+    "und-Diak\000dv-Diak-MV",
+    "und-Dogr\000doi-Dogr-IN",
+    "und-Dupl\000fr-Dupl-FR",
+    "und-EA\000es-Latn-EA",
+    "und-EC\000es-Latn-EC",
+    "und-EE\000et-Latn-EE",
+    "und-EG\000ar-Arab-EG",
+    "und-EH\000ar-Arab-EH",
+    "und-ER\000ti-Ethi-ER",
+    "und-ES\000es-Latn-ES",
+    "und-ET\000am-Ethi-ET",
+    "und-Egyp\000egy-Egyp-EG",
+    "und-Elba\000sq-Elba-AL",
+    "und-Elym\000arc-Elym-IR",
+    "und-Ethi\000am-Ethi-ET",
+    "und-Ethi-ER\000ti-Ethi-ER",
+    "und-FI\000fi-Latn-FI",
+    "und-FO\000fo-Latn-FO",
+    "und-FR\000fr-Latn-FR",
+    "und-GA\000fr-Latn-GA",
+    "und-GE\000ka-Geor-GE",
+    "und-GF\000fr-Latn-GF",
+    "und-GH\000ak-Latn-GH",
+    "und-GL\000kl-Latn-GL",
+    "und-GN\000fr-Latn-GN",
+    "und-GP\000fr-Latn-GP",
+    "und-GQ\000es-Latn-GQ",
+    "und-GR\000el-Grek-GR",
+    "und-GT\000es-Latn-GT",
+    "und-GW\000pt-Latn-GW",
+    "und-Gara\000wo-Gara-SN",
+    "und-Geor\000ka-Geor-GE",
+    "und-Glag\000cu-Glag-BG",
+    "und-Gong\000wsg-Gong-IN",
+    "und-Gonm\000esg-Gonm-IN",
+    "und-Goth\000got-Goth-UA",
+    "und-Gran\000sa-Gran-IN",
+    "und-Grek\000el-Grek-GR",
+    "und-Grek-TR\000bgx-Grek-TR",
+    "und-Gujr\000gu-Gujr-IN",
+    "und-Gukh\000gvr-Gukh-NP",
+    "und-Guru\000pa-Guru-IN",
+    "und-HK\000zh-Hant-HK",
+    "und-HN\000es-Latn-HN",
+    "und-HR\000hr-Latn-HR",
+    "und-HT\000ht-Latn-HT",
+    "und-HU\000hu-Latn-HU",
+    "und-Hanb\000zh-Hanb-TW",
+    "und-Hang\000ko-Hang-KR",
+    "und-Hani\000zh-Hani-CN",
+    "und-Hano\000hnn-Hano-PH",
+    "und-Hans\000zh-Hans-CN",
+    "und-Hant\000zh-Hant-TW",
+    "und-Hant-CA\000yue-Hant-CA",
+    "und-Hant-CN\000yue-Hant-CN",
+    "und-Hatr\000arc-Hatr-IQ",
+    "und-Hebr\000he-Hebr-IL",
+    "und-Hebr-SE\000yi-Hebr-SE",
+    "und-Hebr-UA\000yi-Hebr-UA",
+    "und-Hebr-US\000yi-Hebr-US",
+    "und-Hira\000ja-Hira-JP",
+    "und-Hluw\000hlu-Hluw-TR",
+    "und-Hmng\000hnj-Hmng-LA",
+    "und-Hmnp\000mww-Hmnp-US",
+    "und-Hmnp-AU\000hnj-Hmnp-AU",
+    "und-Hmnp-FR\000hnj-Hmnp-FR",
+    "und-Hmnp-GF\000hnj-Hmnp-GF",
+    "und-Hmnp-LA\000hnj-Hmnp-LA",
+    "und-Hmnp-MM\000hnj-Hmnp-MM",
+    "und-Hmnp-SR\000hnj-Hmnp-SR",
+    "und-Hmnp-TH\000hnj-Hmnp-TH",
+    "und-Hung\000hu-Hung-HU",
+    "und-IC\000es-Latn-IC",
+    "und-ID\000id-Latn-ID",
+    "und-IL\000he-Hebr-IL",
+    "und-IN\000hi-Deva-IN",
+    "und-IQ\000ar-Arab-IQ",
+    "und-IR\000fa-Arab-IR",
+    "und-IS\000is-Latn-IS",
+    "und-IT\000it-Latn-IT",
+    "und-Ital\000ett-Ital-IT",
+    "und-JO\000ar-Arab-JO",
+    "und-JP\000ja-Jpan-JP",
+    "und-Jamo\000ko-Jamo-KR",
+    "und-Java\000jv-Java-ID",
+    "und-Jpan\000ja-Jpan-JP",
+    "und-KE\000sw-Latn-KE",
+    "und-KG\000ky-Cyrl-KG",
+    "und-KH\000km-Khmr-KH",
+    "und-KM\000ar-Arab-KM",
+    "und-KP\000ko-Kore-KP",
+    "und-KR\000ko-Kore-KR",
+    "und-KW\000ar-Arab-KW",
+    "und-KZ\000ru-Cyrl-KZ",
+    "und-Kali\000eky-Kali-MM",
+    "und-Kana\000ja-Kana-JP",
+    "und-Kawi\000kaw-Kawi-ID",
+    "und-Khar\000pgd-Khar-PK",
+    "und-Khmr\000km-Khmr-KH",
+    "und-Khoj\000sd-Khoj-IN",
+    "und-Kits\000zkt-Kits-CN",
+    "und-Knda\000kn-Knda-IN",
+    "und-Kore\000ko-Kore-KR",
+    "und-Krai\000bap-Krai-IN",
+    "und-Kthi\000bho-Kthi-IN",
+    "und-LA\000lo-Laoo-LA",
+    "und-LB\000ar-Arab-LB",
+    "und-LI\000de-Latn-LI",
+    "und-LK\000si-Sinh-LK",
+    "und-LS\000st-Latn-LS",
+    "und-LT\000lt-Latn-LT",
+    "und-LU\000fr-Latn-LU",
+    "und-LV\000lv-Latn-LV",
+    "und-LY\000ar-Arab-LY",
+    "und-Lana\000nod-Lana-TH",
+    "und-Lana-MM\000stu-Lana-MM",
+    "und-Laoo\000lo-Laoo-LA",
+    "und-Latn-AE\000en-Latn-AE",
+    "und-Latn-AF\000tk-Latn-AF",
+    "und-Latn-AM\000ku-Latn-AM",
+    "und-Latn-BD\000en-Latn-BD",
+    "und-Latn-BG\000en-Latn-BG",
+    "und-Latn-BT\000en-Latn-BT",
+    "und-Latn-CC\000en-Latn-CC",
+    "und-Latn-CN\000za-Latn-CN",
+    "und-Latn-CY\000tr-Latn-CY",
+    "und-Latn-DZ\000fr-Latn-DZ",
+    "und-Latn-EG\000en-Latn-EG",
+    "und-Latn-ER\000en-Latn-ER",
+    "und-Latn-ET\000en-Latn-ET",
+    "und-Latn-GR\000en-Latn-GR",
+    "und-Latn-HK\000en-Latn-HK",
+    "und-Latn-IL\000en-Latn-IL",
+    "und-Latn-IN\000en-Latn-IN",
+    "und-Latn-IQ\000en-Latn-IQ",
+    "und-Latn-IR\000tk-Latn-IR",
+    "und-Latn-JO\000en-Latn-JO",
+    "und-Latn-KM\000fr-Latn-KM",
+    "und-Latn-KZ\000en-Latn-KZ",
+    "und-Latn-LB\000en-Latn-LB",
+    "und-Latn-LK\000en-Latn-LK",
+    "und-Latn-MA\000fr-Latn-MA",
+    "und-Latn-MK\000sq-Latn-MK",
+    "und-Latn-MM\000kac-Latn-MM",
+    "und-Latn-MO\000en-Latn-MO",
+    "und-Latn-MR\000fr-Latn-MR",
+    "und-Latn-MV\000en-Latn-MV",
+    "und-Latn-NP\000en-Latn-NP",
+    "und-Latn-PK\000en-Latn-PK",
+    "und-Latn-RU\000krl-Latn-RU",
+    "und-Latn-SD\000en-Latn-SD",
+    "und-Latn-SS\000en-Latn-SS",
+    "und-Latn-SY\000ku-Latn-SY",
+    "und-Latn-TD\000fr-Latn-TD",
+    "und-Latn-TH\000en-Latn-TH",
+    "und-Latn-TN\000fr-Latn-TN",
+    "und-Latn-TW\000trv-Latn-TW",
+    "und-Latn-UA\000pl-Latn-UA",
+    "und-Latn-YE\000en-Latn-YE",
+    "und-Lepc\000lep-Lepc-IN",
+    "und-Limb\000lif-Limb-IN",
+    "und-Lina\000lab-Lina-GR",
+    "und-Linb\000gmy-Linb-GR",
+    "und-Lisu\000lis-Lisu-CN",
+    "und-Lyci\000xlc-Lyci-TR",
+    "und-Lydi\000xld-Lydi-TR",
+    "und-MA\000ar-Arab-MA",
+    "und-MC\000fr-Latn-MC",
+    "und-MD\000ro-Latn-MD",
+    "und-ME\000sr-Latn-ME",
+    "und-MF\000fr-Latn-MF",
+    "und-MG\000mg-Latn-MG",
+    "und-MK\000mk-Cyrl-MK",
+    "und-ML\000bm-Latn-ML",
+    "und-MM\000my-Mymr-MM",
+    "und-MN\000mn-Cyrl-MN",
+    "und-MO\000zh-Hant-MO",
+    "und-MQ\000fr-Latn-MQ",
+    "und-MR\000ar-Arab-MR",
+    "und-MT\000mt-Latn-MT",
+    "und-MU\000fr-Latn-MU",
+    "und-MV\000dv-Thaa-MV",
+    "und-MX\000es-Latn-MX",
+    "und-MY\000ms-Latn-MY",
+    "und-MZ\000pt-Latn-MZ",
+    "und-Mahj\000hi-Mahj-IN",
+    "und-Maka\000mak-Maka-ID",
+    "und-Mand\000myz-Mand-IR",
+    "und-Mani\000xmn-Mani-CN",
+    "und-Marc\000bo-Marc-CN",
+    "und-Medf\000dmf-Medf-NG",
+    "und-Mend\000men-Mend-SL",
+    "und-Merc\000xmr-Merc-SD",
+    "und-Mero\000xmr-Mero-SD",
+    "und-Mlym\000ml-Mlym-IN",
+    "und-Modi\000mr-Modi-IN",
+    "und-Mong\000mn-Mong-CN",
+    "und-Mroo\000mro-Mroo-BD",
+    "und-Mtei\000mni-Mtei-IN",
+    "und-Mult\000skr-Mult-PK",
+    "und-Mymr\000my-Mymr-MM",
+    "und-Mymr-IN\000kht-Mymr-IN",
+    "und-Mymr-TH\000mnw-Mymr-TH",
+    "und-NA\000af-Latn-NA",
+    "und-NC\000fr-Latn-NC",
+    "und-NE\000ha-Latn-NE",
+    "und-NI\000es-Latn-NI",
+    "und-NL\000nl-Latn-NL",
+    "und-NO\000nb-Latn-NO",
+    "und-NP\000ne-Deva-NP",
+    "und-Nagm\000unr-Nagm-IN",
+    "und-Nand\000sa-Nand-IN",
+    "und-Narb\000xna-Narb-SA",
+    "und-Nbat\000arc-Nbat-JO",
+    "und-Newa\000new-Newa-NP",
+    "und-Nkoo\000man-Nkoo-GN",
+    "und-Nkoo-ML\000bm-Nkoo-ML",
+    "und-OM\000ar-Arab-OM",
+    "und-Ogam\000sga-Ogam-IE",
+    "und-Olck\000sat-Olck-IN",
+    "und-Onao\000unr-Onao-IN",
+    "und-Orkh\000otk-Orkh-MN",
+    "und-Orya\000or-Orya-IN",
+    "und-Osge\000osa-Osge-US",
+    "und-Osma\000so-Osma-SO",
+    "und-Ougr\000oui-Ougr-CN",
+    "und-PA\000es-Latn-PA",
+    "und-PE\000es-Latn-PE",
+    "und-PF\000fr-Latn-PF",
+    "und-PG\000tpi-Latn-PG",
+    "und-PH\000fil-Latn-PH",
+    "und-PK\000ur-Arab-PK",
+    "und-PL\000pl-Latn-PL",
+    "und-PM\000fr-Latn-PM",
+    "und-PR\000es-Latn-PR",
+    "und-PS\000ar-Arab-PS",
+    "und-PT\000pt-Latn-PT",
+    "und-PW\000pau-Latn-PW",
+    "und-PY\000gn-Latn-PY",
+    "und-Palm\000arc-Palm-SY",
+    "und-Pauc\000ctd-Pauc-MM",
+    "und-Perm\000kv-Perm-RU",
+    "und-Phag\000lzh-Phag-CN",
+    "und-Phli\000pal-Phli-IR",
+    "und-Phlp\000pal-Phlp-CN",
+    "und-Phnx\000phn-Phnx-LB",
+    "und-Plrd\000hmd-Plrd-CN",
+    "und-Prti\000xpr-Prti-IR",
+    "und-QA\000ar-Arab-QA",
+    "und-RE\000fr-Latn-RE",
+    "und-RO\000ro-Latn-RO",
+    "und-RS\000sr-Cyrl-RS",
+    "und-RU\000ru-Cyrl-RU",
+    "und-RW\000rw-Latn-RW",
+    "und-Rjng\000rej-Rjng-ID",
+    "und-Rohg\000rhg-Rohg-MM",
+    "und-Runr\000non-Runr-SE",
+    "und-SA\000ar-Arab-SA",
+    "und-SC\000fr-Latn-SC",
+    "und-SD\000ar-Arab-SD",
+    "und-SE\000sv-Latn-SE",
+    "und-SI\000sl-Latn-SI",
+    "und-SJ\000nb-Latn-SJ",
+    "und-SK\000sk-Latn-SK",
+    "und-SM\000it-Latn-SM",
+    "und-SN\000wo-Latn-SN",
+    "und-SO\000so-Latn-SO",
+    "und-SR\000nl-Latn-SR",
+    "und-SS\000ar-Arab-SS",
+    "und-ST\000pt-Latn-ST",
+    "und-SV\000es-Latn-SV",
+    "und-SY\000ar-Arab-SY",
+    "und-Samr\000smp-Samr-IL",
+    "und-Sarb\000xsa-Sarb-YE",
+    "und-Saur\000saz-Saur-IN",
+    "und-Sgnw\000ase-Sgnw-US",
+    "und-Shaw\000en-Shaw-GB",
+    "und-Shrd\000sa-Shrd-IN",
+    "und-Sidd\000sa-Sidd-IN",
+    "und-Sidt\000xsd-Sidt-TR",
+    "und-Sind\000sd-Sind-IN",
+    "und-Sinh\000si-Sinh-LK",
+    "und-Sogd\000sog-Sogd-UZ",
+    "und-Sogo\000sog-Sogo-UZ",
+    "und-Sora\000srb-Sora-IN",
+    "und-Soyo\000cmg-Soyo-MN",
+    "und-Sund\000su-Sund-ID",
+    "und-Sunu\000suz-Sunu-NP",
+    "und-Sylo\000syl-Sylo-BD",
+    "und-Syrc\000syr-Syrc-IQ",
+    "und-TD\000ar-Arab-TD",
+    "und-TF\000fr-Latn-TF",
+    "und-TG\000fr-Latn-TG",
+    "und-TH\000th-Thai-TH",
+    "und-TJ\000tg-Cyrl-TJ",
+    "und-TK\000tkl-Latn-TK",
+    "und-TL\000pt-Latn-TL",
+    "und-TM\000tk-Latn-TM",
+    "und-TN\000ar-Arab-TN",
+    "und-TO\000to-Latn-TO",
+    "und-TR\000tr-Latn-TR",
+    "und-TV\000tvl-Latn-TV",
+    "und-TW\000zh-Hant-TW",
+    "und-TZ\000sw-Latn-TZ",
+    "und-Tagb\000tbw-Tagb-PH",
+    "und-Takr\000doi-Takr-IN",
+    "und-Tale\000tdd-Tale-CN",
+    "und-Talu\000khb-Talu-CN",
+    "und-Taml\000ta-Taml-IN",
+    "und-Tang\000txg-Tang-CN",
+    "und-Tavt\000blt-Tavt-VN",
+    "und-Tayo\000tyj-Tayo-VN",
+    "und-Telu\000te-Telu-IN",
+    "und-Tfng\000zgh-Tfng-MA",
+    "und-Tglg\000fil-Tglg-PH",
+    "und-Thaa\000dv-Thaa-MV",
+    "und-Thai\000th-Thai-TH",
+    "und-Thai-CN\000lcp-Thai-CN",
+    "und-Thai-KH\000kdt-Thai-KH",
+    "und-Thai-LA\000kdt-Thai-LA",
+    "und-Tibt\000bo-Tibt-CN",
+    "und-Tibt-BT\000dz-Tibt-BT",
+    "und-Tirh\000mai-Tirh-IN",
+    "und-Tnsa\000nst-Tnsa-IN",
+    "und-Todr\000sq-Todr-AL",
+    "und-Tols\000kru-Tols-IN",
+    "und-Toto\000txo-Toto-IN",
+    "und-Tutg\000sa-Tutg-IN",
+    "und-UA\000uk-Cyrl-UA",
+    "und-UG\000sw-Latn-UG",
+    "und-UY\000es-Latn-UY",
+    "und-UZ\000uz-Latn-UZ",
+    "und-Ugar\000uga-Ugar-SY",
+    "und-VA\000it-Latn-VA",
+    "und-VE\000es-Latn-VE",
+    "und-VN\000vi-Latn-VN",
+    "und-VU\000bi-Latn-VU",
+    "und-Vaii\000vai-Vaii-LR",
+    "und-Vith\000sq-Vith-AL",
+    "und-WF\000fr-Latn-WF",
+    "und-WS\000sm-Latn-WS",
+    "und-Wara\000hoc-Wara-IN",
+    "und-Wcho\000nnp-Wcho-IN",
+    "und-XK\000sq-Latn-XK",
+    "und-Xpeo\000peo-Xpeo-IR",
+    "und-Xsux\000akk-Xsux-IQ",
+    "und-YE\000ar-Arab-YE",
+    "und-YT\000fr-Latn-YT",
+    "und-Yezi\000ku-Yezi-GE",
+    "und-Yiii\000ii-Yiii-CN",
+    "und-ZW\000sn-Latn-ZW",
+    "und-Zanb\000cmg-Zanb-MN",
+    "une\000une-Latn-NG",
+    "ung\000ung-Latn-AU",
+    "uni\000uni-Latn-PG",
+    "unk\000unk-Latn-BR",
+    "unm\000unm-Latn-US",
+    "unn\000unn-Latn-AU",
+    "unr\000unr-Beng-IN",
+    "unr-Deva\000unr-Deva-NP",
+    "unr-NP\000unr-Deva-NP",
+    "unu\000unu-Latn-PG",
+    "unx\000unx-Beng-IN",
+    "unz\000unz-Latn-ID",
+    "uon\000uon-Latn-TW",
+    "upi\000upi-Latn-PG",
+    "upv\000upv-Latn-VU",
+    "ur\000ur-Arab-PK",
+    "ura\000ura-Latn-PE",
+    "urb\000urb-Latn-BR",
+    "urc\000urc-Latn-AU",
+    "ure\000ure-Latn-BO",
+    "urf\000urf-Latn-AU",
+    "urg\000urg-Latn-PG",
+    "urh\000urh-Latn-NG",
+    "uri\000uri-Latn-PG",
+    "urk\000urk-Thai-TH",
+    "urm\000urm-Latn-PG",
+    "urn\000urn-Latn-ID",
+    "uro\000uro-Latn-PG",
+    "urp\000urp-Latn-BR",
+    "urr\000urr-Latn-VU",
+    "urt\000urt-Latn-PG",
+    "uru\000uru-Latn-BR",
+    "urv\000urv-Latn-PG",
+    "urw\000urw-Latn-PG",
+    "urx\000urx-Latn-PG",
+    "ury\000ury-Latn-ID",
+    "urz\000urz-Latn-BR",
+    "usa\000usa-Latn-PG",
+    "ush\000ush-Arab-PK",
+    "usi\000usi-Latn-BD",
+    "usk\000usk-Latn-CM",
+    "usp\000usp-Latn-GT",
+    "uss\000uss-Latn-NG",
+    "usu\000usu-Latn-PG",
+    "uta\000uta-Latn-NG",
+    "ute\000ute-Latn-US",
+    "uth\000uth-Latn-NG",
+    "utp\000utp-Latn-SB",
+    "utr\000utr-Latn-NG",
+    "utu\000utu-Latn-PG",
+    "uum\000uum-Grek-GE",
+    "uur\000uur-Latn-VU",
+    "uve\000uve-Latn-NC",
+    "uvh\000uvh-Latn-PG",
+    "uvl\000uvl-Latn-PG",
+    "uwa\000uwa-Latn-AU",
+    "uya\000uya-Latn-NG",
+    "uz\000uz-Latn-UZ",
+    "uz-AF\000uz-Arab-AF",
+    "uz-Arab\000uz-Arab-AF",
+    "uz-CN\000uz-Cyrl-CN",
+    "uzs\000uzs-Arab-AF",
+    "vaa\000vaa-Taml-IN",
+    "vae\000vae-Latn-CF",
+    "vaf\000vaf-Arab-IR",
+    "vag\000vag-Latn-GH",
+    "vah\000vah-Deva-IN",
+    "vai\000vai-Vaii-LR",
+    "vaj\000vaj-Latn-NA",
+    "val\000val-Latn-PG",
+    "vam\000vam-Latn-PG",
+    "van\000van-Latn-PG",
+    "vao\000vao-Latn-VU",
+    "vap\000vap-Latn-IN",
+    "var\000var-Latn-MX",
+    "vas\000vas-Deva-IN",
+    "vau\000vau-Latn-CD",
+    "vav\000vav-Deva-IN",
+    "vay\000vay-Deva-NP",
+    "vbb\000vbb-Latn-ID",
+    "vbk\000vbk-Latn-PH",
+    "ve\000ve-Latn-ZA",
+    "vec\000vec-Latn-IT",
+    "vem\000vem-Latn-NG",
+    "veo\000veo-Latn-US",
+    "vep\000vep-Latn-RU",
+    "ver\000ver-Latn-NG",
+    "vgr\000vgr-Arab-PK",
+    "vi\000vi-Latn-VN",
+    "vic\000vic-Latn-SX",
+    "vid\000vid-Latn-TZ",
+    "vif\000vif-Latn-CG",
+    "vig\000vig-Latn-BF",
+    "vil\000vil-Latn-AR",
+    "vin\000vin-Latn-TZ",
+    "vit\000vit-Latn-NG",
+    "viv\000viv-Latn-PG",
+    "vjk\000vjk-Deva-IN",
+    "vka\000vka-Latn-AU",
+    "vkj\000vkj-Latn-TD",
+    "vkk\000vkk-Latn-ID",
+    "vkl\000vkl-Latn-ID",
+    "vkm\000vkm-Latn-BR",
+    "vkn\000vkn-Latn-NG",
+    "vko\000vko-Latn-ID",
+    "vkp\000vkp-Latn-IN",
+    "vkt\000vkt-Latn-ID",
+    "vku\000vku-Latn-AU",
+    "vkz\000vkz-Latn-NG",
+    "vlp\000vlp-Latn-VU",
+    "vls\000vls-Latn-BE",
+    "vma\000vma-Latn-AU",
+    "vmb\000vmb-Latn-AU",
+    "vmc\000vmc-Latn-MX",
+    "vmd\000vmd-Knda-IN",
+    "vme\000vme-Latn-ID",
+    "vmf\000vmf-Latn-DE",
+    "vmg\000vmg-Latn-PG",
+    "vmh\000vmh-Arab-IR",
+    "vmi\000vmi-Latn-AU",
+    "vmj\000vmj-Latn-MX",
+    "vmk\000vmk-Latn-MZ",
+    "vml\000vml-Latn-AU",
+    "vmm\000vmm-Latn-MX",
+    "vmp\000vmp-Latn-MX",
+    "vmq\000vmq-Latn-MX",
+    "vmr\000vmr-Latn-MZ",
+    "vms\000vms-Latn-ID",
+    "vmu\000vmu-Latn-AU",
+    "vmw\000vmw-Latn-MZ",
+    "vmx\000vmx-Latn-MX",
+    "vmy\000vmy-Latn-MX",
+    "vmz\000vmz-Latn-MX",
+    "vnk\000vnk-Latn-SB",
+    "vnm\000vnm-Latn-VU",
+    "vnp\000vnp-Latn-VU",
+    "vo\000vo-Latn-001",
+    "vor\000vor-Latn-NG",
+    "vot\000vot-Latn-RU",
+    "vra\000vra-Latn-VU",
+    "vro\000vro-Latn-EE",
+    "vrs\000vrs-Latn-SB",
+    "vrt\000vrt-Latn-VU",
+    "vto\000vto-Latn-ID",
+    "vum\000vum-Latn-GA",
+    "vun\000vun-Latn-TZ",
+    "vut\000vut-Latn-CM",
+    "vwa\000vwa-Latn-CN",
+    "wa\000wa-Latn-BE",
+    "waa\000waa-Latn-US",
+    "wab\000wab-Latn-PG",
+    "wac\000wac-Latn-US",
+    "wad\000wad-Latn-ID",
+    "wae\000wae-Latn-CH",
+    "waf\000waf-Latn-BR",
+    "wag\000wag-Latn-PG",
+    "wah\000wah-Latn-ID",
+    "wai\000wai-Latn-ID",
+    "waj\000waj-Latn-PG",
+    "wal\000wal-Ethi-ET",
+    "wam\000wam-Latn-US",
+    "wan\000wan-Latn-CI",
+    "wap\000wap-Latn-GY",
+    "waq\000waq-Latn-AU",
+    "war\000war-Latn-PH",
+    "was\000was-Latn-US",
+    "wat\000wat-Latn-PG",
+    "wau\000wau-Latn-BR",
+    "wav\000wav-Latn-NG",
+    "waw\000waw-Latn-BR",
+    "wax\000wax-Latn-PG",
+    "way\000way-Latn-SR",
+    "waz\000waz-Latn-PG",
+    "wba\000wba-Latn-VE",
+    "wbb\000wbb-Latn-ID",
+    "wbe\000wbe-Latn-ID",
+    "wbf\000wbf-Latn-BF",
+    "wbh\000wbh-Latn-TZ",
+    "wbi\000wbi-Latn-TZ",
+    "wbj\000wbj-Latn-TZ",
+    "wbk\000wbk-Arab-AF",
+    "wbl\000wbl-Latn-PK",
+    "wbm\000wbm-Latn-CN",
+    "wbp\000wbp-Latn-AU",
+    "wbq\000wbq-Telu-IN",
+    "wbr\000wbr-Deva-IN",
+    "wbt\000wbt-Latn-AU",
+    "wbv\000wbv-Latn-AU",
+    "wbw\000wbw-Latn-ID",
+    "wca\000wca-Latn-BR",
+    "wci\000wci-Latn-TG",
+    "wdd\000wdd-Latn-GA",
+    "wdg\000wdg-Latn-PG",
+    "wdj\000wdj-Latn-AU",
+    "wdk\000wdk-Latn-AU",
+    "wdt\000wdt-Latn-CA",
+    "wdu\000wdu-Latn-AU",
+    "wdy\000wdy-Latn-AU",
+    "wec\000wec-Latn-CI",
+    "wed\000wed-Latn-PG",
+    "weg\000weg-Latn-AU",
+    "weh\000weh-Latn-CM",
+    "wei\000wei-Latn-PG",
+    "wem\000wem-Latn-BJ",
+    "weo\000weo-Latn-ID",
+    "wep\000wep-Latn-DE",
+    "wer\000wer-Latn-PG",
+    "wes\000wes-Latn-CM",
+    "wet\000wet-Latn-ID",
+    "weu\000weu-Latn-MM",
+    "wew\000wew-Latn-ID",
+    "wfg\000wfg-Latn-ID",
+    "wga\000wga-Latn-AU",
+    "wgb\000wgb-Latn-PG",
+    "wgg\000wgg-Latn-AU",
+    "wgi\000wgi-Latn-PG",
+    "wgo\000wgo-Latn-ID",
+    "wgu\000wgu-Latn-AU",
+    "wgy\000wgy-Latn-AU",
+    "wha\000wha-Latn-ID",
+    "whg\000whg-Latn-PG",
+    "whk\000whk-Latn-ID",
+    "whu\000whu-Latn-ID",
+    "wib\000wib-Latn-BF",
+    "wic\000wic-Latn-US",
+    "wie\000wie-Latn-AU",
+    "wif\000wif-Latn-AU",
+    "wig\000wig-Latn-AU",
+    "wih\000wih-Latn-AU",
+    "wii\000wii-Latn-PG",
+    "wij\000wij-Latn-AU",
+    "wik\000wik-Latn-AU",
+    "wil\000wil-Latn-AU",
+    "wim\000wim-Latn-AU",
+    "win\000win-Latn-US",
+    "wir\000wir-Latn-BR",
+    "wiu\000wiu-Latn-PG",
+    "wiv\000wiv-Latn-PG",
+    "wiy\000wiy-Latn-US",
+    "wja\000wja-Latn-NG",
+    "wji\000wji-Latn-NG",
+    "wka\000wka-Latn-TZ",
+    "wkd\000wkd-Latn-ID",
+    "wkr\000wkr-Latn-AU",
+    "wkw\000wkw-Latn-AU",
+    "wky\000wky-Latn-AU",
+    "wla\000wla-Latn-PG",
+    "wle\000wle-Ethi-ET",
+    "wlg\000wlg-Latn-AU",
+    "wlh\000wlh-Latn-TL",
+    "wli\000wli-Latn-ID",
+    "wlm\000wlm-Latn-GB",
+    "wlo\000wlo-Arab-ID",
+    "wlr\000wlr-Latn-VU",
+    "wls\000wls-Latn-WF",
+    "wlu\000wlu-Latn-AU",
+    "wlv\000wlv-Latn-AR",
+    "wlw\000wlw-Latn-ID",
+    "wlx\000wlx-Latn-GH",
+    "wma\000wma-Latn-NG",
+    "wmb\000wmb-Latn-AU",
+    "wmc\000wmc-Latn-PG",
+    "wmd\000wmd-Latn-BR",
+    "wme\000wme-Deva-NP",
+    "wmh\000wmh-Latn-TL",
+    "wmi\000wmi-Latn-AU",
+    "wmm\000wmm-Latn-ID",
+    "wmn\000wmn-Latn-NC",
+    "wmo\000wmo-Latn-PG",
+    "wms\000wms-Latn-ID",
+    "wmt\000wmt-Latn-AU",
+    "wmw\000wmw-Latn-MZ",
+    "wmx\000wmx-Latn-PG",
+    "wnb\000wnb-Latn-PG",
+    "wnc\000wnc-Latn-PG",
+    "wnd\000wnd-Latn-AU",
+    "wne\000wne-Arab-PK",
+    "wng\000wng-Latn-ID",
+    "wni\000wni-Arab-KM",
+    "wnk\000wnk-Latn-ID",
+    "wnm\000wnm-Latn-AU",
+    "wnn\000wnn-Latn-AU",
+    "wno\000wno-Latn-ID",
+    "wnp\000wnp-Latn-PG",
+    "wnu\000wnu-Latn-PG",
+    "wnw\000wnw-Latn-US",
+    "wny\000wny-Latn-AU",
+    "wo\000wo-Latn-SN",
+    "woa\000woa-Latn-AU",
+    "wob\000wob-Latn-CI",
+    "woc\000woc-Latn-PG",
+    "wod\000wod-Latn-ID",
+    "woe\000woe-Latn-FM",
+    "wof\000wof-Latn-GM",
+    "wog\000wog-Latn-PG",
+    "woi\000woi-Latn-ID",
+    "wok\000wok-Latn-CM",
+    "wom\000wom-Latn-NG",
+    "won\000won-Latn-CD",
+    "woo\000woo-Latn-ID",
+    "wor\000wor-Latn-ID",
+    "wos\000wos-Latn-PG",
+    "wow\000wow-Latn-ID",
+    "wpc\000wpc-Latn-VE",
+    "wrb\000wrb-Latn-AU",
+    "wrg\000wrg-Latn-AU",
+    "wrh\000wrh-Latn-AU",
+    "wri\000wri-Latn-AU",
+    "wrk\000wrk-Latn-AU",
+    "wrl\000wrl-Latn-AU",
+    "wrm\000wrm-Latn-AU",
+    "wro\000wro-Latn-AU",
+    "wrp\000wrp-Latn-ID",
+    "wrr\000wrr-Latn-AU",
+    "wrs\000wrs-Latn-PG",
+    "wru\000wru-Latn-ID",
+    "wrv\000wrv-Latn-PG",
+    "wrw\000wrw-Latn-AU",
+    "wrx\000wrx-Latn-ID",
+    "wrz\000wrz-Latn-AU",
+    "wsa\000wsa-Latn-ID",
+    "wsg\000wsg-Gong-IN",
+    "wsi\000wsi-Latn-VU",
+    "wsk\000wsk-Latn-PG",
+    "wsr\000wsr-Latn-PG",
+    "wss\000wss-Latn-GH",
+    "wsu\000wsu-Latn-BR",
+    "wsv\000wsv-Arab-AF",
+    "wtb\000wtb-Latn-TZ",
+    "wtf\000wtf-Latn-PG",
+    "wth\000wth-Latn-AU",
+    "wti\000wti-Latn-ET",
+    "wtk\000wtk-Latn-PG",
+    "wtm\000wtm-Deva-IN",
+    "wtw\000wtw-Latn-ID",
+    "wua\000wua-Latn-AU",
+    "wub\000wub-Latn-AU",
+    "wud\000wud-Latn-TG",
+    "wul\000wul-Latn-ID",
+    "wum\000wum-Latn-GA",
+    "wun\000wun-Latn-TZ",
+    "wur\000wur-Latn-AU",
+    "wut\000wut-Latn-PG",
+    "wuu\000wuu-Hans-CN",
+    "wuv\000wuv-Latn-PG",
+    "wux\000wux-Latn-AU",
+    "wuy\000wuy-Latn-ID",
+    "wwa\000wwa-Latn-BJ",
+    "wwb\000wwb-Latn-AU",
+    "wwo\000wwo-Latn-VU",
+    "wwr\000wwr-Latn-AU",
+    "www\000www-Latn-CM",
+    "wxw\000wxw-Latn-AU",
+    "wyb\000wyb-Latn-AU",
+    "wyi\000wyi-Latn-AU",
+    "wym\000wym-Latn-PL",
+    "wyn\000wyn-Latn-US",
+    "wyr\000wyr-Latn-BR",
+    "wyy\000wyy-Latn-FJ",
+    "xaa\000xaa-Latn-ES",
+    "xab\000xab-Latn-NG",
+    "xag\000xag-Aghb-AZ",
+    "xai\000xai-Latn-BR",
+    "xaj\000xaj-Latn-BR",
+    "xak\000xak-Latn-VE",
+    "xal\000xal-Cyrl-RU",
+    "xam\000xam-Latn-ZA",
+    "xan\000xan-Ethi-ET",
+    "xao\000xao-Latn-VN",
+    "xar\000xar-Latn-PG",
+    "xas\000xas-Cyrl-RU",
+    "xat\000xat-Latn-BR",
+    "xau\000xau-Latn-ID",
+    "xav\000xav-Latn-BR",
+    "xaw\000xaw-Latn-US",
+    "xay\000xay-Latn-ID",
+    "xbb\000xbb-Latn-AU",
+    "xbd\000xbd-Latn-AU",
+    "xbe\000xbe-Latn-AU",
+    "xbg\000xbg-Latn-AU",
+    "xbi\000xbi-Latn-PG",
+    "xbj\000xbj-Latn-AU",
+    "xbm\000xbm-Latn-FR",
+    "xbn\000xbn-Latn-MY",
+    "xbp\000xbp-Latn-AU",
+    "xbr\000xbr-Latn-ID",
+    "xbw\000xbw-Latn-BR",
+    "xby\000xby-Latn-AU",
+    "xch\000xch-Latn-US",
+    "xco\000xco-Chrs-UZ",
+    "xcr\000xcr-Cari-TR",
+    "xda\000xda-Latn-AU",
+    "xdk\000xdk-Latn-AU",
+    "xdo\000xdo-Latn-AO",
+    "xdq\000xdq-Cyrl-RU",
+    "xdy\000xdy-Latn-ID",
+    "xed\000xed-Latn-CM",
+    "xeg\000xeg-Latn-ZA",
+    "xem\000xem-Latn-ID",
+    "xer\000xer-Latn-BR",
+    "xes\000xes-Latn-PG",
+    "xet\000xet-Latn-BR",
+    "xeu\000xeu-Latn-PG",
+    "xgb\000xgb-Latn-CI",
+    "xgd\000xgd-Latn-AU",
+    "xgg\000xgg-Latn-AU",
+    "xgi\000xgi-Latn-AU",
+    "xgm\000xgm-Latn-AU",
+    "xgu\000xgu-Latn-AU",
+    "xgw\000xgw-Latn-AU",
+    "xh\000xh-Latn-ZA",
+    "xhe\000xhe-Arab-PK",
+    "xhm\000xhm-Khmr-KH",
+    "xhv\000xhv-Latn-VN",
+    "xii\000xii-Latn-ZA",
+    "xin\000xin-Latn-GT",
+    "xir\000xir-Latn-BR",
+    "xis\000xis-Orya-IN",
+    "xiy\000xiy-Latn-BR",
+    "xjb\000xjb-Latn-AU",
+    "xjt\000xjt-Latn-AU",
+    "xka\000xka-Arab-PK",
+    "xkb\000xkb-Latn-BJ",
+    "xkc\000xkc-Arab-IR",
+    "xkd\000xkd-Latn-ID",
+    "xke\000xke-Latn-ID",
+    "xkf\000xkf-Tibt-BT",
+    "xkg\000xkg-Latn-ML",
+    "xkj\000xkj-Arab-IR",
+    "xkl\000xkl-Latn-ID",
+    "xkn\000xkn-Latn-ID",
+    "xkp\000xkp-Arab-IR",
+    "xkq\000xkq-Latn-ID",
+    "xkr\000xkr-Latn-BR",
+    "xks\000xks-Latn-ID",
+    "xkt\000xkt-Latn-GH",
+    "xku\000xku-Latn-CG",
+    "xkv\000xkv-Latn-BW",
+    "xkw\000xkw-Latn-ID",
+    "xkx\000xkx-Latn-PG",
+    "xky\000xky-Latn-MY",
+    "xkz\000xkz-Latn-BT",
+    "xla\000xla-Latn-PG",
+    "xlc\000xlc-Lyci-TR",
+    "xld\000xld-Lydi-TR",
+    "xly\000xly-Elym-IR",
+    "xma\000xma-Latn-SO",
+    "xmb\000xmb-Latn-CM",
+    "xmc\000xmc-Latn-MZ",
+    "xmd\000xmd-Latn-CM",
+    "xmf\000xmf-Geor-GE",
+    "xmg\000xmg-Latn-CM",
+    "xmh\000xmh-Latn-AU",
+    "xmj\000xmj-Latn-CM",
+    "xmm\000xmm-Latn-ID",
+    "xmn\000xmn-Mani-CN",
+    "xmo\000xmo-Latn-BR",
+    "xmp\000xmp-Latn-AU",
+    "xmq\000xmq-Latn-AU",
+    "xmr\000xmr-Merc-SD",
+    "xmt\000xmt-Latn-ID",
+    "xmu\000xmu-Latn-AU",
+    "xmv\000xmv-Latn-MG",
+    "xmw\000xmw-Latn-MG",
+    "xmx\000xmx-Latn-ID",
+    "xmy\000xmy-Latn-AU",
+    "xmz\000xmz-Latn-ID",
+    "xna\000xna-Narb-SA",
+    "xnb\000xnb-Latn-TW",
+    "xni\000xni-Latn-AU",
+    "xnj\000xnj-Latn-TZ",
+    "xnk\000xnk-Latn-AU",
+    "xnm\000xnm-Latn-AU",
+    "xnn\000xnn-Latn-PH",
+    "xnq\000xnq-Latn-MZ",
+    "xnr\000xnr-Deva-IN",
+    "xnt\000xnt-Latn-US",
+    "xnu\000xnu-Latn-AU",
+    "xny\000xny-Latn-AU",
+    "xnz\000xnz-Latn-EG",
+    "xoc\000xoc-Latn-NG",
+    "xod\000xod-Latn-ID",
+    "xog\000xog-Latn-UG",
+    "xoi\000xoi-Latn-PG",
+    "xok\000xok-Latn-BR",
+    "xom\000xom-Latn-SD",
+    "xon\000xon-Latn-GH",
+    "xoo\000xoo-Latn-BR",
+    "xop\000xop-Latn-PG",
+    "xor\000xor-Latn-BR",
+    "xow\000xow-Latn-PG",
+    "xpa\000xpa-Latn-AU",
+    "xpb\000xpb-Latn-AU",
+    "xpd\000xpd-Latn-AU",
+    "xpf\000xpf-Latn-AU",
+    "xpg\000xpg-Grek-TR",
+    "xph\000xph-Latn-AU",
+    "xpi\000xpi-Ogam-GB",
+    "xpj\000xpj-Latn-AU",
+    "xpk\000xpk-Latn-BR",
+    "xpl\000xpl-Latn-AU",
+    "xpm\000xpm-Cyrl-RU",
+    "xpn\000xpn-Latn-BR",
+    "xpo\000xpo-Latn-MX",
+    "xpq\000xpq-Latn-US",
+    "xpr\000xpr-Prti-IR",
+    "xpt\000xpt-Latn-AU",
+    "xpv\000xpv-Latn-AU",
+    "xpw\000xpw-Latn-AU",
+    "xpx\000xpx-Latn-AU",
+    "xpz\000xpz-Latn-AU",
+    "xra\000xra-Latn-BR",
+    "xrb\000xrb-Latn-BF",
+    "xrd\000xrd-Latn-AU",
+    "xre\000xre-Latn-BR",
+    "xrg\000xrg-Latn-AU",
+    "xri\000xri-Latn-BR",
+    "xrm\000xrm-Cyrl-RU",
+    "xrn\000xrn-Cyrl-RU",
+    "xrr\000xrr-Latn-IT",
+    "xru\000xru-Latn-AU",
+    "xrw\000xrw-Latn-PG",
+    "xsa\000xsa-Sarb-YE",
+    "xsb\000xsb-Latn-PH",
+    "xsd\000xsd-Sidt-TR",
+    "xse\000xse-Latn-ID",
+    "xsh\000xsh-Latn-NG",
+    "xsi\000xsi-Latn-PG",
+    "xsm\000xsm-Latn-GH",
+    "xsn\000xsn-Latn-NG",
+    "xsp\000xsp-Latn-PG",
+    "xsq\000xsq-Latn-MZ",
+    "xsr\000xsr-Deva-NP",
+    "xsu\000xsu-Latn-VE",
+    "xsy\000xsy-Latn-TW",
+    "xta\000xta-Latn-MX",
+    "xtb\000xtb-Latn-MX",
+    "xtc\000xtc-Latn-SD",
+    "xtd\000xtd-Latn-MX",
+    "xte\000xte-Latn-ID",
+    "xth\000xth-Latn-AU",
+    "xti\000xti-Latn-MX",
+    "xtj\000xtj-Latn-MX",
+    "xtl\000xtl-Latn-MX",
+    "xtm\000xtm-Latn-MX",
+    "xtn\000xtn-Latn-MX",
+    "xtp\000xtp-Latn-MX",
+    "xtq\000xtq-Brah-IR",
+    "xts\000xts-Latn-MX",
+    "xtt\000xtt-Latn-MX",
+    "xtu\000xtu-Latn-MX",
+    "xtv\000xtv-Latn-AU",
+    "xtw\000xtw-Latn-BR",
+    "xty\000xty-Latn-MX",
+    "xub\000xub-Taml-IN",
+    "xud\000xud-Latn-AU",
+    "xuj\000xuj-Taml-IN",
+    "xul\000xul-Latn-AU",
+    "xum\000xum-Latn-IT",
+    "xun\000xun-Latn-AU",
+    "xuo\000xuo-Latn-TD",
+    "xut\000xut-Latn-AU",
+    "xuu\000xuu-Latn-NA",
+    "xve\000xve-Ital-IT",
+    "xvi\000xvi-Arab-AF",
+    "xvn\000xvn-Latn-ES",
+    "xvo\000xvo-Latn-IT",
+    "xvs\000xvs-Latn-IT",
+    "xwa\000xwa-Latn-BR",
+    "xwd\000xwd-Latn-AU",
+    "xwe\000xwe-Latn-BJ",
+    "xwj\000xwj-Latn-AU",
+    "xwk\000xwk-Latn-AU",
+    "xwl\000xwl-Latn-BJ",
+    "xwo\000xwo-Cyrl-RU",
+    "xwr\000xwr-Latn-ID",
+    "xwt\000xwt-Latn-AU",
+    "xww\000xww-Latn-AU",
+    "xxb\000xxb-Latn-GH",
+    "xxk\000xxk-Latn-ID",
+    "xxm\000xxm-Latn-AU",
+    "xxr\000xxr-Latn-BR",
+    "xxt\000xxt-Latn-ID",
+    "xya\000xya-Latn-AU",
+    "xyb\000xyb-Latn-AU",
+    "xyj\000xyj-Latn-AU",
+    "xyk\000xyk-Latn-AU",
+    "xyl\000xyl-Latn-BR",
+    "xyt\000xyt-Latn-AU",
+    "xyy\000xyy-Latn-AU",
+    "xzh\000xzh-Marc-CN",
+    "xzp\000xzp-Latn-MX",
+    "yaa\000yaa-Latn-PE",
+    "yab\000yab-Latn-BR",
+    "yac\000yac-Latn-ID",
+    "yad\000yad-Latn-PE",
+    "yae\000yae-Latn-VE",
+    "yaf\000yaf-Latn-CD",
+    "yag\000yag-Latn-CL",
+    "yah\000yah-Latn-TJ",
+    "yai\000yai-Cyrl-TJ",
+    "yaj\000yaj-Latn-CF",
+    "yak\000yak-Latn-US",
+    "yal\000yal-Latn-GN",
+    "yam\000yam-Latn-CM",
+    "yan\000yan-Latn-NI",
+    "yao\000yao-Latn-MZ",
+    "yap\000yap-Latn-FM",
+    "yaq\000yaq-Latn-MX",
+    "yar\000yar-Latn-VE",
+    "yas\000yas-Latn-CM",
+    "yat\000yat-Latn-CM",
+    "yau\000yau-Latn-VE",
+    "yav\000yav-Latn-CM",
+    "yaw\000yaw-Latn-BR",
+    "yax\000yax-Latn-AO",
+    "yay\000yay-Latn-NG",
+    "yaz\000yaz-Latn-NG",
+    "yba\000yba-Latn-NG",
+    "ybb\000ybb-Latn-CM",
+    "ybe\000ybe-Latn-CN",
+    "ybh\000ybh-Deva-NP",
+    "ybi\000ybi-Deva-NP",
+    "ybj\000ybj-Latn-NG",
+    "ybl\000ybl-Latn-NG",
+    "ybm\000ybm-Latn-PG",
+    "ybn\000ybn-Latn-BR",
+    "ybo\000ybo-Latn-PG",
+    "ybx\000ybx-Latn-PG",
+    "yby\000yby-Latn-PG",
+    "ycl\000ycl-Latn-CN",
+    "ycn\000ycn-Latn-CO",
+    "ycr\000ycr-Latn-TW",
+    "yda\000yda-Latn-AU",
+    "yde\000yde-Latn-PG",
+    "ydg\000ydg-Arab-PK",
+    "ydk\000ydk-Latn-PG",
+    "yea\000yea-Mlym-IN",
+    "yec\000yec-Latn-DE",
+    "yee\000yee-Latn-PG",
+    "yei\000yei-Latn-CM",
+    "yej\000yej-Grek-GR",
+    "yel\000yel-Latn-CD",
+    "yer\000yer-Latn-NG",
+    "yes\000yes-Latn-NG",
+    "yet\000yet-Latn-ID",
+    "yeu\000yeu-Telu-IN",
+    "yev\000yev-Latn-PG",
+    "yey\000yey-Latn-BW",
+    "yga\000yga-Latn-AU",
+    "ygi\000ygi-Latn-AU",
+    "ygl\000ygl-Latn-PG",
+    "ygm\000ygm-Latn-PG",
+    "ygp\000ygp-Plrd-CN",
+    "ygr\000ygr-Latn-PG",
+    "ygu\000ygu-Latn-AU",
+    "ygw\000ygw-Latn-PG",
+    "yhd\000yhd-Hebr-IL",
+    "yi\000yi-Hebr-UA",
+    "yia\000yia-Latn-AU",
+    "yig\000yig-Yiii-CN",
+    "yih\000yih-Hebr-DE",
+    "yii\000yii-Latn-AU",
+    "yij\000yij-Latn-AU",
+    "yil\000yil-Latn-AU",
+    "yim\000yim-Latn-IN",
+    "yir\000yir-Latn-ID",
+    "yis\000yis-Latn-PG",
+    "yiv\000yiv-Yiii-CN",
+    "yka\000yka-Latn-PH",
+    "ykg\000ykg-Cyrl-RU",
+    "ykh\000ykh-Cyrl-MN",
+    "yki\000yki-Latn-ID",
+    "ykk\000ykk-Latn-PG",
+    "ykm\000ykm-Latn-PG",
+    "yko\000yko-Latn-CM",
+    "ykr\000ykr-Latn-PG",
+    "yky\000yky-Latn-CF",
+    "yla\000yla-Latn-PG",
+    "ylb\000ylb-Latn-PG",
+    "yle\000yle-Latn-PG",
+    "ylg\000ylg-Latn-PG",
+    "yli\000yli-Latn-ID",
+    "yll\000yll-Latn-PG",
+    "ylr\000ylr-Latn-AU",
+    "ylu\000ylu-Latn-PG",
+    "yly\000yly-Latn-NC",
+    "ymb\000ymb-Latn-PG",
+    "yme\000yme-Latn-PE",
+    "ymg\000ymg-Latn-CD",
+    "ymk\000ymk-Latn-MZ",
+    "yml\000yml-Latn-PG",
+    "ymm\000ymm-Latn-SO",
+    "ymn\000ymn-Latn-ID",
+    "ymo\000ymo-Latn-PG",
+    "ymp\000ymp-Latn-PG",
+    "yna\000yna-Plrd-CN",
+    "ynb\000ynb-Latn-PG",
+    "ynd\000ynd-Latn-AU",
+    "yng\000yng-Latn-CD",
+    "ynk\000ynk-Cyrl-RU",
+    "ynl\000ynl-Latn-PG",
+    "ynq\000ynq-Latn-NG",
+    "yns\000yns-Latn-CD",
+    "ynu\000ynu-Latn-CO",
+    "yo\000yo-Latn-NG",
+    "yob\000yob-Latn-PG",
+    "yog\000yog-Latn-PH",
+    "yoi\000yoi-Jpan-JP",
+    "yok\000yok-Latn-US",
+    "yol\000yol-Latn-IE",
+    "yom\000yom-Latn-CD",
+    "yon\000yon-Latn-PG",
+    "yot\000yot-Latn-NG",
+    "yoy\000yoy-Thai-TH",
+    "yra\000yra-Latn-PG",
+    "yrb\000yrb-Latn-PG",
+    "yre\000yre-Latn-CI",
+    "yrk\000yrk-Cyrl-RU",
+    "yrl\000yrl-Latn-BR",
+    "yrm\000yrm-Latn-AU",
+    "yro\000yro-Latn-BR",
+    "yrs\000yrs-Latn-ID",
+    "yrw\000yrw-Latn-PG",
+    "yry\000yry-Latn-AU",
+    "ysd\000ysd-Yiii-CN",
+    "ysn\000ysn-Yiii-CN",
+    "ysp\000ysp-Yiii-CN",
+    "ysr\000ysr-Cyrl-RU",
+    "yss\000yss-Latn-PG",
+    "ysy\000ysy-Plrd-CN",
+    "ytw\000ytw-Latn-PG",
+    "yty\000yty-Latn-AU",
+    "yua\000yua-Latn-MX",
+    "yub\000yub-Latn-AU",
+    "yuc\000yuc-Latn-US",
+    "yud\000yud-Hebr-IL",
+    "yue\000yue-Hant-HK",
+    "yue-CN\000yue-Hans-CN",
+    "yue-Hans\000yue-Hans-CN",
+    "yuf\000yuf-Latn-US",
+    "yug\000yug-Cyrl-RU",
+    "yui\000yui-Latn-CO",
+    "yuj\000yuj-Latn-PG",
+    "yul\000yul-Latn-CF",
+    "yum\000yum-Latn-US",
+    "yun\000yun-Latn-NG",
+    "yup\000yup-Latn-CO",
+    "yuq\000yuq-Latn-BO",
+    "yur\000yur-Latn-US",
+    "yut\000yut-Latn-PG",
+    "yuw\000yuw-Latn-PG",
+    "yux\000yux-Cyrl-RU",
+    "yuz\000yuz-Latn-BO",
+    "yva\000yva-Latn-ID",
+    "yvt\000yvt-Latn-VE",
+    "ywa\000ywa-Latn-PG",
+    "ywg\000ywg-Latn-AU",
+    "ywn\000ywn-Latn-BR",
+    "ywq\000ywq-Plrd-CN",
+    "ywr\000ywr-Latn-AU",
+    "ywu\000ywu-Plrd-CN",
+    "yww\000yww-Latn-AU",
+    "yxa\000yxa-Latn-AU",
+    "yxg\000yxg-Latn-AU",
+    "yxl\000yxl-Latn-AU",
+    "yxm\000yxm-Latn-AU",
+    "yxu\000yxu-Latn-AU",
+    "yxy\000yxy-Latn-AU",
+    "yyr\000yyr-Latn-AU",
+    "yyu\000yyu-Latn-PG",
+    "za\000za-Latn-CN",
+    "zaa\000zaa-Latn-MX",
+    "zab\000zab-Latn-MX",
+    "zac\000zac-Latn-MX",
+    "zad\000zad-Latn-MX",
+    "zae\000zae-Latn-MX",
+    "zaf\000zaf-Latn-MX",
+    "zag\000zag-Latn-SD",
+    "zah\000zah-Latn-NG",
+    "zaj\000zaj-Latn-TZ",
+    "zak\000zak-Latn-TZ",
+    "zam\000zam-Latn-MX",
+    "zao\000zao-Latn-MX",
+    "zap\000zap-Latn-MX",
+    "zaq\000zaq-Latn-MX",
+    "zar\000zar-Latn-MX",
+    "zas\000zas-Latn-MX",
+    "zat\000zat-Latn-MX",
+    "zau\000zau-Tibt-IN",
+    "zav\000zav-Latn-MX",
+    "zaw\000zaw-Latn-MX",
+    "zax\000zax-Latn-MX",
+    "zay\000zay-Latn-ET",
+    "zaz\000zaz-Latn-NG",
+    "zba\000zba-Arab-001",
+    "zbc\000zbc-Latn-MY",
+    "zbe\000zbe-Latn-MY",
+    "zbt\000zbt-Latn-ID",
+    "zbu\000zbu-Latn-NG",
+    "zbw\000zbw-Latn-MY",
+    "zca\000zca-Latn-MX",
+    "zch\000zch-Hani-CN",
+    "zdj\000zdj-Arab-KM",
+    "zea\000zea-Latn-NL",
+    "zeg\000zeg-Latn-PG",
+    "zeh\000zeh-Hani-CN",
+    "zem\000zem-Latn-NG",
+    "zen\000zen-Tfng-MR",
+    "zga\000zga-Latn-TZ",
+    "zgb\000zgb-Hani-CN",
+    "zgh\000zgh-Tfng-MA",
+    "zgm\000zgm-Hani-CN",
+    "zgn\000zgn-Hani-CN",
+    "zgr\000zgr-Latn-PG",
+    "zh\000zh-Hans-CN",
+    "zh-AU\000zh-Hant-AU",
+    "zh-BN\000zh-Hant-BN",
+    "zh-Bopo\000zh-Bopo-TW",
+    "zh-GB\000zh-Hant-GB",
+    "zh-GF\000zh-Hant-GF",
+    "zh-HK\000zh-Hant-HK",
+    "zh-Hanb\000zh-Hanb-TW",
+    "zh-Hant\000zh-Hant-TW",
+    "zh-ID\000zh-Hant-ID",
+    "zh-MO\000zh-Hant-MO",
+    "zh-PA\000zh-Hant-PA",
+    "zh-PF\000zh-Hant-PF",
+    "zh-PH\000zh-Hant-PH",
+    "zh-SR\000zh-Hant-SR",
+    "zh-TH\000zh-Hant-TH",
+    "zh-TW\000zh-Hant-TW",
+    "zh-US\000zh-Hant-US",
+    "zh-VN\000zh-Hant-VN",
+    "zhd\000zhd-Hani-CN",
+    "zhi\000zhi-Latn-NG",
+    "zhn\000zhn-Latn-CN",
+    "zhw\000zhw-Latn-CM",
+    "zia\000zia-Latn-PG",
+    "zik\000zik-Latn-PG",
+    "zil\000zil-Latn-GN",
+    "zim\000zim-Latn-TD",
+    "zin\000zin-Latn-TZ",
+    "ziw\000ziw-Latn-TZ",
+    "ziz\000ziz-Latn-NG",
+    "zka\000zka-Latn-ID",
+    "zkd\000zkd-Latn-MM",
+    "zko\000zko-Cyrl-RU",
+    "zkp\000zkp-Latn-BR",
+    "zkt\000zkt-Kits-CN",
+    "zku\000zku-Latn-AU",
+    "zkz\000zkz-Cyrl-RU",
+    "zla\000zla-Latn-CD",
+    "zlj\000zlj-Hani-CN",
+    "zlm\000zlm-Latn-MY",
+    "zln\000zln-Hani-CN",
+    "zlq\000zlq-Hani-CN",
+    "zlu\000zlu-Latn-NG",
+    "zma\000zma-Latn-AU",
+    "zmb\000zmb-Latn-CD",
+    "zmc\000zmc-Latn-AU",
+    "zmd\000zmd-Latn-AU",
+    "zme\000zme-Latn-AU",
+    "zmf\000zmf-Latn-CD",
+    "zmg\000zmg-Latn-AU",
+    "zmh\000zmh-Latn-PG",
+    "zmi\000zmi-Latn-MY",
+    "zmj\000zmj-Latn-AU",
+    "zmk\000zmk-Latn-AU",
+    "zml\000zml-Latn-AU",
+    "zmm\000zmm-Latn-AU",
+    "zmn\000zmn-Latn-GA",
+    "zmo\000zmo-Latn-SD",
+    "zmp\000zmp-Latn-CD",
+    "zmq\000zmq-Latn-CD",
+    "zmr\000zmr-Latn-AU",
+    "zms\000zms-Latn-CD",
+    "zmt\000zmt-Latn-AU",
+    "zmu\000zmu-Latn-AU",
+    "zmv\000zmv-Latn-AU",
+    "zmw\000zmw-Latn-CD",
+    "zmx\000zmx-Latn-CG",
+    "zmy\000zmy-Latn-AU",
+    "zmz\000zmz-Latn-CD",
+    "zna\000zna-Latn-TD",
+    "zne\000zne-Latn-CD",
+    "zng\000zng-Latn-VN",
+    "znk\000znk-Latn-AU",
+    "zns\000zns-Latn-NG",
+    "zoc\000zoc-Latn-MX",
+    "zoh\000zoh-Latn-MX",
+    "zom\000zom-Latn-IN",
+    "zoo\000zoo-Latn-MX",
+    "zoq\000zoq-Latn-MX",
+    "zor\000zor-Latn-MX",
+    "zos\000zos-Latn-MX",
+    "zpa\000zpa-Latn-MX",
+    "zpb\000zpb-Latn-MX",
+    "zpc\000zpc-Latn-MX",
+    "zpd\000zpd-Latn-MX",
+    "zpe\000zpe-Latn-MX",
+    "zpf\000zpf-Latn-MX",
+    "zpg\000zpg-Latn-MX",
+    "zph\000zph-Latn-MX",
+    "zpi\000zpi-Latn-MX",
+    "zpj\000zpj-Latn-MX",
+    "zpk\000zpk-Latn-MX",
+    "zpl\000zpl-Latn-MX",
+    "zpm\000zpm-Latn-MX",
+    "zpn\000zpn-Latn-MX",
+    "zpo\000zpo-Latn-MX",
+    "zpp\000zpp-Latn-MX",
+    "zpq\000zpq-Latn-MX",
+    "zpr\000zpr-Latn-MX",
+    "zps\000zps-Latn-MX",
+    "zpt\000zpt-Latn-MX",
+    "zpu\000zpu-Latn-MX",
+    "zpv\000zpv-Latn-MX",
+    "zpw\000zpw-Latn-MX",
+    "zpx\000zpx-Latn-MX",
+    "zpy\000zpy-Latn-MX",
+    "zpz\000zpz-Latn-MX",
+    "zqe\000zqe-Hani-CN",
+    "zrg\000zrg-Orya-IN",
+    "zrn\000zrn-Latn-TD",
+    "zro\000zro-Latn-EC",
+    "zrp\000zrp-Hebr-FR",
+    "zrs\000zrs-Latn-ID",
+    "zsa\000zsa-Latn-PG",
+    "zsr\000zsr-Latn-MX",
+    "zsu\000zsu-Latn-PG",
+    "zte\000zte-Latn-MX",
+    "ztg\000ztg-Latn-MX",
+    "ztl\000ztl-Latn-MX",
+    "ztm\000ztm-Latn-MX",
+    "ztn\000ztn-Latn-MX",
+    "ztp\000ztp-Latn-MX",
+    "ztq\000ztq-Latn-MX",
+    "zts\000zts-Latn-MX",
+    "ztt\000ztt-Latn-MX",
+    "ztu\000ztu-Latn-MX",
+    "ztx\000ztx-Latn-MX",
+    "zty\000zty-Latn-MX",
+    "zu\000zu-Latn-ZA",
+    "zuh\000zuh-Latn-PG",
+    "zum\000zum-Arab-OM",
+    "zun\000zun-Latn-US",
+    "zuy\000zuy-Latn-CM",
+    "zwa\000zwa-Ethi-ET",
+    "zyg\000zyg-Hani-CN",
+    "zyj\000zyj-Latn-CN",
+    "zyn\000zyn-Hani-CN",
+    "zyp\000zyp-Latn-MM",
+    "zza\000zza-Latn-TR",
+    "zzj\000zzj-Hani-CN",
+};
+const int likely_subtags_count = sizeof(likely_subtags_tab) / sizeof(likely_subtags_tab[0]);
+
+/* Calendar preference data: locale or region -> calendars by descending preference */
+const IntlPrefData cal_pref_tab[] = {
+    { "001", "gregorian" },
+    { "AE", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" },
+    { "AF", "persian gregorian islamic islamic-civil islamic-tbla" },
+    { "AL", "gregorian islamic-civil islamic-tbla" },
+    { "AZ", "gregorian islamic-civil islamic-tbla" },
+    { "BD", "gregorian islamic islamic-civil islamic-tbla" },
+    { "BH", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" },
+    { "CN", "gregorian chinese" },
+    { "CX", "gregorian chinese" },
+    { "DJ", "gregorian islamic islamic-civil islamic-tbla" },
+    { "DZ", "gregorian islamic islamic-civil islamic-tbla" },
+    { "EG", "gregorian coptic islamic islamic-civil islamic-tbla" },
+    { "EH", "gregorian islamic islamic-civil islamic-tbla" },
+    { "ER", "gregorian islamic islamic-civil islamic-tbla" },
+    { "ET", "gregorian ethiopic" },
+    { "HK", "gregorian chinese" },
+    { "ID", "gregorian islamic islamic-civil islamic-tbla" },
+    { "IL", "gregorian hebrew islamic islamic-civil islamic-tbla" },
+    { "IN", "gregorian indian" },
+    { "IQ", "gregorian islamic islamic-civil islamic-tbla" },
+    { "IR", "persian gregorian islamic islamic-civil islamic-tbla" },
+    { "JO", "gregorian islamic islamic-civil islamic-tbla" },
+    { "JP", "gregorian japanese" },
+    { "KM", "gregorian islamic islamic-civil islamic-tbla" },
+    { "KR", "gregorian dangi" },
+    { "KW", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" },
+    { "LB", "gregorian islamic islamic-civil islamic-tbla" },
+    { "LY", "gregorian islamic islamic-civil islamic-tbla" },
+    { "MA", "gregorian islamic islamic-civil islamic-tbla" },
+    { "MO", "gregorian chinese" },
+    { "MR", "gregorian islamic islamic-civil islamic-tbla" },
+    { "MV", "gregorian islamic-civil islamic-tbla" },
+    { "MY", "gregorian islamic islamic-civil islamic-tbla" },
+    { "NE", "gregorian islamic islamic-civil islamic-tbla" },
+    { "OM", "gregorian islamic islamic-civil islamic-tbla" },
+    { "PK", "gregorian islamic islamic-civil islamic-tbla" },
+    { "PS", "gregorian islamic islamic-civil islamic-tbla" },
+    { "QA", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" },
+    { "SA", "gregorian islamic-umalqura islamic islamic-rgsa" },
+    { "SD", "gregorian islamic islamic-civil islamic-tbla" },
+    { "SG", "gregorian chinese" },
+    { "SY", "gregorian islamic islamic-civil islamic-tbla" },
+    { "TD", "gregorian islamic islamic-civil islamic-tbla" },
+    { "TH", "buddhist gregorian" },
+    { "TJ", "gregorian islamic-civil islamic-tbla" },
+    { "TM", "gregorian islamic-civil islamic-tbla" },
+    { "TN", "gregorian islamic islamic-civil islamic-tbla" },
+    { "TR", "gregorian islamic-civil islamic-tbla" },
+    { "TW", "gregorian roc chinese" },
+    { "UZ", "gregorian islamic-civil islamic-tbla" },
+    { "XK", "gregorian islamic-civil islamic-tbla" },
+    { "YE", "gregorian islamic islamic-civil islamic-tbla" },
+};
+const int cal_pref_count = sizeof(cal_pref_tab) / sizeof(cal_pref_tab[0]);
+
+/* Time data: locale or region -> hour cycles by descending preference */
+const IntlPrefData time_data_tab[] = {
+    { "001", "h23 h12" },
+    { "419", "h12 h23" },
+    { "AC", "h23 h12" },
+    { "AD", "h23 h12" },
+    { "AE", "h12 h23" },
+    { "AF", "h23 h12" },
+    { "AG", "h12 h23" },
+    { "AI", "h23 h12" },
+    { "AL", "h12 h23" },
+    { "AM", "h23 h12" },
+    { "AO", "h23 h12" },
+    { "AR", "h12 h23" },
+    { "AS", "h12 h23" },
+    { "AT", "h23 h12" },
+    { "AU", "h12 h23" },
+    { "AW", "h23 h12" },
+    { "AX", "h23" },
+    { "AZ", "h23 h12" },
+    { "BA", "h23 h12" },
+    { "BB", "h12 h23" },
+    { "BD", "h12 h23" },
+    { "BE", "h23 h12" },
+    { "BF", "h23 h12" },
+    { "BG", "h23 h12" },
+    { "BH", "h12 h23" },
+    { "BI", "h23 h12" },
+    { "BJ", "h23 h12" },
+    { "BL", "h23 h12" },
+    { "BM", "h12 h23" },
+    { "BN", "h12 h23" },
+    { "BO", "h12 h23" },
+    { "BQ", "h23" },
+    { "BR", "h23 h12" },
+    { "BS", "h12 h23" },
+    { "BT", "h12 h23" },
+    { "BW", "h23 h12" },
+    { "BY", "h23 h12" },
+    { "BZ", "h23 h12" },
+    { "CA", "h12 h23" },
+    { "CC", "h23 h12" },
+    { "CD", "h23 h12" },
+    { "CF", "h23 h12" },
+    { "CG", "h23 h12" },
+    { "CH", "h23 h12" },
+    { "CI", "h23 h12" },
+    { "CK", "h23 h12" },
+    { "CL", "h12 h23" },
+    { "CM", "h23 h12" },
+    { "CN", "h23 h12" },
+    { "CO", "h12 h23" },
+    { "CP", "h23" },
+    { "CR", "h12 h23" },
+    { "CU", "h12 h23" },
+    { "CV", "h23 h12" },
+    { "CW", "h23 h12" },
+    { "CX", "h23 h12" },
+    { "CY", "h12 h23" },
+    { "CZ", "h23" },
+    { "DE", "h23 h12" },
+    { "DG", "h23 h12" },
+    { "DJ", "h12 h23" },
+    { "DK", "h23" },
+    { "DM", "h12 h23" },
+    { "DO", "h12 h23" },
+    { "DZ", "h12 h23" },
+    { "EA", "h23 h12" },
+    { "EC", "h12 h23" },
+    { "EE", "h23 h12" },
+    { "EG", "h12 h23" },
+    { "EH", "h12 h23" },
+    { "ER", "h12 h23" },
+    { "ES", "h23 h12" },
+    { "ET", "h12 h23" },
+    { "FI", "h23" },
+    { "FJ", "h12 h23" },
+    { "FK", "h23 h12" },
+    { "FM", "h12 h23" },
+    { "FO", "h23 h12" },
+    { "FR", "h23 h12" },
+    { "GA", "h23 h12" },
+    { "GB", "h23 h12" },
+    { "GD", "h12 h23" },
+    { "GE", "h23 h12" },
+    { "GF", "h23 h12" },
+    { "GG", "h23 h12" },
+    { "GH", "h12 h23" },
+    { "GI", "h23 h12" },
+    { "GL", "h23 h12" },
+    { "GM", "h12 h23" },
+    { "GN", "h23 h12" },
+    { "GP", "h23 h12" },
+    { "GQ", "h23 h12" },
+    { "GR", "h12 h23" },
+    { "GS", "h23 h12" },
+    { "GT", "h12 h23" },
+    { "GU", "h12 h23" },
+    { "GW", "h23 h12" },
+    { "GY", "h12 h23" },
+    { "HK", "h12 h23" },
+    { "HN", "h12 h23" },
+    { "HR", "h23 h12" },
+    { "HU", "h23 h12" },
+    { "IC", "h23 h12" },
+    { "ID", "h23" },
+    { "IE", "h23 h12" },
+    { "IL", "h23 h12" },
+    { "IM", "h23 h12" },
+    { "IN", "h12 h23" },
+    { "IO", "h23 h12" },
+    { "IQ", "h12 h23" },
+    { "IR", "h23 h12" },
+    { "IS", "h23" },
+    { "IT", "h23 h12" },
+    { "JE", "h23 h12" },
+    { "JM", "h12 h23" },
+    { "JO", "h12 h23" },
+    { "JP", "h23 h11 h12" },
+    { "KE", "h23 h12" },
+    { "KG", "h23 h12" },
+    { "KH", "h12 h23" },
+    { "KI", "h12 h23" },
+    { "KM", "h23 h12" },
+    { "KN", "h12 h23" },
+    { "KP", "h12 h23" },
+    { "KR", "h12 h23" },
+    { "KW", "h12 h23" },
+    { "KY", "h12 h23" },
+    { "KZ", "h23 h12" },
+    { "LA", "h23 h12" },
+    { "LB", "h12 h23" },
+    { "LC", "h12 h23" },
+    { "LI", "h23 h12" },
+    { "LK", "h23 h12" },
+    { "LR", "h12 h23" },
+    { "LS", "h12 h23" },
+    { "LT", "h23 h12" },
+    { "LU", "h23 h12" },
+    { "LV", "h23 h12" },
+    { "LY", "h12 h23" },
+    { "MA", "h23 h12" },
+    { "MC", "h23 h12" },
+    { "MD", "h23 h12" },
+    { "ME", "h23 h12" },
+    { "MF", "h23 h12" },
+    { "MG", "h23 h12" },
+    { "MH", "h12 h23" },
+    { "MK", "h23 h12" },
+    { "ML", "h23" },
+    { "MM", "h23 h12" },
+    { "MN", "h23 h12" },
+    { "MO", "h12 h23" },
+    { "MP", "h12 h23" },
+    { "MQ", "h23 h12" },
+    { "MR", "h12 h23" },
+    { "MS", "h23 h12" },
+    { "MT", "h23 h12" },
+    { "MU", "h23 h12" },
+    { "MV", "h23 h12" },
+    { "MW", "h12 h23" },
+    { "MX", "h12 h23" },
+    { "MY", "h12 h23" },
+    { "MZ", "h23 h12" },
+    { "NA", "h12 h23" },
+    { "NC", "h23 h12" },
+    { "NE", "h23" },
+    { "NF", "h23 h12" },
+    { "NG", "h23 h12" },
+    { "NI", "h12 h23" },
+    { "NL", "h23 h12" },
+    { "NO", "h23 h12" },
+    { "NP", "h23 h12" },
+    { "NR", "h23 h12" },
+    { "NU", "h23 h12" },
+    { "NZ", "h12 h23" },
+    { "OM", "h12 h23" },
+    { "PA", "h12 h23" },
+    { "PE", "h12 h23" },
+    { "PF", "h23 h12" },
+    { "PG", "h12 h23" },
+    { "PH", "h12 h23" },
+    { "PK", "h12 h23" },
+    { "PL", "h23 h12" },
+    { "PM", "h23 h12" },
+    { "PN", "h23 h12" },
+    { "PR", "h12 h23" },
+    { "PS", "h12 h23" },
+    { "PT", "h23 h12" },
+    { "PW", "h12 h23" },
+    { "PY", "h12 h23" },
+    { "QA", "h12 h23" },
+    { "RE", "h23 h12" },
+    { "RO", "h23 h12" },
+    { "RS", "h23 h12" },
+    { "RU", "h23" },
+    { "RW", "h23 h12" },
+    { "SA", "h12 h23" },
+    { "SB", "h12 h23" },
+    { "SC", "h23 h12" },
+    { "SD", "h12 h23" },
+    { "SE", "h23" },
+    { "SG", "h12 h23" },
+    { "SH", "h23 h12" },
+    { "SI", "h23 h12" },
+    { "SJ", "h23" },
+    { "SK", "h23" },
+    { "SL", "h12 h23" },
+    { "SM", "h23 h12" },
+    { "SN", "h23 h12" },
+    { "SO", "h12 h23" },
+    { "SR", "h23 h12" },
+    { "SS", "h12 h23" },
+    { "ST", "h23 h12" },
+    { "SV", "h12 h23" },
+    { "SX", "h23 h12" },
+    { "SY", "h12 h23" },
+    { "SZ", "h12 h23" },
+    { "TA", "h23 h12" },
+    { "TC", "h12 h23" },
+    { "TD", "h12 h23" },
+    { "TF", "h23 h12" },
+    { "TG", "h23 h12" },
+    { "TH", "h23 h12" },
+    { "TJ", "h23 h12" },
+    { "TL", "h23 h12" },
+    { "TM", "h23 h12" },
+    { "TN", "h12 h23" },
+    { "TO", "h12 h23" },
+    { "TR", "h23 h12" },
+    { "TT", "h12 h23" },
+    { "TW", "h12 h23" },
+    { "TZ", "h23 h12" },
+    { "UA", "h23 h12" },
+    { "UG", "h23 h12" },
+    { "UM", "h12 h23" },
+    { "US", "h12 h23" },
+    { "UY", "h12 h23" },
+    { "UZ", "h23 h12" },
+    { "VA", "h23 h12" },
+    { "VC", "h12 h23" },
+    { "VE", "h12 h23" },
+    { "VG", "h12 h23" },
+    { "VI", "h12 h23" },
+    { "VN", "h23 h12" },
+    { "VU", "h12 h23" },
+    { "WF", "h23 h12" },
+    { "WS", "h12 h23" },
+    { "XK", "h23 h12" },
+    { "YE", "h12 h23" },
+    { "YT", "h23 h12" },
+    { "ZA", "h23 h12" },
+    { "ZM", "h12 h23" },
+    { "ZW", "h23 h12" },
+    { "af-ZA", "h23 h12" },
+    { "ar-001", "h12 h23" },
+    { "ca-ES", "h23 h12" },
+    { "en-001", "h12 h23" },
+    { "en-HK", "h12 h23" },
+    { "en-IL", "h23 h12" },
+    { "en-MY", "h12 h23" },
+    { "es-BR", "h23 h12" },
+    { "es-ES", "h23 h12" },
+    { "es-GQ", "h23 h12" },
+    { "fr-CA", "h23 h12" },
+    { "gl-ES", "h23 h12" },
+    { "gu-IN", "h12 h23" },
+    { "hi-IN", "h12 h23" },
+    { "it-CH", "h23 h12" },
+    { "it-IT", "h23 h12" },
+    { "kn-IN", "h12 h23" },
+    { "ku-SY", "h23 h12" },
+    { "ml-IN", "h12 h23" },
+    { "mr-IN", "h12 h23" },
+    { "pa-IN", "h12 h23" },
+    { "ta-IN", "h12 h23" },
+    { "te-IN", "h12 h23" },
+    { "zu-ZA", "h23 h12" },
+};
+const int time_data_count = sizeof(time_data_tab) / sizeof(time_data_tab[0]);
+
+/* Week data: region -> first day of week and weekend range (ISO 8601 days) */
+const IntlWeekData week_data_tab[] = {
+    { "001", 1, 6, 7 },
+    { "AD", 1, 6, 7 },
+    { "AE", 1, 6, 7 },
+    { "AF", 6, 4, 5 },
+    { "AG", 7, 6, 7 },
+    { "AI", 1, 6, 7 },
+    { "AL", 1, 6, 7 },
+    { "AM", 1, 6, 7 },
+    { "AN", 1, 6, 7 },
+    { "AR", 1, 6, 7 },
+    { "AS", 7, 6, 7 },
+    { "AT", 1, 6, 7 },
+    { "AU", 1, 6, 7 },
+    { "AX", 1, 6, 7 },
+    { "AZ", 1, 6, 7 },
+    { "BA", 1, 6, 7 },
+    { "BD", 7, 6, 7 },
+    { "BE", 1, 6, 7 },
+    { "BG", 1, 6, 7 },
+    { "BH", 6, 5, 6 },
+    { "BM", 1, 6, 7 },
+    { "BN", 1, 6, 7 },
+    { "BR", 7, 6, 7 },
+    { "BS", 7, 6, 7 },
+    { "BT", 7, 6, 7 },
+    { "BW", 7, 6, 7 },
+    { "BY", 1, 6, 7 },
+    { "BZ", 7, 6, 7 },
+    { "CA", 7, 6, 7 },
+    { "CH", 1, 6, 7 },
+    { "CL", 1, 6, 7 },
+    { "CM", 1, 6, 7 },
+    { "CN", 1, 6, 7 },
+    { "CO", 7, 6, 7 },
+    { "CR", 1, 6, 7 },
+    { "CY", 1, 6, 7 },
+    { "CZ", 1, 6, 7 },
+    { "DE", 1, 6, 7 },
+    { "DJ", 6, 6, 7 },
+    { "DK", 1, 6, 7 },
+    { "DM", 7, 6, 7 },
+    { "DO", 7, 6, 7 },
+    { "DZ", 6, 5, 6 },
+    { "EC", 1, 6, 7 },
+    { "EE", 1, 6, 7 },
+    { "EG", 6, 5, 6 },
+    { "ES", 1, 6, 7 },
+    { "ET", 7, 6, 7 },
+    { "FI", 1, 6, 7 },
+    { "FJ", 1, 6, 7 },
+    { "FO", 1, 6, 7 },
+    { "FR", 1, 6, 7 },
+    { "GB", 1, 6, 7 },
+    { "GE", 1, 6, 7 },
+    { "GF", 1, 6, 7 },
+    { "GP", 1, 6, 7 },
+    { "GR", 1, 6, 7 },
+    { "GT", 7, 6, 7 },
+    { "GU", 7, 6, 7 },
+    { "HK", 7, 6, 7 },
+    { "HN", 7, 6, 7 },
+    { "HR", 1, 6, 7 },
+    { "HU", 1, 6, 7 },
+    { "ID", 7, 6, 7 },
+    { "IE", 1, 6, 7 },
+    { "IL", 7, 5, 6 },
+    { "IN", 7, 7, 7 },
+    { "IQ", 6, 5, 6 },
+    { "IR", 6, 5, 5 },
+    { "IS", 7, 6, 7 },
+    { "IT", 1, 6, 7 },
+    { "JM", 7, 6, 7 },
+    { "JO", 6, 5, 6 },
+    { "JP", 7, 6, 7 },
+    { "KE", 7, 6, 7 },
+    { "KG", 1, 6, 7 },
+    { "KH", 7, 6, 7 },
+    { "KR", 7, 6, 7 },
+    { "KW", 6, 5, 6 },
+    { "KZ", 1, 6, 7 },
+    { "LA", 7, 6, 7 },
+    { "LB", 1, 6, 7 },
+    { "LI", 1, 6, 7 },
+    { "LK", 1, 6, 7 },
+    { "LT", 1, 6, 7 },
+    { "LU", 1, 6, 7 },
+    { "LV", 1, 6, 7 },
+    { "LY", 6, 5, 6 },
+    { "MC", 1, 6, 7 },
+    { "MD", 1, 6, 7 },
+    { "ME", 1, 6, 7 },
+    { "MH", 7, 6, 7 },
+    { "MK", 1, 6, 7 },
+    { "MM", 7, 6, 7 },
+    { "MN", 1, 6, 7 },
+    { "MO", 7, 6, 7 },
+    { "MQ", 1, 6, 7 },
+    { "MT", 7, 6, 7 },
+    { "MV", 5, 6, 7 },
+    { "MX", 7, 6, 7 },
+    { "MY", 1, 6, 7 },
+    { "MZ", 7, 6, 7 },
+    { "NI", 7, 6, 7 },
+    { "NL", 1, 6, 7 },
+    { "NO", 1, 6, 7 },
+    { "NP", 7, 6, 7 },
+    { "NZ", 1, 6, 7 },
+    { "OM", 6, 5, 6 },
+    { "PA", 7, 6, 7 },
+    { "PE", 7, 6, 7 },
+    { "PH", 7, 6, 7 },
+    { "PK", 7, 6, 7 },
+    { "PL", 1, 6, 7 },
+    { "PR", 7, 6, 7 },
+    { "PT", 7, 6, 7 },
+    { "PY", 7, 6, 7 },
+    { "QA", 6, 5, 6 },
+    { "RE", 1, 6, 7 },
+    { "RO", 1, 6, 7 },
+    { "RS", 1, 6, 7 },
+    { "RU", 1, 6, 7 },
+    { "SA", 7, 5, 6 },
+    { "SD", 6, 5, 6 },
+    { "SE", 1, 6, 7 },
+    { "SG", 7, 6, 7 },
+    { "SI", 1, 6, 7 },
+    { "SK", 1, 6, 7 },
+    { "SM", 1, 6, 7 },
+    { "SV", 7, 6, 7 },
+    { "SY", 6, 5, 6 },
+    { "TH", 7, 6, 7 },
+    { "TJ", 1, 6, 7 },
+    { "TM", 1, 6, 7 },
+    { "TR", 1, 6, 7 },
+    { "TT", 7, 6, 7 },
+    { "TW", 7, 6, 7 },
+    { "UA", 1, 6, 7 },
+    { "UG", 1, 7, 7 },
+    { "UM", 7, 6, 7 },
+    { "US", 7, 6, 7 },
+    { "UY", 1, 6, 7 },
+    { "UZ", 1, 6, 7 },
+    { "VA", 1, 6, 7 },
+    { "VE", 7, 6, 7 },
+    { "VI", 7, 6, 7 },
+    { "VN", 1, 6, 7 },
+    { "WS", 7, 6, 7 },
+    { "XK", 1, 6, 7 },
+    { "YE", 7, 5, 6 },
+    { "ZA", 7, 6, 7 },
+    { "ZW", 7, 6, 7 },
+};
+const int week_data_count = sizeof(week_data_tab) / sizeof(week_data_tab[0]);
+
+/* Script direction: script -> 0 for left-to-right, 1 for right-to-left */
+const IntlScriptDir script_dir_tab[] = {
+    { "Adlm", 1 },
+    { "Aghb", 0 },
+    { "Ahom", 0 },
+    { "Arab", 1 },
+    { "Armi", 1 },
+    { "Armn", 0 },
+    { "Avst", 1 },
+    { "Bali", 0 },
+    { "Bamu", 0 },
+    { "Bass", 0 },
+    { "Batk", 0 },
+    { "Beng", 0 },
+    { "Berf", 0 },
+    { "Bhks", 0 },
+    { "Bopo", 0 },
+    { "Brah", 0 },
+    { "Bugi", 0 },
+    { "Buhd", 0 },
+    { "Cakm", 0 },
+    { "Cans", 0 },
+    { "Cari", 0 },
+    { "Cham", 0 },
+    { "Cher", 0 },
+    { "Chrs", 1 },
+    { "Copt", 0 },
+    { "Cpmn", 0 },
+    { "Cprt", 1 },
+    { "Cyrl", 0 },
+    { "Deva", 0 },
+    { "Diak", 0 },
+    { "Dogr", 0 },
+    { "Dsrt", 0 },
+    { "Dupl", 0 },
+    { "Egyp", 0 },
+    { "Elba", 0 },
+    { "Elym", 1 },
+    { "Ethi", 0 },
+    { "Gara", 1 },
+    { "Geor", 0 },
+    { "Glag", 0 },
+    { "Gong", 0 },
+    { "Gonm", 0 },
+    { "Goth", 0 },
+    { "Gran", 0 },
+    { "Grek", 0 },
+    { "Gujr", 0 },
+    { "Gukh", 0 },
+    { "Guru", 0 },
+    { "Hanb", 0 },
+    { "Hang", 0 },
+    { "Hani", 0 },
+    { "Hano", 0 },
+    { "Hans", 0 },
+    { "Hant", 0 },
+    { "Hatr", 1 },
+    { "Hebr", 1 },
+    { "Hira", 0 },
+    { "Hluw", 0 },
+    { "Hmng", 0 },
+    { "Hmnp", 0 },
+    { "Hung", 1 },
+    { "Ital", 0 },
+    { "Jamo", 0 },
+    { "Java", 0 },
+    { "Jpan", 0 },
+    { "Kali", 0 },
+    { "Kana", 0 },
+    { "Kawi", 0 },
+    { "Khar", 1 },
+    { "Khmr", 0 },
+    { "Khoj", 0 },
+    { "Kits", 0 },
+    { "Knda", 0 },
+    { "Kore", 0 },
+    { "Krai", 0 },
+    { "Kthi", 0 },
+    { "Lana", 0 },
+    { "Laoo", 0 },
+    { "Latn", 0 },
+    { "Lepc", 0 },
+    { "Limb", 0 },
+    { "Lina", 0 },
+    { "Linb", 0 },
+    { "Lisu", 0 },
+    { "Lyci", 0 },
+    { "Lydi", 1 },
+    { "Mahj", 0 },
+    { "Maka", 0 },
+    { "Mand", 1 },
+    { "Mani", 1 },
+    { "Marc", 0 },
+    { "Medf", 0 },
+    { "Mend", 1 },
+    { "Merc", 1 },
+    { "Mero", 1 },
+    { "Mlym", 0 },
+    { "Modi", 0 },
+    { "Mong", 0 },
+    { "Mroo", 0 },
+    { "Mtei", 0 },
+    { "Mult", 0 },
+    { "Mymr", 0 },
+    { "Nagm", 0 },
+    { "Nand", 0 },
+    { "Narb", 1 },
+    { "Nbat", 1 },
+    { "Newa", 0 },
+    { "Nkoo", 1 },
+    { "Nshu", 0 },
+    { "Ogam", 0 },
+    { "Olck", 0 },
+    { "Onao", 0 },
+    { "Orkh", 1 },
+    { "Orya", 0 },
+    { "Osge", 0 },
+    { "Osma", 0 },
+    { "Ougr", 1 },
+    { "Palm", 1 },
+    { "Pauc", 0 },
+    { "Perm", 0 },
+    { "Phag", 0 },
+    { "Phli", 1 },
+    { "Phlp", 1 },
+    { "Phnx", 1 },
+    { "Plrd", 0 },
+    { "Prti", 1 },
+    { "Rjng", 0 },
+    { "Rohg", 1 },
+    { "Runr", 0 },
+    { "Samr", 1 },
+    { "Sarb", 1 },
+    { "Saur", 0 },
+    { "Sgnw", 0 },
+    { "Shaw", 0 },
+    { "Shrd", 0 },
+    { "Sidd", 0 },
+    { "Sidt", 1 },
+    { "Sind", 0 },
+    { "Sinh", 0 },
+    { "Sogd", 1 },
+    { "Sogo", 1 },
+    { "Sora", 0 },
+    { "Soyo", 0 },
+    { "Sund", 0 },
+    { "Sunu", 0 },
+    { "Sylo", 0 },
+    { "Syrc", 1 },
+    { "Tagb", 0 },
+    { "Takr", 0 },
+    { "Tale", 0 },
+    { "Talu", 0 },
+    { "Taml", 0 },
+    { "Tang", 0 },
+    { "Tavt", 0 },
+    { "Tayo", 0 },
+    { "Telu", 0 },
+    { "Tfng", 0 },
+    { "Tglg", 0 },
+    { "Thaa", 1 },
+    { "Thai", 0 },
+    { "Tibt", 0 },
+    { "Tirh", 0 },
+    { "Tnsa", 0 },
+    { "Todr", 0 },
+    { "Tols", 0 },
+    { "Toto", 0 },
+    { "Tutg", 0 },
+    { "Ugar", 0 },
+    { "Vaii", 0 },
+    { "Vith", 0 },
+    { "Wara", 0 },
+    { "Wcho", 0 },
+    { "Xpeo", 0 },
+    { "Xsux", 0 },
+    { "Yezi", 1 },
+    { "Yiii", 0 },
+    { "Zanb", 0 },
+};
+const int script_dir_count = sizeof(script_dir_tab) / sizeof(script_dir_tab[0]);
+
 const char *intl_supported_currencies[] = {
     "ADP",
     "AED",
index 507e2a12c1ac34e12cd3d017151872014bb055e3..49ef72db1b87f123a761d7703a2192197870ca81 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "../quickjs.h"
 #include "../cutils.h"
+#include "../temporal/temporal_private.h"
 #include "intl_private.h"
 
 static JSClassID js_locale_class_id;
@@ -248,6 +249,7 @@ static const char *canonicalize_keyword_value(const char *key, const char *value
     if (!strcasecmp(key, "ca")) {
         if (!strcasecmp(value, "islamicc")) return "islamic-civil";
         if (!strcasecmp(value, "ethiopic-amete-alem")) return "ethioaa";
+        if (!strcasecmp(value, "gregorian")) return "gregory";
     }
     return value;
 }
@@ -1377,349 +1379,246 @@ static JSValue js_locale_get_firstDayOfWeek(JSContext *ctx, JSValueConst this_va
     return JS_UNDEFINED;
 }
 
-static JSValue js_locale_getCalendars(JSContext *ctx, JSValueConst this_val,
-                                      int argc, JSValueConst *argv)
+/* Split locale into base (before first extension singleton) and suffix */
+static void locale_split_base_suffix(const char *locale, char *base, int base_size, char *suffix, int suffix_size)
 {
-    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
-    if (!s)
-        return JS_EXCEPTION;
-    {
-        JSValue arr = JS_NewArray(ctx);
-        if (JS_IsException(arr))
-            return JS_EXCEPTION;
-        JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "gregory"),
-                                     JS_PROP_C_W_E);
-        return arr;
+    int len = (int)strlen(locale);
+    int i = 0;
+    int ext_pos = -1;
+    base[0] = '\0';
+    suffix[0] = '\0';
+    while (i < len) {
+        int j = i;
+        while (j < len && locale[j] != '-') j++;
+        int slen = j - i;
+        if (slen == 1 && isalpha((unsigned char)locale[i]) && i > 0) {
+            ext_pos = i - 1; /* include leading dash */
+            break;
+        }
+        i = j + 1;
     }
-}
-
-static JSValue js_locale_getTimeZones(JSContext *ctx, JSValueConst this_val,
-                                      int argc, JSValueConst *argv)
-{
-    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
-    if (!s)
-        return JS_EXCEPTION;
-    if (!s->region)
-        return JS_UNDEFINED;
-    {
-        JSValue arr = JS_NewArray(ctx);
-        if (JS_IsException(arr))
-            return JS_EXCEPTION;
-        JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "UTC"),
-                                     JS_PROP_C_W_E);
-        return arr;
+    if (ext_pos >= 0) {
+        pstrcpy(base, base_size, locale);
+        base[ext_pos] = '\0';
+        pstrcpy(suffix, suffix_size, locale + ext_pos);
+    } else {
+        pstrcpy(base, base_size, locale);
     }
 }
 
-static int weekday_name_to_number(const char *s)
+/* --------------------------------------------------------------------- */
+/* UTS 35 likely subtags                                                  */
+/* --------------------------------------------------------------------- */
+
+static BOOL is_script_subtag(const char *s)
 {
-    if (!strcmp(s, "mon") || !strcmp(s, "1")) return 1;
-    if (!strcmp(s, "tue") || !strcmp(s, "2")) return 2;
-    if (!strcmp(s, "wed") || !strcmp(s, "3")) return 3;
-    if (!strcmp(s, "thu") || !strcmp(s, "4")) return 4;
-    if (!strcmp(s, "fri") || !strcmp(s, "5")) return 5;
-    if (!strcmp(s, "sat") || !strcmp(s, "6")) return 6;
-    if (!strcmp(s, "sun") || !strcmp(s, "7") || !strcmp(s, "0")) return 7;
-    return 7;
+    int i, len = (int)strlen(s);
+    if (len != 4)
+        return FALSE;
+    for (i = 0; i < 4; i++) {
+        if (!isalpha((unsigned char)s[i]))
+            return FALSE;
+    }
+    return TRUE;
 }
 
-static JSValue js_locale_getTextInfo(JSContext *ctx, JSValueConst this_val,
-                                     int argc, JSValueConst *argv)
+static BOOL is_region_subtag(const char *s)
 {
-    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
-    if (!s)
-        return JS_EXCEPTION;
-    {
-        JSValue obj = JS_NewObject(ctx);
-        if (JS_IsException(obj))
-            return JS_EXCEPTION;
-        {
-            const char *dir = "ltr";
-            if (s->language && (!strcmp(s->language, "ar") ||
-                                !strcmp(s->language, "he") ||
-                                !strcmp(s->language, "fa") ||
-                                !strcmp(s->language, "ur")))
-                dir = "rtl";
-            JS_DefinePropertyValueStr(ctx, obj, "direction",
-                                       JS_NewString(ctx, dir), JS_PROP_C_W_E);
+    int i, len = (int)strlen(s);
+    if (len == 2) {
+        for (i = 0; i < 2; i++) {
+            if (!isalpha((unsigned char)s[i]))
+                return FALSE;
+        }
+        return TRUE;
+    }
+    if (len == 3) {
+        for (i = 0; i < 3; i++) {
+            if (!isdigit((unsigned char)s[i]))
+                return FALSE;
         }
-        return obj;
+        return TRUE;
     }
+    return FALSE;
 }
 
-static JSValue js_locale_getCollations(JSContext *ctx, JSValueConst this_val,
-                                       int argc, JSValueConst *argv)
+static BOOL is_alphanum_len(const char *s, int min_len, int max_len)
 {
-    if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id))
-        return JS_EXCEPTION;
-    {
-        JSValue arr = JS_NewArray(ctx);
-        if (JS_IsException(arr))
-            return JS_EXCEPTION;
-        JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "default"),
-                                     JS_PROP_C_W_E);
-        return arr;
+    int i, len = (int)strlen(s);
+    if (len < min_len || len > max_len)
+        return FALSE;
+    for (i = 0; i < len; i++) {
+        if (!isalnum((unsigned char)s[i]))
+            return FALSE;
+    }
+    return TRUE;
+}
+
+/* Look up a key in the likely subtags data. Returns the associated
+   language-script-region value, or NULL if the key is unknown. */
+static const char *likely_subtags_lookup(const char *key)
+{
+    int lo = 0, hi = likely_subtags_count - 1;
+    while (lo <= hi) {
+        int mid = lo + (hi - lo) / 2;
+        const char *entry = likely_subtags_tab[mid];
+        int c = strcmp(entry, key);
+        if (c == 0)
+            return entry + strlen(entry) + 1;
+        if (c < 0)
+            lo = mid + 1;
+        else
+            hi = mid - 1;
     }
+    return NULL;
 }
 
-static JSValue js_locale_getHourCycles(JSContext *ctx, JSValueConst this_val,
-                                       int argc, JSValueConst *argv)
+/* Add Likely Subtags (UTS 35). Store the maximized form of the language,
+   script and region subtags in buf. The subtags which are present are kept,
+   the missing ones are taken from the matched entry. Returns 0 on success,
+   or -1 if no data matches (an error is signaled by the caller). */
+static int locale_add_likely_subtags(const char *lang, const char *script,
+                                     const char *region, char *buf, int buf_size)
 {
-    if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id))
-        return JS_EXCEPTION;
-    {
-        JSValue arr = JS_NewArray(ctx);
-        if (JS_IsException(arr))
-            return JS_EXCEPTION;
-        JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "h12"),
-                                     JS_PROP_C_W_E);
-        return arr;
+    char key[64], value[64], *vsubtags[4];
+    const char *found = NULL;
+    const char *prefix, *sc, *rg;
+    BOOL has_lang = lang && *lang && strcmp(lang, "und") != 0;
+    BOOL has_script = script && *script && strcmp(script, "Zzzz") != 0;
+    BOOL has_region = region && *region && strcmp(region, "ZZ") != 0;
+    int n;
+
+    prefix = has_lang ? lang : "und";
+    if (has_lang && has_script && has_region) {
+        /* already in maximal form */
+        snprintf(buf, buf_size, "%s-%s-%s", lang, script, region);
+        return 0;
+    }
+    /* Try the keys built from the subtags which are present, longest first */
+    if (!has_lang && has_script && has_region) {
+        snprintf(key, sizeof(key), "und-%s-%s", script, region);
+        found = likely_subtags_lookup(key);
+    }
+    if (!found && has_script) {
+        snprintf(key, sizeof(key), "%s-%s", prefix, script);
+        found = likely_subtags_lookup(key);
+    }
+    if (!found && has_region) {
+        snprintf(key, sizeof(key), "%s-%s", prefix, region);
+        found = likely_subtags_lookup(key);
+    }
+    if (!found) {
+        snprintf(key, sizeof(key), "%s", prefix);
+        found = likely_subtags_lookup(key);
+    }
+    if (!found)
+        return -1;
+    pstrcpy(value, sizeof(value), found);
+    n = locale_split_subtags(value, vsubtags, 4);
+    if (n != 3)
+        return -1;
+    sc = has_script ? script : vsubtags[1];
+    rg = has_region ? region : vsubtags[2];
+    snprintf(buf, buf_size, "%s", has_lang ? lang : vsubtags[0]);
+    if (*sc) {
+        pstrcat(buf, buf_size, "-");
+        pstrcat(buf, buf_size, sc);
+    }
+    if (*rg) {
+        pstrcat(buf, buf_size, "-");
+        pstrcat(buf, buf_size, rg);
     }
+    return 0;
 }
 
-static JSValue js_locale_getNumberingSystems(JSContext *ctx, JSValueConst this_val,
-                                             int argc, JSValueConst *argv)
+/* A locale base name split into its language, script, region and variant
+   subtags. The subtag pointers point into storage. */
+typedef struct {
+    char storage[256];
+    char *subtags[16];
+    int count;
+    const char *lang;
+    const char *script;
+    const char *region;
+    int first_variant;
+} LocaleNameParts;
+
+static int locale_parse_name(const char *name, LocaleNameParts *p)
 {
-    if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id))
-        return JS_EXCEPTION;
-    {
-        JSValue arr = JS_NewArray(ctx);
-        if (JS_IsException(arr))
-            return JS_EXCEPTION;
-        JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "latn"),
-                                     JS_PROP_C_W_E);
-        return arr;
+    memset(p, 0, sizeof(*p));
+    pstrcpy(p->storage, sizeof(p->storage), name);
+    p->count = locale_split_subtags(p->storage, p->subtags, 16);
+    if (p->count == 0)
+        return -1;
+    p->lang = p->subtags[0];
+    p->first_variant = 1;
+    if (p->count > 1 && is_script_subtag(p->subtags[1])) {
+        p->script = p->subtags[1];
+        p->first_variant = 2;
+    }
+    if (p->count > p->first_variant &&
+        is_region_subtag(p->subtags[p->first_variant])) {
+        p->region = p->subtags[p->first_variant];
+        p->first_variant++;
     }
+    return 0;
 }
 
-static JSValue js_locale_getWeekInfo(JSContext *ctx, JSValueConst this_val,
-                                     int argc, JSValueConst *argv)
+/* Apply Add Likely Subtags to lang/script/region and append the variants of
+   name. Returns 0 on success, or -1 if an error is signaled. */
+static int locale_maximize_parts(const LocaleNameParts *name, const char *lang,
+                                 const char *script, const char *region,
+                                 char *out, int out_size)
 {
-    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
-    if (!s)
-        return JS_EXCEPTION;
-    {
-        JSValue obj = JS_NewObject(ctx);
-        int firstDay = 7;
-        if (JS_IsException(obj))
-            return JS_EXCEPTION;
-        if (s->firstDayOfWeek)
-            firstDay = weekday_name_to_number(s->firstDayOfWeek);
-        JS_DefinePropertyValueStr(ctx, obj, "firstDay",
-                                   JS_NewInt32(ctx, firstDay), JS_PROP_C_W_E);
-        {
-            JSValue weekend = JS_NewArray(ctx);
-            if (JS_IsException(weekend))
-                return JS_EXCEPTION;
-            JS_DefinePropertyValueUint32(ctx, weekend, 0, JS_NewInt32(ctx, 6),
-                                         JS_PROP_C_W_E);
-            JS_DefinePropertyValueUint32(ctx, weekend, 1, JS_NewInt32(ctx, 7),
-                                         JS_PROP_C_W_E);
-            JS_DefinePropertyValueStr(ctx, obj, "weekend", weekend, JS_PROP_C_W_E);
-        }
-        return obj;
+    char res[256];
+    int i;
+    if (locale_add_likely_subtags(lang, script, region, res, sizeof(res)) < 0)
+        return -1;
+    pstrcpy(out, out_size, res);
+    for (i = name->first_variant; i < name->count; i++) {
+        pstrcat(out, out_size, "-");
+        pstrcat(out, out_size, name->subtags[i]);
     }
+    return 0;
 }
 
-/* Split locale into base (before first extension singleton) and suffix */
-static void locale_split_base_suffix(const char *locale, char *base, int base_size, char *suffix, int suffix_size)
+/* Build a locale from the given subtags, appending the variants of name. */
+static void locale_join_parts(const LocaleNameParts *name, const char *lang,
+                              const char *script, const char *region,
+                              char *out, int out_size)
 {
-    int len = (int)strlen(locale);
-    int i = 0;
-    int ext_pos = -1;
-    base[0] = '\0';
-    suffix[0] = '\0';
-    while (i < len) {
-        int j = i;
-        while (j < len && locale[j] != '-') j++;
-        int slen = j - i;
-        if (slen == 1 && isalpha((unsigned char)locale[i]) && i > 0) {
-            ext_pos = i - 1; /* include leading dash */
-            break;
-        }
-        i = j + 1;
+    int i;
+    pstrcpy(out, out_size, lang);
+    if (script && *script) {
+        pstrcat(out, out_size, "-");
+        pstrcat(out, out_size, script);
     }
-    if (ext_pos >= 0) {
-        pstrcpy(base, base_size, locale);
-        base[ext_pos] = '\0';
-        pstrcpy(suffix, suffix_size, locale + ext_pos);
-    } else {
-        pstrcpy(base, base_size, locale);
+    if (region && *region) {
+        pstrcat(out, out_size, "-");
+        pstrcat(out, out_size, region);
+    }
+    for (i = name->first_variant; i < name->count; i++) {
+        pstrcat(out, out_size, "-");
+        pstrcat(out, out_size, name->subtags[i]);
     }
 }
 
-/* Hard-coded likely subtags for common locales */
-static const char *locale_get_likely_subtags(const char *lang, const char *script, const char *region)
-{
-    if (!lang[0]) return NULL;
-    if (!strcmp(lang, "und")) {
-        if (script && !strcmp(script, "Thai")) return "th-Thai-TH";
-        if (region && !strcmp(region, "419")) return "es-Latn-419";
-        if (region && !strcmp(region, "150")) return "en-Latn-150";
-        if (region && !strcmp(region, "AT")) return "de-Latn-AT";
-        if (region && !strcmp(region, "AQ")) return "en-Latn-AQ";
-        if (script && !strcmp(script, "Cyrl") && region && !strcmp(region, "RO")) return "bg-Cyrl-RO";
-        if (region && !strcmp(region, "CW")) return "pap";
-        return "en-Latn-US";
-    }
-    if (!strcmp(lang, "en")) {
-        if (script && !strcmp(script, "Shaw")) return "en-Shaw-GB";
-        if (script && !strcmp(script, "Arab")) return "en-Arab-US";
-        if (!script && region && !strcmp(region, "150")) return "en-Latn-150";
-        if (script && !strcmp(script, "Latn") && region && !strcmp(region, "150")) return "en-Latn-150";
-        if (!script && region && !strcmp(region, "AQ")) return "en-Latn-AQ";
-        if (script && !strcmp(script, "Latn") && region && !strcmp(region, "AQ")) return "en-Latn-AQ";
-        if (region && !strcmp(region, "GB")) return "en-Latn-GB";
-        if (region && !strcmp(region, "FR")) return "en-Latn-FR";
-        if (region && !strcmp(region, "US")) return "en-Latn-US";
-        if (script && !strcmp(script, "Latn")) return "en-Latn-US";
-        return "en-Latn-US";
-    }
-    if (!strcmp(lang, "sr")) return "sr-Cyrl-RS";
-    if (!strcmp(lang, "zh")) {
-        if (script && !strcmp(script, "Hant")) return "zh-Hant-TW";
-        if (!script && region && !strcmp(region, "TW")) return "zh-Hant-TW";
-        if (!script && region && !strcmp(region, "CN")) return "zh-Hans-CN";
-        if (script && !strcmp(script, "Hans") && !region) return "zh-Hans-CN";
-        if (!script && !region) return "zh-Hans-CN";
-    }
-    if (!strcmp(lang, "ja")) return "ja-Jpan-JP";
-    if (!strcmp(lang, "jbo")) {
-        if (!script && !region) return "jbo-Latn-001";
-        if (script && !strcmp(script, "Latn") && !region) return "jbo-Latn-001";
-        if (!script && region && !strcmp(region, "001")) return "jbo-Latn-001";
-    }
-    if (!strcmp(lang, "ro")) return "ro-Latn-RO";
-    if (!strcmp(lang, "de")) {
-        if (region && !strcmp(region, "AT")) return "de-Latn-AT";
-        return "de-Latn-DE";
-    }
-    if (!strcmp(lang, "it")) {
-        if (script && !strcmp(script, "Kana") && region && !strcmp(region, "CA")) return "it-Kana-CA";
-    }
-    if (!strcmp(lang, "ar")) {
-        if (!script && !region) return "ar-Arab-EG";
-        if (script && !strcmp(script, "Arab") && !region) return "ar-Arab-EG";
-        if (!script && region && !strcmp(region, "EG")) return "ar-Arab-EG";
-    }
-    if (!strcmp(lang, "th")) {
-        if (!script && !region) return "th-Thai-TH";
-        if (!script && region && !strcmp(region, "TH")) return "th-Thai-TH";
-    }
-    if (!strcmp(lang, "es")) {
-        if (!script && !region) return "es-Latn-ES";
-        if (!script && region && !strcmp(region, "ES")) return "es-Latn-ES";
-        if (!script && region && !strcmp(region, "419")) return "es-Latn-419";
-        if (script && !strcmp(script, "Latn") && region && !strcmp(region, "419")) return "es-Latn-419";
-    }
-    if (!strcmp(lang, "fr")) {
-        if (!script && !region) return "fr-Latn-FR";
-        if (!script && region && !strcmp(region, "FR")) return "fr-Latn-FR";
-    }
-    if (!strcmp(lang, "pt")) {
-        if (!script && !region) return "pt-Latn-PT";
-        if (!script && region && !strcmp(region, "BR")) return "pt-Latn-BR";
-        if (!script && region && !strcmp(region, "PT")) return "pt-Latn-PT";
-    }
-    if (!strcmp(lang, "ru")) {
-        if (!script && !region) return "ru-Cyrl-RU";
-        if (!script && region && !strcmp(region, "RU")) return "ru-Cyrl-RU";
-    }
-    if (!strcmp(lang, "bg")) {
-        if (!script && !region) return "bg-Cyrl-BG";
-        if (!script && region && !strcmp(region, "RO")) return "bg-Cyrl-RO";
-    }
-    if (!strcmp(lang, "uz")) {
-        if (!script && !region) return "uz-Latn-UZ";
-        if (!script && region && !strcmp(region, "UZ")) return "uz-Latn-UZ";
-    }
-    if (!strcmp(lang, "hi")) {
-        if (!script && !region) return "hi-Deva-IN";
-    }
-    if (!strcmp(lang, "aa")) {
-        if (!script && !region) return "aa-Latn-ET";
-    }
-    if (!strcmp(lang, "he")) {
-        if (!script && !region) return "he-Hebr-IL";
-    }
-    if (!strcmp(lang, "cs")) {
-        if (!script && !region) return "cs-Latn-CZ";
-    }
-    if (!strcmp(lang, "hy")) {
-        if (!script && !region) return "hy-Armn-AM";
-    }
-    if (!strcmp(lang, "hyw")) {
-        if (!script && !region) return "hyw-Armn-AM";
-    }
-    if (!strcmp(lang, "hak")) {
-        if (!script && !region) return "hak-Hans-CN";
-        if (script && !strcmp(script, "Hans") && !region) return "hak-Hans-CN";
-        if (!script && region && !strcmp(region, "CN")) return "hak-Hans-CN";
-    }
-    if (!strcmp(lang, "hsn")) {
-        if (!script && !region) return "hsn-Hans-CN";
-        if (script && !strcmp(script, "Hans") && !region) return "hsn-Hans-CN";
-        if (!script && region && !strcmp(region, "CN")) return "hsn-Hans-CN";
-    }
-    if (!strcmp(lang, "aae")) {
-        if (!script && !region) return "aae-Latn-IT";
-        if (script && !strcmp(script, "Latn") && !region) return "aae-Latn-IT";
-    }
-    if (!strcmp(lang, "und")) {
-        if (region && !strcmp(region, "CW")) return "pap";
-    }
-    if (!strcmp(lang, "pap")) {
-        return "pap";
-    }
-    return NULL;
+/* Maximize a locale base name. Returns 0 and stores the result in out, or
+   -1 if the Add Likely Subtags algorithm signaled an error. */
+static int locale_maximize_to(const char *base, char *out, int out_size)
+{
+    LocaleNameParts name;
+    if (locale_parse_name(base, &name) < 0)
+        return -1;
+    return locale_maximize_parts(&name, name.lang, name.script, name.region,
+                                 out, out_size);
 }
 
 static char *locale_maximize_base(JSContext *ctx, const char *base)
 {
-    char buf[256];
-    char *subtags[16];
-    int n = 0;
-    const char *likely;
-    int idx;
-    DynBuf db;
-    pstrcpy(buf, sizeof(buf), base);
-    n = locale_split_subtags(buf, subtags, 16);
-    if (n == 0) return NULL;
-    {
-        const char *lang = subtags[0];
-        const char *script = NULL;
-        const char *region = NULL;
-        idx = 1;
-        if (idx < n && strlen(subtags[idx]) == 4 &&
-            isalpha((unsigned char)subtags[idx][0])) {
-            script = subtags[idx++];
-        }
-        if (idx < n && (strlen(subtags[idx]) == 2 || strlen(subtags[idx]) == 3)) {
-            int is_region = 1;
-            int j;
-            for (j = 0; j < (int)strlen(subtags[idx]); j++) {
-                if (strlen(subtags[idx]) == 2 && !isalpha((unsigned char)subtags[idx][j])) is_region = 0;
-                if (strlen(subtags[idx]) == 3 && !isdigit((unsigned char)subtags[idx][j])) is_region = 0;
-            }
-            if (is_region) region = subtags[idx++];
-        }
-        likely = locale_get_likely_subtags(lang, script, region);
-        if (likely) {
-            js_intl_dbuf_init(ctx, &db);
-            dbuf_putstr(&db, likely);
-            /* append remaining variants */
-            for (; idx < n; idx++) {
-                dbuf_putc(&db, (uint8_t)'-');
-                dbuf_putstr(&db, subtags[idx]);
-            }
-            dbuf_putc(&db, '\0');
-            if (dbuf_error(&db)) {
-                dbuf_free(&db);
-                return NULL;
-            }
-            return (char *)db.buf;
-        }
-    }
+    char res[256];
+    if (locale_maximize_to(base, res, sizeof(res)) == 0)
+        return js_strdup(ctx, res);
     return js_strdup(ctx, base);
 }
 
@@ -1761,104 +1660,42 @@ static JSValue js_locale_maximize(JSContext *ctx, JSValueConst this_val,
 
 static char *locale_minimize_base(JSContext *ctx, const char *base)
 {
-    char *max_full = locale_maximize_base(ctx, base);
-    char current[256];
-    int changed;
-    const char *max_lang;
-    if (!max_full) return js_strdup(ctx, base);
-    pstrcpy(current, sizeof(current), base);
-    /* Hard-coded special cases for minimize */
-    if (!strcmp(current, "zh-Hant")) {
-        js_free(ctx, max_full);
-        return js_strdup(ctx, "zh-TW");
-    }
-    /* First, replace und with likely language */
-    max_lang = max_full;
-    {
-        char *dash = strchr(max_full, '-');
-        if (dash) {
-            static char mb[256];
-            pstrcpy(mb, sizeof(mb), max_full);
-            mb[dash - max_full] = '\0';
-            max_lang = mb;
-        }
-    }
-    if (!strncmp(current, "und", 3) && (current[3] == '\0' || current[3] == '-') &&
-        strcmp(max_lang, "und")) {
-        char replaced[256];
-        replaced[0] = '\0';
-        pstrcpy(replaced, sizeof(replaced), max_lang);
-        if (current[3] == '-') {
-            pstrcat(replaced, sizeof(replaced), current + 3);
-        }
-        pstrcpy(current, sizeof(current), replaced);
-    }
-    /* Try removing region, then script, restarting from region after each success */
-    do {
-        char tb[256];
-        char *ts[16];
-        int tn;
-        char without[256];
-        char *max_without;
-        changed = 0;
-        pstrcpy(tb, sizeof(tb), current);
-        tn = locale_split_subtags(tb, ts, 16);
-        /* Try removing region */
-        if (tn >= 2) {
-            int has_script = (strlen(ts[1]) == 4 && isalpha((unsigned char)ts[1][0]));
-            int is_region = 1;
-            int j;
-            int ridx = has_script ? 2 : 1;
-            if (ridx < tn) {
-                for (j = 0; j < (int)strlen(ts[ridx]); j++) {
-                    if (strlen(ts[ridx]) == 2 && !isalpha((unsigned char)ts[ridx][j])) is_region = 0;
-                    if (strlen(ts[ridx]) == 3 && !isdigit((unsigned char)ts[ridx][j])) is_region = 0;
-                }
-                if (is_region) {
-                    without[0] = '\0';
-                    pstrcpy(without, sizeof(without), ts[0]);
-                    if (has_script) {
-                        pstrcat(without, sizeof(without), "-");
-                        pstrcat(without, sizeof(without), ts[1]);
-                    }
-                    {
-                        int k = ridx + 1;
-                        for (; k < tn; k++) {
-                            pstrcat(without, sizeof(without), "-");
-                            pstrcat(without, sizeof(without), ts[k]);
-                        }
-                    }
-                    max_without = locale_maximize_base(ctx, without);
-                    if (max_without && !strcmp(max_without, max_full)) {
-                        pstrcpy(current, sizeof(current), without);
-                        changed = 1;
-                    }
-                    js_free(ctx, max_without);
-                }
-            }
-        }
-        if (changed) continue;
-        /* Try removing script */
-        if (tn >= 2 && strlen(ts[1]) == 4 && isalpha((unsigned char)ts[1][0])) {
-            without[0] = '\0';
-            pstrcpy(without, sizeof(without), ts[0]);
-            {
-                int k = 2;
-                for (; k < tn; k++) {
-                    pstrcat(without, sizeof(without), "-");
-                    pstrcat(without, sizeof(without), ts[k]);
-                }
-            }
-            max_without = locale_maximize_base(ctx, without);
-            if (max_without && !strcmp(max_without, max_full)) {
-                pstrcpy(current, sizeof(current), without);
-                changed = 1;
-            }
-            js_free(ctx, max_without);
-        }
-    } while (changed);
-    js_free(ctx, max_full);
-    return js_strdup(ctx, current);
+    LocaleNameParts name, maximal;
+    char max[256], test[256], res[256];
+
+    if (locale_parse_name(base, &name) < 0)
+        return js_strdup(ctx, base);
+    if (locale_maximize_parts(&name, name.lang, name.script, name.region,
+                              max, sizeof(max)) < 0)
+        return js_strdup(ctx, base);
+    if (locale_parse_name(max, &maximal) < 0)
+        return js_strdup(ctx, max);
+    /* Remove Likely Subtags: try to remove the script and the region first,
+       then the script only, then the region only. A subtag is removed only
+       if the result still maximizes back to the maximal form. */
+    if (locale_maximize_parts(&maximal, maximal.lang, NULL, NULL,
+                              test, sizeof(test)) == 0 &&
+        !strcmp(test, max)) {
+        locale_join_parts(&maximal, maximal.lang, NULL, NULL, res, sizeof(res));
+        return js_strdup(ctx, res);
+    }
+    if (maximal.region &&
+        locale_maximize_parts(&maximal, maximal.lang, NULL, maximal.region,
+                              test, sizeof(test)) == 0 &&
+        !strcmp(test, max)) {
+        locale_join_parts(&maximal, maximal.lang, NULL, maximal.region,
+                          res, sizeof(res));
+        return js_strdup(ctx, res);
+    }
+    if (maximal.script &&
+        locale_maximize_parts(&maximal, maximal.lang, maximal.script, NULL,
+                              test, sizeof(test)) == 0 &&
+        !strcmp(test, max)) {
+        locale_join_parts(&maximal, maximal.lang, maximal.script, NULL,
+                          res, sizeof(res));
+        return js_strdup(ctx, res);
+    }
+    return js_strdup(ctx, max);
 }
 
 static JSValue js_locale_minimize(JSContext *ctx, JSValueConst this_val,
@@ -1897,6 +1734,503 @@ static JSValue js_locale_minimize(JSContext *ctx, JSValueConst this_val,
     return JS_DupValue(ctx, this_val);
 }
 
+/* --------------------------------------------------------------------- */
+/* Intl.Locale info methods (ECMA-402)                                    */
+/* --------------------------------------------------------------------- */
+
+/* Create an Array holding the n first strings of items. */
+static JSValue locale_new_string_array(JSContext *ctx, const char *const *items, int n)
+{
+    JSValue arr = JS_NewArray(ctx);
+    int i;
+    if (JS_IsException(arr))
+        return arr;
+    for (i = 0; i < n; i++) {
+        if (JS_DefinePropertyValueUint32(ctx, arr, (uint32_t)i,
+                                          JS_NewString(ctx, items[i]),
+                                          JS_PROP_C_W_E) < 0) {
+            JS_FreeValue(ctx, arr);
+            return JS_EXCEPTION;
+        }
+    }
+    return arr;
+}
+
+/* Split a space separated list, modifying buf. */
+static int locale_split_list(char *buf, char **items, int max_items)
+{
+    int n = 0;
+    char *p = buf;
+    while (*p && n < max_items) {
+        char *start = p;
+        while (*p && *p != ' ')
+            p++;
+        items[n++] = start;
+        if (*p == ' ') {
+            *p = '\0';
+            p++;
+        }
+    }
+    return n;
+}
+
+static int cmp_string(const void *a, const void *b)
+{
+    return strcmp(*(const char *const *)a, *(const char *const *)b);
+}
+
+/* Find the entry matching key in a table sorted by key. */
+static const IntlPrefData *locale_find_pref(const IntlPrefData *tab, int count,
+                                            const char *key)
+{
+    int lo = 0, hi = count - 1;
+    while (lo <= hi) {
+        int mid = lo + (hi - lo) / 2;
+        int c = strcmp(tab[mid].key, key);
+        if (c == 0)
+            return &tab[mid];
+        if (c < 0)
+            lo = mid + 1;
+        else
+            hi = mid - 1;
+    }
+    return NULL;
+}
+
+static const IntlWeekData *locale_find_week(const char *region)
+{
+    int lo = 0, hi = week_data_count - 1;
+    while (lo <= hi) {
+        int mid = lo + (hi - lo) / 2;
+        int c = strcmp(week_data_tab[mid].region, region);
+        if (c == 0)
+            return &week_data_tab[mid];
+        if (c < 0)
+            lo = mid + 1;
+        else
+            hi = mid - 1;
+    }
+    return NULL;
+}
+
+/* LookupMatchingLocaleByPrefix: return the locale data matching the
+   unicode_language_id of locale, or NULL if there is no match. */
+static const LocaleData *locale_match_data(const char *locale)
+{
+    char base[256], suffix[256];
+    int i;
+    locale_split_base_suffix(locale, base, sizeof(base), suffix, sizeof(suffix));
+    for (i = 0; i < locale_data_count; i++) {
+        if (!strcmp(locale_data_table[i].locale, base))
+            return &locale_data_table[i];
+    }
+    for (i = 0; i < locale_data_count; i++) {
+        const char *p = locale_data_table[i].locale;
+        int len = (int)strlen(p);
+        if (!strncmp(base, p, (size_t)len) && (base[len] == '\0' || base[len] == '-'))
+            return &locale_data_table[i];
+    }
+    return NULL;
+}
+
+/* CanonicalUnicodeSubdivision (ECMA-402): return the region carried by the
+   "sd" or "rg" keyword of the locale, or NULL. */
+static char *locale_canonical_subdivision(JSContext *ctx, const char *locale,
+                                          const char *key)
+{
+    char *value = js_intl_locale_get_unicode_key(ctx, locale, key);
+    char buf[64], *parts[3], rbuf[8];
+    int n, i, len;
+
+    if (!value)
+        return NULL;
+    pstrcpy(buf, sizeof(buf), value);
+    js_free(ctx, value);
+    /* unicode_subdivision_id = [unicode_region_subtag "-"] unicode_subdivision_subtag */
+    n = locale_split_subtags(buf, parts, 3);
+    rbuf[0] = '\0';
+    if (n == 2) {
+        if (is_region_subtag(parts[0]) && is_alphanum_len(parts[1], 4, 8))
+            pstrcpy(rbuf, sizeof(rbuf), parts[0]);
+    } else if (n == 1 && is_alphanum_len(parts[0], 4, 8)) {
+        /* the region is the longest prefix matching unicode_region_subtag */
+        len = (int)strlen(parts[0]);
+        for (i = 3; i >= 2; i--) {
+            if (len < i)
+                continue;
+            pstrcpy(rbuf, sizeof(rbuf), parts[0]);
+            rbuf[i] = '\0';
+            if (is_region_subtag(rbuf))
+                break;
+            rbuf[0] = '\0';
+        }
+    }
+    if (!rbuf[0])
+        return NULL;
+    for (i = 0; rbuf[i]; i++)
+        rbuf[i] = toupper((unsigned char)rbuf[i]);
+    return js_strdup(ctx, rbuf);
+}
+
+/* RegionPreference (ECMA-402): compute the region used to look up the
+   calendar, time and week preference data, and the "rg" region override.
+   The override must be freed by the caller. */
+static void locale_region_preference(JSContext *ctx, JSLocaleData *s,
+                                     char *region, int region_size, char **override)
+{
+    char base[256], suffix[256], max[256];
+    char *sd;
+    LocaleNameParts name;
+
+    region[0] = '\0';
+    *override = locale_canonical_subdivision(ctx, s->locale, "rg");
+    if (s->region)
+        pstrcpy(region, region_size, s->region);
+    if (!region[0]) {
+        sd = locale_canonical_subdivision(ctx, s->locale, "sd");
+        if (sd) {
+            pstrcpy(region, region_size, sd);
+            js_free(ctx, sd);
+        }
+    }
+    if (!region[0]) {
+        locale_split_base_suffix(s->locale, base, sizeof(base), suffix, sizeof(suffix));
+        if (locale_maximize_to(base, max, sizeof(max)) == 0 &&
+            locale_parse_name(max, &name) == 0 && name.region)
+            pstrcpy(region, region_size, name.region);
+    }
+    if (!region[0])
+        pstrcpy(region, region_size, "001");
+}
+
+static BOOL calendar_is_available(const char *name)
+{
+    int i;
+    for (i = 0; i < CAL_COUNT; i++) {
+        const char *c = ti_calendar_enum_to_string(i);
+        if (c && !strcmp(c, name))
+            return TRUE;
+    }
+    return FALSE;
+}
+
+/* WeekdayUValueToNumber (ECMA-402): convert a Unicode First Day Identifier
+   to an ISO 8601 day of week, or -1. */
+static int weekday_u_value_to_number(const char *s)
+{
+    static const char *const names[7] = {
+        "mon", "tue", "wed", "thu", "fri", "sat", "sun"
+    };
+    int i;
+    for (i = 0; i < 7; i++) {
+        if (!strcmp(s, names[i]))
+            return i + 1;
+    }
+    return -1;
+}
+
+static JSValue js_locale_getCalendars(JSContext *ctx, JSValueConst this_val,
+                                      int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const char *language, *items[16];
+    const IntlPrefData *entry = NULL;
+    const char *regions[2];
+    char region[16], *override, key[64], list[128], id[32];
+    char *parts[16], ids[16][32];
+    int i, j, n = 0, nregions, nparts;
+
+    if (!s)
+        return JS_EXCEPTION;
+    if (s->calendar) {
+        items[0] = s->calendar;
+        return locale_new_string_array(ctx, items, 1);
+    }
+    locale_region_preference(ctx, s, region, sizeof(region), &override);
+    language = s->language ? s->language : "und";
+    nregions = 0;
+    if (override && locale_find_pref(cal_pref_tab, cal_pref_count, override))
+        regions[nregions++] = override;
+    regions[nregions++] = region;
+    for (i = 0; i < nregions && !entry; i++) {
+        snprintf(key, sizeof(key), "%s-%s", language, regions[i]);
+        entry = locale_find_pref(cal_pref_tab, cal_pref_count, key);
+        if (!entry)
+            entry = locale_find_pref(cal_pref_tab, cal_pref_count, regions[i]);
+    }
+    js_free(ctx, override);
+    if (entry) {
+        pstrcpy(list, sizeof(list), entry->value);
+        nparts = locale_split_list(list, parts, 16);
+        for (i = 0; i < nparts; i++) {
+            const char *canon;
+            pstrcpy(id, sizeof(id), parts[i]);
+            to_lower_case(id);
+            canon = canonicalize_keyword_value("ca", id);
+            if (!calendar_is_available(canon))
+                continue;
+            for (j = 0; j < n; j++) {
+                if (!strcmp(items[j], canon))
+                    break;
+            }
+            if (j == n && n < 16) {
+                pstrcpy(ids[n], sizeof(ids[0]), canon);
+                items[n] = ids[n];
+                n++;
+            }
+        }
+    }
+    if (n == 0)
+        items[n++] = "gregory";
+    return locale_new_string_array(ctx, items, n);
+}
+
+/* The canonical zone identifiers commonly used in region, sorted. */
+static JSValue locale_region_time_zones(JSContext *ctx, const char *region)
+{
+    JSValue arr;
+    const char *p;
+    int lo = 0, hi = ti_tz_region_count - 1, idx = -1, n = 0;
+
+    while (lo <= hi) {
+        int mid = lo + (hi - lo) / 2;
+        int c = strcmp(ti_tz_region_tab[mid].region, region);
+        if (c == 0) {
+            idx = mid;
+            break;
+        }
+        if (c < 0)
+            lo = mid + 1;
+        else
+            hi = mid - 1;
+    }
+    arr = JS_NewArray(ctx);
+    if (JS_IsException(arr))
+        return arr;
+    if (idx >= 0) {
+        for (p = ti_tz_region_tab[idx].zones; *p; ) {
+            const char *end = p + strlen(p);
+            if (JS_DefinePropertyValueUint32(ctx, arr, (uint32_t)n,
+                                             JS_NewStringLen(ctx, p, end - p),
+                                             JS_PROP_C_W_E) < 0) {
+                JS_FreeValue(ctx, arr);
+                return JS_EXCEPTION;
+            }
+            n++;
+            if (!*end)
+                break;
+            p = end + 1;
+        }
+    }
+    return arr;
+}
+
+static JSValue js_locale_getTimeZones(JSContext *ctx, JSValueConst this_val,
+                                      int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    if (!s)
+        return JS_EXCEPTION;
+    /* TimeZonesOfLocale returns undefined if the locale has no region subtag */
+    if (!s->region)
+        return JS_UNDEFINED;
+    return locale_region_time_zones(ctx, s->region);
+}
+
+static JSValue js_locale_getTextInfo(JSContext *ctx, JSValueConst this_val,
+                                     int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const char *script;
+    char base[256], suffix[256], max[256];
+    LocaleNameParts name;
+    JSValue obj;
+    int i;
+
+    if (!s)
+        return JS_EXCEPTION;
+    script = s->script;
+    obj = JS_NewObject(ctx);
+    if (JS_IsException(obj))
+        return JS_EXCEPTION;
+    if (!script) {
+        /* the script comes from the Add Likely Subtags algorithm */
+        locale_split_base_suffix(s->locale, base, sizeof(base), suffix, sizeof(suffix));
+        if (locale_maximize_to(base, max, sizeof(max)) == 0 &&
+            locale_parse_name(max, &name) == 0)
+            script = name.script;
+    }
+    for (i = 0; script && i < script_dir_count; i++) {
+        if (!strcmp(script_dir_tab[i].script, script)) {
+            JS_DefinePropertyValueStr(ctx, obj, "direction",
+                                      JS_NewString(ctx, script_dir_tab[i].dir ? "rtl" : "ltr"),
+                                      JS_PROP_C_W_E);
+            return obj;
+        }
+    }
+    /* the direction of an unknown script cannot be determined */
+    JS_DefinePropertyValueStr(ctx, obj, "direction", JS_UNDEFINED, JS_PROP_C_W_E);
+    return obj;
+}
+
+static JSValue js_locale_getCollations(JSContext *ctx, JSValueConst this_val,
+                                       int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const LocaleData *ld;
+    const char *items[8];
+    int i, n = 0;
+
+    if (!s)
+        return JS_EXCEPTION;
+    if (s->collation) {
+        items[0] = s->collation;
+        return locale_new_string_array(ctx, items, 1);
+    }
+    /* [[SortLocaleData]].[[co]] starts with the default collation, which is
+       null and not part of the returned list, followed by the collations
+       available for the locale. The root collations are inherited by every
+       locale; if the locale does not match any locale data, only the root
+       collations are returned. */
+    ld = locale_match_data(s->locale);
+    items[n++] = "emoji";
+    items[n++] = "eor";
+    for (i = 0; ld && i < intl_supported_collations_count; i++) {
+        const char *c = intl_supported_collations[i];
+        int j;
+        if (!js_intl_collation_is_supported(c, ld->locale))
+            continue;
+        for (j = 0; j < n; j++) {
+            if (!strcmp(items[j], c))
+                break;
+        }
+        if (j == n && n < 8)
+            items[n++] = c;
+    }
+    qsort(items, n, sizeof(items[0]), cmp_string);
+    return locale_new_string_array(ctx, items, n);
+}
+
+static JSValue js_locale_getHourCycles(JSContext *ctx, JSValueConst this_val,
+                                       int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const IntlPrefData *entry = NULL;
+    const char *language, *regions[2], *items[8];
+    char region[16], *override, key[64], list[64];
+    char *parts[8];
+    int i, n = 0, nregions, nparts;
+
+    if (!s)
+        return JS_EXCEPTION;
+    if (s->hourCycle) {
+        items[0] = s->hourCycle;
+        return locale_new_string_array(ctx, items, 1);
+    }
+    locale_region_preference(ctx, s, region, sizeof(region), &override);
+    language = s->language ? s->language : "und";
+    nregions = 0;
+    if (override && locale_find_pref(time_data_tab, time_data_count, override))
+        regions[nregions++] = override;
+    regions[nregions++] = region;
+    for (i = 0; i < nregions && !entry; i++) {
+        snprintf(key, sizeof(key), "%s-%s", language, regions[i]);
+        entry = locale_find_pref(time_data_tab, time_data_count, key);
+        if (!entry)
+            entry = locale_find_pref(time_data_tab, time_data_count, regions[i]);
+    }
+    js_free(ctx, override);
+    if (!entry) {
+        items[n++] = "h23";
+    } else {
+        pstrcpy(list, sizeof(list), entry->value);
+        nparts = locale_split_list(list, parts, 8);
+        for (i = 0; i < nparts && n < 8; i++)
+            items[n++] = parts[i];
+    }
+    return locale_new_string_array(ctx, items, n);
+}
+
+static JSValue js_locale_getNumberingSystems(JSContext *ctx, JSValueConst this_val,
+                                             int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const char *items[1];
+
+    if (!s)
+        return JS_EXCEPTION;
+    if (s->numberingSystem) {
+        items[0] = s->numberingSystem;
+        return locale_new_string_array(ctx, items, 1);
+    }
+    /* The first numbering system ([[nu]][0]) of the matched NumberFormat
+       locale data, or "latn" if there is no match. Our number formatter uses
+       "latn" as the default numbering system of every locale. */
+    items[0] = "latn";
+    return locale_new_string_array(ctx, items, 1);
+}
+
+static JSValue js_locale_getWeekInfo(JSContext *ctx, JSValueConst this_val,
+                                     int argc, JSValueConst *argv)
+{
+    JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id);
+    const IntlWeekData *wd = NULL;
+    char region[16], *override;
+    int firstDay, weekendStart, weekendEnd, days[7], ndays;
+    int i;
+    JSValue obj, weekend;
+
+    if (!s)
+        return JS_EXCEPTION;
+    locale_region_preference(ctx, s, region, sizeof(region), &override);
+    if (override)
+        wd = locale_find_week(override);
+    if (!wd)
+        wd = locale_find_week(region);
+    if (!wd)
+        wd = locale_find_week("001");
+    js_free(ctx, override);
+    firstDay = wd ? wd->firstDay : 1;
+    weekendStart = wd ? wd->weekendStart : 6;
+    weekendEnd = wd ? wd->weekendEnd : 7;
+    if (s->firstDayOfWeek) {
+        int d = weekday_u_value_to_number(s->firstDayOfWeek);
+        if (d > 0)
+            firstDay = d;
+    }
+    obj = JS_NewObject(ctx);
+    if (JS_IsException(obj))
+        return JS_EXCEPTION;
+    JS_DefinePropertyValueStr(ctx, obj, "firstDay", JS_NewInt32(ctx, firstDay),
+                              JS_PROP_C_W_E);
+    /* the weekend runs from weekendStart to weekendEnd, wrapping around */
+    ndays = 0;
+    for (;;) {
+        days[ndays++] = weekendStart;
+        if (weekendStart == weekendEnd)
+            break;
+        weekendStart = weekendStart % 7 + 1;
+    }
+    /* sorted in ascending numeric order */
+    for (i = 0; i < ndays; i++) {
+        int j, v = days[i];
+        for (j = i; j > 0 && days[j - 1] > v; j--)
+            days[j] = days[j - 1];
+        days[j] = v;
+    }
+    weekend = JS_NewArray(ctx);
+    if (JS_IsException(weekend)) {
+        JS_FreeValue(ctx, obj);
+        return JS_EXCEPTION;
+    }
+    for (i = 0; i < ndays; i++) {
+        JS_DefinePropertyValueUint32(ctx, weekend, (uint32_t)i,
+                                     JS_NewInt32(ctx, days[i]), JS_PROP_C_W_E);
+    }
+    JS_DefinePropertyValueStr(ctx, obj, "weekend", weekend, JS_PROP_C_W_E);
+    return obj;
+}
+
 static JSValue js_locale_toString(JSContext *ctx, JSValueConst this_val,
                                    int argc, JSValueConst *argv)
 {
index 633e72cf8a2a31df6e9b22bfa928de8c77735889..ccdcff2f1b4b222d3e19938d46a6f34387c70c57 100644 (file)
@@ -28,6 +28,13 @@ extern const int ti_tz_alias_count;
 extern const char * const ti_tz_names[];
 extern const int ti_tz_name_count;
 
+typedef struct {
+    const char *region;
+    const char *zones; /* zone names, zero separated, sorted */
+} TiTzRegion;
+extern const TiTzRegion ti_tz_region_tab[];
+extern const int ti_tz_region_count;
+
 /* Lookup functions */
 int ti_tz_find_id(const char *name);
 int ti_tz_offset_at_sec(int tz_id, int64_t epoch_sec);
index b87079a1024d70a1809929d941971a5efd5a0803..7941dbfdfce68aad6a400cba7dffbd6a2f9f5664 100644 (file)
@@ -3837,3 +3837,255 @@ const char * const ti_tz_names[] = {
     "Zulu",
 };
 const int ti_tz_name_count = countof(ti_tz_names);
+
+/* Zone identifiers commonly used in each region, sorted and zero separated */
+const TiTzRegion ti_tz_region_tab[] = {
+    { "AD", "Europe/Andorra" },
+    { "AE", "Asia/Dubai" },
+    { "AF", "Asia/Kabul" },
+    { "AG", "America/Antigua" },
+    { "AI", "America/Anguilla" },
+    { "AL", "Europe/Tirane" },
+    { "AM", "Asia/Yerevan" },
+    { "AO", "Africa/Luanda" },
+    { "AQ", "Antarctica/Casey\000Antarctica/Davis\000Antarctica/DumontDUrville\000Antarctica/Mawson\000Antarctica/McMurdo\000Antarctica/Palmer\000Antarctica/Rothera\000Antarctica/Syowa\000Antarctica/Troll\000Antarctica/Vostok" },
+    { "AR", "America/Argentina/Buenos_Aires\000America/Argentina/Catamarca\000America/Argentina/Cordoba\000America/Argentina/Jujuy\000America/Argentina/La_Rioja\000America/Argentina/Mendoza\000America/Argentina/Rio_Gallegos\000America/Argentina/Salta\000America/Argentina/San_Juan\000America/Argentina/San_Luis\000America/Argentina/Tucuman\000America/Argentina/Ushuaia" },
+    { "AS", "Pacific/Pago_Pago" },
+    { "AT", "Europe/Vienna" },
+    { "AU", "Antarctica/Macquarie\000Australia/Adelaide\000Australia/Brisbane\000Australia/Broken_Hill\000Australia/Darwin\000Australia/Eucla\000Australia/Hobart\000Australia/Lindeman\000Australia/Lord_Howe\000Australia/Melbourne\000Australia/Perth\000Australia/Sydney" },
+    { "AW", "America/Aruba" },
+    { "AX", "Europe/Mariehamn" },
+    { "AZ", "Asia/Baku" },
+    { "BA", "Europe/Sarajevo" },
+    { "BB", "America/Barbados" },
+    { "BD", "Asia/Dhaka" },
+    { "BE", "Europe/Brussels" },
+    { "BF", "Africa/Ouagadougou" },
+    { "BG", "Europe/Sofia" },
+    { "BH", "Asia/Bahrain" },
+    { "BI", "Africa/Bujumbura" },
+    { "BJ", "Africa/Porto-Novo" },
+    { "BL", "America/St_Barthelemy" },
+    { "BM", "Atlantic/Bermuda" },
+    { "BN", "Asia/Brunei" },
+    { "BO", "America/La_Paz" },
+    { "BQ", "America/Kralendijk" },
+    { "BR", "America/Araguaina\000America/Bahia\000America/Belem\000America/Boa_Vista\000America/Campo_Grande\000America/Cuiaba\000America/Eirunepe\000America/Fortaleza\000America/Maceio\000America/Manaus\000America/Noronha\000America/Porto_Velho\000America/Recife\000America/Rio_Branco\000America/Santarem\000America/Sao_Paulo" },
+    { "BS", "America/Nassau" },
+    { "BT", "Asia/Thimphu" },
+    { "BW", "Africa/Gaborone" },
+    { "BY", "Europe/Minsk" },
+    { "BZ", "America/Belize" },
+    { "CA", "America/Atikokan\000America/Blanc-Sablon\000America/Cambridge_Bay\000America/Creston\000America/Dawson\000America/Dawson_Creek\000America/Edmonton\000America/Fort_Nelson\000America/Glace_Bay\000America/Goose_Bay\000America/Halifax\000America/Inuvik\000America/Iqaluit\000America/Moncton\000America/Rankin_Inlet\000America/Regina\000America/Resolute\000America/St_Johns\000America/Swift_Current\000America/Toronto\000America/Vancouver\000America/Whitehorse\000America/Winnipeg" },
+    { "CC", "Indian/Cocos" },
+    { "CD", "Africa/Kinshasa\000Africa/Lubumbashi" },
+    { "CF", "Africa/Bangui" },
+    { "CG", "Africa/Brazzaville" },
+    { "CH", "Europe/Zurich" },
+    { "CI", "Africa/Abidjan" },
+    { "CK", "Pacific/Rarotonga" },
+    { "CL", "America/Coyhaique\000America/Punta_Arenas\000America/Santiago\000Pacific/Easter" },
+    { "CM", "Africa/Douala" },
+    { "CN", "Asia/Shanghai\000Asia/Urumqi" },
+    { "CO", "America/Bogota" },
+    { "CR", "America/Costa_Rica" },
+    { "CU", "America/Havana" },
+    { "CV", "Atlantic/Cape_Verde" },
+    { "CW", "America/Curacao" },
+    { "CX", "Indian/Christmas" },
+    { "CY", "Asia/Famagusta\000Asia/Nicosia" },
+    { "CZ", "Europe/Prague" },
+    { "DE", "Europe/Berlin\000Europe/Busingen" },
+    { "DJ", "Africa/Djibouti" },
+    { "DK", "Europe/Copenhagen" },
+    { "DM", "America/Dominica" },
+    { "DO", "America/Santo_Domingo" },
+    { "DZ", "Africa/Algiers" },
+    { "EC", "America/Guayaquil\000Pacific/Galapagos" },
+    { "EE", "Europe/Tallinn" },
+    { "EG", "Africa/Cairo" },
+    { "EH", "Africa/El_Aaiun" },
+    { "ER", "Africa/Asmara" },
+    { "ES", "Africa/Ceuta\000Atlantic/Canary\000Europe/Madrid" },
+    { "ET", "Africa/Addis_Ababa" },
+    { "FI", "Europe/Helsinki" },
+    { "FJ", "Pacific/Fiji" },
+    { "FK", "Atlantic/Stanley" },
+    { "FM", "Pacific/Chuuk\000Pacific/Kosrae\000Pacific/Pohnpei" },
+    { "FO", "Atlantic/Faroe" },
+    { "FR", "Europe/Paris" },
+    { "GA", "Africa/Libreville" },
+    { "GB", "Europe/London" },
+    { "GD", "America/Grenada" },
+    { "GE", "Asia/Tbilisi" },
+    { "GF", "America/Cayenne" },
+    { "GG", "Europe/Guernsey" },
+    { "GH", "Africa/Accra" },
+    { "GI", "Europe/Gibraltar" },
+    { "GL", "America/Danmarkshavn\000America/Nuuk\000America/Scoresbysund\000America/Thule" },
+    { "GM", "Africa/Banjul" },
+    { "GN", "Africa/Conakry" },
+    { "GP", "America/Guadeloupe" },
+    { "GQ", "Africa/Malabo" },
+    { "GR", "Europe/Athens" },
+    { "GS", "Atlantic/South_Georgia" },
+    { "GT", "America/Guatemala" },
+    { "GU", "Pacific/Guam" },
+    { "GW", "Africa/Bissau" },
+    { "GY", "America/Guyana" },
+    { "HK", "Asia/Hong_Kong" },
+    { "HN", "America/Tegucigalpa" },
+    { "HR", "Europe/Zagreb" },
+    { "HT", "America/Port-au-Prince" },
+    { "HU", "Europe/Budapest" },
+    { "ID", "Asia/Jakarta\000Asia/Jayapura\000Asia/Makassar\000Asia/Pontianak" },
+    { "IE", "Europe/Dublin" },
+    { "IL", "Asia/Jerusalem" },
+    { "IM", "Europe/Isle_of_Man" },
+    { "IN", "Asia/Kolkata" },
+    { "IO", "Indian/Chagos" },
+    { "IQ", "Asia/Baghdad" },
+    { "IR", "Asia/Tehran" },
+    { "IS", "Atlantic/Reykjavik" },
+    { "IT", "Europe/Rome" },
+    { "JE", "Europe/Jersey" },
+    { "JM", "America/Jamaica" },
+    { "JO", "Asia/Amman" },
+    { "JP", "Asia/Tokyo" },
+    { "KE", "Africa/Nairobi" },
+    { "KG", "Asia/Bishkek" },
+    { "KH", "Asia/Phnom_Penh" },
+    { "KI", "Pacific/Kanton\000Pacific/Kiritimati\000Pacific/Tarawa" },
+    { "KM", "Indian/Comoro" },
+    { "KN", "America/St_Kitts" },
+    { "KP", "Asia/Pyongyang" },
+    { "KR", "Asia/Seoul" },
+    { "KW", "Asia/Kuwait" },
+    { "KY", "America/Cayman" },
+    { "KZ", "Asia/Almaty\000Asia/Aqtau\000Asia/Aqtobe\000Asia/Atyrau\000Asia/Oral\000Asia/Qostanay\000Asia/Qyzylorda" },
+    { "LA", "Asia/Vientiane" },
+    { "LB", "Asia/Beirut" },
+    { "LC", "America/St_Lucia" },
+    { "LI", "Europe/Vaduz" },
+    { "LK", "Asia/Colombo" },
+    { "LR", "Africa/Monrovia" },
+    { "LS", "Africa/Maseru" },
+    { "LT", "Europe/Vilnius" },
+    { "LU", "Europe/Luxembourg" },
+    { "LV", "Europe/Riga" },
+    { "LY", "Africa/Tripoli" },
+    { "MA", "Africa/Casablanca" },
+    { "MC", "Europe/Monaco" },
+    { "MD", "Europe/Chisinau" },
+    { "ME", "Europe/Podgorica" },
+    { "MF", "America/Marigot" },
+    { "MG", "Indian/Antananarivo" },
+    { "MH", "Pacific/Kwajalein\000Pacific/Majuro" },
+    { "MK", "Europe/Skopje" },
+    { "ML", "Africa/Bamako" },
+    { "MM", "Asia/Yangon" },
+    { "MN", "Asia/Hovd\000Asia/Ulaanbaatar" },
+    { "MO", "Asia/Macau" },
+    { "MP", "Pacific/Saipan" },
+    { "MQ", "America/Martinique" },
+    { "MR", "Africa/Nouakchott" },
+    { "MS", "America/Montserrat" },
+    { "MT", "Europe/Malta" },
+    { "MU", "Indian/Mauritius" },
+    { "MV", "Indian/Maldives" },
+    { "MW", "Africa/Blantyre" },
+    { "MX", "America/Bahia_Banderas\000America/Cancun\000America/Chihuahua\000America/Ciudad_Juarez\000America/Hermosillo\000America/Matamoros\000America/Mazatlan\000America/Merida\000America/Mexico_City\000America/Monterrey\000America/Ojinaga\000America/Tijuana" },
+    { "MY", "Asia/Kuala_Lumpur\000Asia/Kuching" },
+    { "MZ", "Africa/Maputo" },
+    { "NA", "Africa/Windhoek" },
+    { "NC", "Pacific/Noumea" },
+    { "NE", "Africa/Niamey" },
+    { "NF", "Pacific/Norfolk" },
+    { "NG", "Africa/Lagos" },
+    { "NI", "America/Managua" },
+    { "NL", "Europe/Amsterdam" },
+    { "NO", "Europe/Oslo" },
+    { "NP", "Asia/Kathmandu" },
+    { "NR", "Pacific/Nauru" },
+    { "NU", "Pacific/Niue" },
+    { "NZ", "Pacific/Auckland\000Pacific/Chatham" },
+    { "OM", "Asia/Muscat" },
+    { "PA", "America/Panama" },
+    { "PE", "America/Lima" },
+    { "PF", "Pacific/Gambier\000Pacific/Marquesas\000Pacific/Tahiti" },
+    { "PG", "Pacific/Bougainville\000Pacific/Port_Moresby" },
+    { "PH", "Asia/Manila" },
+    { "PK", "Asia/Karachi" },
+    { "PL", "Europe/Warsaw" },
+    { "PM", "America/Miquelon" },
+    { "PN", "Pacific/Pitcairn" },
+    { "PR", "America/Puerto_Rico" },
+    { "PS", "Asia/Gaza\000Asia/Hebron" },
+    { "PT", "Atlantic/Azores\000Atlantic/Madeira\000Europe/Lisbon" },
+    { "PW", "Pacific/Palau" },
+    { "PY", "America/Asuncion" },
+    { "QA", "Asia/Qatar" },
+    { "RE", "Indian/Reunion" },
+    { "RO", "Europe/Bucharest" },
+    { "RS", "Europe/Belgrade" },
+    { "RU", "Asia/Anadyr\000Asia/Barnaul\000Asia/Chita\000Asia/Irkutsk\000Asia/Kamchatka\000Asia/Khandyga\000Asia/Krasnoyarsk\000Asia/Magadan\000Asia/Novokuznetsk\000Asia/Novosibirsk\000Asia/Omsk\000Asia/Sakhalin\000Asia/Srednekolymsk\000Asia/Tomsk\000Asia/Ust-Nera\000Asia/Vladivostok\000Asia/Yakutsk\000Asia/Yekaterinburg\000Europe/Astrakhan\000Europe/Kaliningrad\000Europe/Kirov\000Europe/Moscow\000Europe/Samara\000Europe/Saratov\000Europe/Ulyanovsk\000Europe/Volgograd" },
+    { "RW", "Africa/Kigali" },
+    { "SA", "Asia/Riyadh" },
+    { "SB", "Pacific/Guadalcanal" },
+    { "SC", "Indian/Mahe" },
+    { "SD", "Africa/Khartoum" },
+    { "SE", "Europe/Stockholm" },
+    { "SG", "Asia/Singapore" },
+    { "SH", "Atlantic/St_Helena" },
+    { "SI", "Europe/Ljubljana" },
+    { "SJ", "Arctic/Longyearbyen" },
+    { "SK", "Europe/Bratislava" },
+    { "SL", "Africa/Freetown" },
+    { "SM", "Europe/San_Marino" },
+    { "SN", "Africa/Dakar" },
+    { "SO", "Africa/Mogadishu" },
+    { "SR", "America/Paramaribo" },
+    { "SS", "Africa/Juba" },
+    { "ST", "Africa/Sao_Tome" },
+    { "SV", "America/El_Salvador" },
+    { "SX", "America/Lower_Princes" },
+    { "SY", "Asia/Damascus" },
+    { "SZ", "Africa/Mbabane" },
+    { "TC", "America/Grand_Turk" },
+    { "TD", "Africa/Ndjamena" },
+    { "TF", "Indian/Kerguelen" },
+    { "TG", "Africa/Lome" },
+    { "TH", "Asia/Bangkok" },
+    { "TJ", "Asia/Dushanbe" },
+    { "TK", "Pacific/Fakaofo" },
+    { "TL", "Asia/Dili" },
+    { "TM", "Asia/Ashgabat" },
+    { "TN", "Africa/Tunis" },
+    { "TO", "Pacific/Tongatapu" },
+    { "TR", "Europe/Istanbul" },
+    { "TT", "America/Port_of_Spain" },
+    { "TV", "Pacific/Funafuti" },
+    { "TW", "Asia/Taipei" },
+    { "TZ", "Africa/Dar_es_Salaam" },
+    { "UA", "Europe/Kyiv\000Europe/Simferopol" },
+    { "UG", "Africa/Kampala" },
+    { "UM", "Pacific/Midway\000Pacific/Wake" },
+    { "US", "America/Adak\000America/Anchorage\000America/Boise\000America/Chicago\000America/Denver\000America/Detroit\000America/Indiana/Indianapolis\000America/Indiana/Knox\000America/Indiana/Marengo\000America/Indiana/Petersburg\000America/Indiana/Tell_City\000America/Indiana/Vevay\000America/Indiana/Vincennes\000America/Indiana/Winamac\000America/Juneau\000America/Kentucky/Louisville\000America/Kentucky/Monticello\000America/Los_Angeles\000America/Menominee\000America/Metlakatla\000America/New_York\000America/Nome\000America/North_Dakota/Beulah\000America/North_Dakota/Center\000America/North_Dakota/New_Salem\000America/Phoenix\000America/Sitka\000America/Yakutat\000Pacific/Honolulu" },
+    { "UY", "America/Montevideo" },
+    { "UZ", "Asia/Samarkand\000Asia/Tashkent" },
+    { "VA", "Europe/Vatican" },
+    { "VC", "America/St_Vincent" },
+    { "VE", "America/Caracas" },
+    { "VG", "America/Tortola" },
+    { "VI", "America/St_Thomas" },
+    { "VN", "Asia/Ho_Chi_Minh" },
+    { "VU", "Pacific/Efate" },
+    { "WF", "Pacific/Wallis" },
+    { "WS", "Pacific/Apia" },
+    { "YE", "Asia/Aden" },
+    { "YT", "Indian/Mayotte" },
+    { "ZA", "Africa/Johannesburg" },
+    { "ZM", "Africa/Lusaka" },
+    { "ZW", "Africa/Harare" },
+};
+const int ti_tz_region_count = countof(ti_tz_region_tab);
index 657b4d9271581d60b69e79743e1a1d90e449ec90..c5c32f78c37f89a3bad460149f94945ba49a5046 100644 (file)
@@ -1,18 +1,3 @@
-test262/test/intl402/Locale/prototype/getCalendars/likely-subtags-region.js:42: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getCalendars/region-override.js:41: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getCalendars/region-priority.js:60: Test262Error: Inconclusive: the "rg" region override and the region subtag select regions with identical calendars in this implementation. Consider updating the test data
-test262/test/intl402/Locale/prototype/getCalendars/subdivision-region.js:35: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getCollations/collation-keyword.js:28: Test262Error: Actual [default] and expected [phonebk] should have the same contents. getCollations() for en-u-co-phonebk returns only phonebk
-test262/test/intl402/Locale/prototype/getCollations/und-language.js:53: Test262Error: Actual [default] and expected [emoji, eor] should have the same contents. getCollations() for und must return the root collations
-test262/test/intl402/Locale/prototype/getHourCycles/language-priority.js:47: Test262Error: Either the feature is not implemented correctly, or no suitable test data found in this implementation. If the latter, consider updating the candidate list
-test262/test/intl402/Locale/prototype/getHourCycles/likely-subtags-region.js:42: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getHourCycles/region-override.js:41: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getHourCycles/region-priority.js:59: Test262Error: Inconclusive: the "rg" region override and the region subtag select regions with identical hour cycles in this implementation. Consider updating the test data
-test262/test/intl402/Locale/prototype/getHourCycles/subdivision-region.js:35: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getWeekInfo/likely-subtags-region.js:46: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getWeekInfo/region-override.js:45: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
-test262/test/intl402/Locale/prototype/getWeekInfo/region-priority.js:59: Test262Error: Inconclusive: the "rg" region override and the region subtag selected regions with identical week info in this implementation. Consider updating the test data
-test262/test/intl402/Locale/prototype/getWeekInfo/subdivision-region.js:39: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list
 test262/test/language/statements/await-using/initializer-Symbol.asyncDispose-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist
 test262/test/language/statements/await-using/initializer-Symbol.dispose-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist
 test262/test/language/statements/using/initializer-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist