Update Locale::Codes to 3.12
Steffen Mueller [Wed, 21 Apr 2010 10:18:49 +0000 (12:18 +0200)]
We're skipping inclusion of some files such as the unused Build.PL,
INSTALL, etc. cpan/Locale-Codes/internal/* should probably also not be
included in perl core.

53 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/Locale-Codes/ChangeLog
cpan/Locale-Codes/LICENSE [new file with mode: 0644]
cpan/Locale-Codes/Makefile.PL [deleted file]
cpan/Locale-Codes/README [deleted file]
cpan/Locale-Codes/README.first [new file with mode: 0644]
cpan/Locale-Codes/examples/README.examples [new file with mode: 0644]
cpan/Locale-Codes/internal/NOTES [new file with mode: 0644]
cpan/Locale-Codes/internal/VERSION [new file with mode: 0644]
cpan/Locale-Codes/internal/build.yaml [new file with mode: 0644]
cpan/Locale-Codes/internal/data.country.pl [new file with mode: 0644]
cpan/Locale-Codes/internal/data.currency.pl [new file with mode: 0644]
cpan/Locale-Codes/internal/data.language.pl [new file with mode: 0644]
cpan/Locale-Codes/internal/data.script.pl [new file with mode: 0644]
cpan/Locale-Codes/internal/get_codes [new file with mode: 0755]
cpan/Locale-Codes/internal/ispell.isp [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes.pod [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Changes.pod [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Country.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Currency.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Language.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Script.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Constants.pm
cpan/Locale-Codes/lib/Locale/Constants.pod
cpan/Locale-Codes/lib/Locale/Country.pm
cpan/Locale-Codes/lib/Locale/Country.pod
cpan/Locale-Codes/lib/Locale/Currency.pm
cpan/Locale-Codes/lib/Locale/Currency.pod
cpan/Locale-Codes/lib/Locale/Language.pm
cpan/Locale-Codes/lib/Locale/Language.pod
cpan/Locale-Codes/lib/Locale/Script.pm
cpan/Locale-Codes/lib/Locale/Script.pod
cpan/Locale-Codes/t/alias_code.t [new file with mode: 0755]
cpan/Locale-Codes/t/all.t [deleted file]
cpan/Locale-Codes/t/code2country.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2currency.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2language.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2script.t [new file with mode: 0755]
cpan/Locale-Codes/t/constants.t [deleted file]
cpan/Locale-Codes/t/country.t [changed mode: 0644->0755]
cpan/Locale-Codes/t/country2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/country_code2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/currency.t [deleted file]
cpan/Locale-Codes/t/currency2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/language.t [changed mode: 0644->0755]
cpan/Locale-Codes/t/language2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/rename.t [deleted file]
cpan/Locale-Codes/t/script.t [deleted file]
cpan/Locale-Codes/t/script2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/testfunc.pl [new file with mode: 0644]
cpan/Locale-Codes/t/uk.t [deleted file]

index 86b663e..520ed36 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1346,6 +1346,23 @@ cpan/List-Util/t/tainted.t               Scalar::Util
 cpan/List-Util/t/weak.t                        Scalar::Util
 cpan/List-Util/XS.pp                   List::Util
 cpan/Locale-Codes/ChangeLog                    Locale::Codes
+cpan/Locale-Codes/examples/README.examples     Locale::Codes
+cpan/Locale-Codes/internal/build.yaml          Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.country.pl     Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.currency.pl    Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.language.pl    Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.script.pl      Locale::Codes maintainer file
+cpan/Locale-Codes/internal/get_codes           Locale::Codes maintainer file
+cpan/Locale-Codes/internal/ispell.isp          Locale::Codes maintainer file
+cpan/Locale-Codes/internal/NOTES               Locale::Codes maintainer file
+cpan/Locale-Codes/internal/VERSION             Locale::Codes maintainer file
+cpan/Locale-Codes/lib/Locale/Codes/Changes.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Country.pm  Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Currency.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Language.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pm          Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pod         Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Script.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Constants.pm      Locale::Codes
 cpan/Locale-Codes/lib/Locale/Constants.pod     Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Country.pm                Locale::Codes
@@ -1356,16 +1373,21 @@ cpan/Locale-Codes/lib/Locale/Language.pm        Locale::Codes
 cpan/Locale-Codes/lib/Locale/Language.pod      Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Script.pm         Locale::Codes
 cpan/Locale-Codes/lib/Locale/Script.pod                Locale::Codes documentation
-cpan/Locale-Codes/Makefile.PL
-cpan/Locale-Codes/README                       Locale::Codes
-cpan/Locale-Codes/t/all.t                      See if Locale::Codes work
-cpan/Locale-Codes/t/constants.t                        See if Locale::Codes work
-cpan/Locale-Codes/t/country.t                  See if Locale::Codes work
-cpan/Locale-Codes/t/currency.t                 See if Locale::Codes work
-cpan/Locale-Codes/t/language.t                 See if Locale::Codes work
-cpan/Locale-Codes/t/rename.t                   See if Locale::Codes work
-cpan/Locale-Codes/t/script.t                   See if Locale::Codes work
-cpan/Locale-Codes/t/uk.t                       See if Locale::Codes work
+cpan/Locale-Codes/LICENSE                      Locale::Codes
+cpan/Locale-Codes/README.first                 Locale::Codes
+cpan/Locale-Codes/t/alias_code.t               Locale::Codes tests
+cpan/Locale-Codes/t/code2country.t             Locale::Codes tests
+cpan/Locale-Codes/t/code2currency.t            Locale::Codes tests
+cpan/Locale-Codes/t/code2language.t            Locale::Codes tests
+cpan/Locale-Codes/t/code2script.t              Locale::Codes tests
+cpan/Locale-Codes/t/country2code.t             Locale::Codes tests
+cpan/Locale-Codes/t/country_code2code.t                Locale::Codes tests
+cpan/Locale-Codes/t/country.t                  Locale::Codes tests
+cpan/Locale-Codes/t/currency2code.t            Locale::Codes tests
+cpan/Locale-Codes/t/language2code.t            Locale::Codes tests
+cpan/Locale-Codes/t/language.t                 Locale::Codes tests
+cpan/Locale-Codes/t/script2code.t              Locale::Codes tests
+cpan/Locale-Codes/t/testfunc.pl                        Locale::Codes tests
 cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm      Locale::Simple
 cpan/Locale-Maketext-Simple/t/0-signature.t                    Locale::Simple tests
 cpan/Locale-Maketext-Simple/t/1-basic.t                                Locale::Simple tests
index 475945f..98ad6c9 100755 (executable)
@@ -843,8 +843,9 @@ use File::Glob qw(:case);
     'Locale-Codes' =>
        {
        'MAINTAINER'    => 'sbeck',
-       'DISTRIBUTION'  => 'NEILB/Locale-Codes-2.07.tar.gz',
+       'DISTRIBUTION'  => 'SBECK/Locale-Codes-3.12.tar.gz',
        'FILES'         => q[cpan/Locale-Codes],
+       'EXCLUDED'      => [ qw{t/pod_coverage.t t/pod.t}, qr{^t/runtests} ],
        'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
index c724b38..627bdcf 100644 (file)
@@ -1,6 +1,74 @@
 
                ChangeLog for Locale-Codes Distribution
 
+As of 3.00, the codes are autogenerated from the standards. With each release, codes will
+be re-generated and tested to see if any code changed. Any time there are any changes to
+the codes, it will be flagged below with a change: NEW CODE(s).
+
+3.13
+
+3.12  2010-04-06 sbeck
+       * NEW CODE(s)
+       * Renamed test.pl to testfunc.pl to avoid causing an error
+         when built as part of perl.
+
+3.11  2010-03-01 sbeck
+       * NEW CODE(s)
+       * Added the IANA domain names to Country
+       * Fixed a problem that produced warnings with perl 5.11.5.
+               Jerry D. Hedden
+
+3.10  2010-02-18 sbeck
+       * NEW CODE(s)
+       * Moved support files into the Locale::Codes namespace.
+       * The work done in each of the Locale::XXX modules was
+               virtually identical to each other. It has all
+               been moved to a central module and the
+               Locale::XXX moduels are now just wrappers.
+       * The XXX_code2code functions would return undef if the
+               same codeset were passed in for both the 2nd and
+               3rd arguments. This doesn't make sense and has
+               been changed.
+       * Added all semi-private routines (except for the
+               couple that were already present):
+                       rename_XXX
+                       add_XXX
+                       delete_XXX
+                       add_XXX_alias
+                       delete_XXX_alias
+                       rename_XXX_code
+                       add_XXX_code_alias
+                       delete_XXX_code_alias
+       * Added "UK" alias. Steve Hay
+
+3.01  2010-02-15 sbeck
+       * Fixed Makefile.PL and Build.PL to install as core
+               modules.
+
+3.00  2010-02-10 sbeck
+       * NEW CODE(s)
+       * Took over maintenance of the code
+       * All codes and country names come from the official
+               standards
+       * code2country now returns the name of the country specified
+               in the standard (if the different standards refer
+               to the country by different variations in the name,
+               the results will differe based on the CODESET)
+       * Added code sets
+               FIPS 10 country codes
+               Alpha-3 and Term language codes
+               Numeric currency codes
+       * The rename_country funcion from 2.07 would guess the
+               CODESET (unlike all other functions which used
+               a default of LOCALE_CODE_ALPHA_2). The guess can
+               cause problems since (with the addition of FIPS)
+               codes may appear in different codesets for different
+               countries. The behavior has been changed to be
+               the same as other functions (default to
+               LOCALE_CODE_ALPHA_2).
+       * Dropped support for _alias_code
+       * Added language_code2code, currency_code2code
+
 2.07  2004-06-10 neilb
        * made $_ local in the initialisation code for each module
                change back-propagated from Perl distribution
diff --git a/cpan/Locale-Codes/LICENSE b/cpan/Locale-Codes/LICENSE
new file mode 100644 (file)
index 0000000..ae8dd20
--- /dev/null
@@ -0,0 +1,3 @@
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
diff --git a/cpan/Locale-Codes/Makefile.PL b/cpan/Locale-Codes/Makefile.PL
deleted file mode 100644 (file)
index e1121eb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-use strict;
-use ExtUtils::MakeMaker;
-
-WriteMakefile (
-    NAME      => 'Locale-Codes',
-    DISTNAME  => 'Locale-Codes',
-    VERSION   => '2.07',
-    AUTHOR    => 'Neil Bowers <neil@bowers.com>',
-    ABSTRACT  => 'modules for ISO codes identifying countries, languages, currencies, and scripts',
-);
diff --git a/cpan/Locale-Codes/README b/cpan/Locale-Codes/README
deleted file mode 100644 (file)
index 9920aba..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-
-                       Locale-Codes Distribution
-                               v2.07
-
-For changes in this release, please see the ChangeLog file.
-
-This distribution contains four Perl modules which can be used to process
-ISO codes for identifying languages, countries, scripts,
-and currencies & funds.
-
-    Locale::Language
-       Two letter codes for language identification (ISO 639).
-       For example, 'en' is the code for 'English'.
-
-    Locale::Country
-       Codes for country identification (ISO 3166). This module
-       supports the three different code sets defined by the
-       standard: alpha-2, alpha-3, and numeric codes.
-       For example, 'bo' is the code for 'Bolivia'.
-
-    Locale::Currency
-       Three letter codes for currency and fund identification (ISO 4217).
-       For example, 'sek' is the code for 'Swedish Krona'.
-
-    Locale::Script
-       Codes for script identification (ISO 15924). This module supports
-       the three different code sets defined by the standard:
-       alpha-2, alpha-3, and numeric codes.
-
-To install these modules, you should just have to run the following:
-
-       % perl Makefile.PL
-       % make
-       % make test
-       % make install
-
-The modules are documented using pod. When you "make install", you
-will get four man-pages: Locale::Language, Locale::Country,
-Locale::Currency, Locale::Script.
-
-The first version of Locale::Currency was written by Michael Hennecke,
-with modifications for inclusion by me. Kudos to Michael.
-
-Please let me know if you experience any problems with these modules,
-or have any ideas for additions.
-
-
-Neil Bowers
-<neil@bowers.com>
diff --git a/cpan/Locale-Codes/README.first b/cpan/Locale-Codes/README.first
new file mode 100644 (file)
index 0000000..8609e5e
--- /dev/null
@@ -0,0 +1,54 @@
+
+                       Locale-Codes Distribution
+
+For changes in this release, please refer to the Locale::Changes
+man-page.
+
+For changes prior to 3.00, please see the ChangeLog file.
+
+This distribution contains Perl modules which can be used to process
+ISO codes for identifying languages, countries, scripts,
+and currencies & funds.
+
+    Locale::Language
+
+       Codes for language identification including ISO 639.
+
+       For example, 'en' is the code for 'English'.
+
+    Locale::Country
+
+       Codes for country identification including ISO 3166
+        and FIPS 10.
+
+       For example, 'us' is the code for 'United States'.
+
+    Locale::Currency
+
+       Codes for currency and fund identification including
+        ISO 4217.
+
+       For example, 'sek' is the code for 'Swedish Krona'.
+
+    Locale::Script
+
+       Codes for script identification including ISO 15924.
+
+        For example, 'Phnx' is the code for 'Phoenician'.
+
+The modules are documented using pod. When you "make install", you
+will get man-pages: Local::Codes and each of the modules listed above.
+
+The first version of Locale::Currency was written by Michael Hennecke,
+with modifications by Neil Bowers for inclusion.
+
+The first versions of Locale::Language, Locale::Country, and Locale::Script
+were written by Neil Bowers.
+
+Please let me know if you experience any problems with these modules,
+or have any ideas for additions.
+
+Also, I plan on releasing a new version a couple of times a year to make
+sure that all of the codes are current. If a code changes in any standard,
+and you want a new release, just email me and I'll put out a new release.
+
diff --git a/cpan/Locale-Codes/examples/README.examples b/cpan/Locale-Codes/examples/README.examples
new file mode 100644 (file)
index 0000000..faa94b9
--- /dev/null
@@ -0,0 +1,96 @@
+Please refer to the ../t directory for examples of how to use this
+module.
+
+The tests are organized fairly simply. In each .t file (except for
+pod and pod_coverage) is a line of the form:
+
+  test_Func(\&FUNC,$tests,$runtests,ARGS)
+
+FUNC is the name of one of the functions available in the module,
+or some function defined in the test script which calls one or more
+of the module functions.
+
+Also in the file are a series of tests organized as:
+
+   $tests = "
+   TEST1
+
+   TEST2
+
+   ...
+   ";
+
+or
+
+  $tests = [
+  TEST1,
+
+  TEST2,
+
+  ... ];
+
+
+In the first case, a test is a list of strings, some of which are used
+as arguments for the function being called, and some are expected results.
+If the expected result is a simple scalar, each TEST may be a simple list
+of space separated strings, the last of which is treated as the expected
+output.
+
+For example, if the following line appears in the test script:
+
+  test_Func(\&somefunc,$tests,$runtests);
+
+and one of the tests is:
+
+  A B C
+
+then the following behavior is expected:
+
+  somefunc(A,B)
+     => C
+
+The list of strings may also be given on separate lines as:
+
+  A
+  B
+  C
+
+If the expected results are a list of values, then the arguments
+to the function and the expected results are separated by a tilde (~).
+So if the following behavior is expected:
+
+  somefunc(A,B)
+     => (C,D)
+
+the test could be written in either of the following ways:
+
+  A B ~ C D
+
+  A
+  B
+  ~
+  C
+  D
+
+In all cases, leading spaces are ignored. Also, the strings may include
+spaces if (and only if) they are given one per line.
+
+Two special strings "_undef_" and "_blank_" may be included in the list
+to have the values undef or "" repectively included as either an argument
+or an expected return value.
+
+
+In the second method of entering tests, tests are given as a list reference
+with two values. The first is a list reference containing arguments, and
+the second is a list reference containing the expected return value(s). The
+expected values should be simple strings.
+
+So, a test could be entered as:
+
+  [ [ qw(A B) ],
+    [ qw(C D) ] ]
+
+and be equivalent to:
+
+  A B ~ C D
+
diff --git a/cpan/Locale-Codes/internal/NOTES b/cpan/Locale-Codes/internal/NOTES
new file mode 100644 (file)
index 0000000..e3ecf5c
--- /dev/null
@@ -0,0 +1,64 @@
+The files in this directory are for primary use by me, the maintainer
+of Locale::Codes to prepare a new release.
+
+There is no reason for an end user to need to do this. However, it
+is documented for the sake of completeness, and to remind me of the
+steps I need to do.
+
+It's also available in case someone ever chooses to fork the
+module (though I hope that won't be necessary).
+
+#########################################################################
+Before every release, spellcheck the documents:
+
+   for i in `find lib -type f -name \*.pod` ;do
+      podspell $i > $i.txt
+      ispell -p internal/ispell.isp $i.txt
+      rm -f $i.txt $i.txt.bak
+   done
+
+#########################################################################
+Get the newest codes:
+
+   ./internal/get_codes -c
+   diff lib/Locale/Codes/Country.pm{.bak,}
+
+   ./internal/get_codes -l
+   diff lib/Locale/Codes/Language.pm{.bak,}
+
+   ./internal/get_codes -r
+   diff lib/Locale/Codes/Currency.pm{.bak,}
+
+   ./internal/get_codes -s
+   diff lib/Locale/Codes/Script.pm{.bak,}
+
+   ./internal/get_codes -C
+   rm lib/Locale/Codes/*.bak
+
+#########################################################################
+Set the release version
+
+   v=`cat internal/VERSION`
+   for i in \
+       internal/get_codes \
+       `find lib -name \*.pm` \
+   ;do
+      sed -e "s,VERSION *=.*;,VERSION='$v';," $i > z
+      mv z $i
+   done
+
+#########################################################################
+Update the history file with the date
+
+#########################################################################
+Update the copyright
+
+   y=`date '+%Y'`
+   for i in `find . -type f | xargs egrep -l 'Copyright \(c\) ....\-.... Sullivan Beck'` ;do
+     sed -e "s,\(Copyright (c) ....\)\-.... \(Sullivan Beck\),\1-$y \2," $i > z
+     mv z $i
+   done
+
+#########################################################################
+Regenerate the MANIFEST, Build.PL, Makefile.PL
+Run the kwalitee tests
diff --git a/cpan/Locale-Codes/internal/VERSION b/cpan/Locale-Codes/internal/VERSION
new file mode 100644 (file)
index 0000000..e4fba21
--- /dev/null
@@ -0,0 +1 @@
+3.12
diff --git a/cpan/Locale-Codes/internal/build.yaml b/cpan/Locale-Codes/internal/build.yaml
new file mode 100644 (file)
index 0000000..fc5f8e8
--- /dev/null
@@ -0,0 +1,2 @@
+---
+core: 5.007003
diff --git a/cpan/Locale-Codes/internal/data.country.pl b/cpan/Locale-Codes/internal/data.country.pl
new file mode 100644 (file)
index 0000000..4db889e
--- /dev/null
@@ -0,0 +1,416 @@
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck.  All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# This is used to match country names from one source with those from
+# an existing source.
+#
+%country_alias =
+  (
+   "Bahamas, The"                                 => "Bahamas",
+   "Bolivia (Plurinational State of)"             => "Bolivia, Plurinational State of",
+   "Bolivia"                                      => "Bolivia, Plurinational State of",
+   "British Virgin Islands"                       => "Virgin Islands, British",
+   "Brunei"                                       => "Brunei Darussalam",
+   "Burma"                                        => "Myanmar",
+   "China, Hong Kong Special Administrative Region" => "Hong Kong",
+   "China, Macao Special Administrative Region"   => "Macao",
+   "Cocos Islands"                                => "Cocos (Keeling) Islands",
+   "Congo (Brazzaville)"                          => "Congo",
+   "Democratic People's Republic of Korea"        => "Korea, Democratic People's Republic of",
+   "Democratic Republic of the Congo"             => "Congo, The Democratic Republic of the",
+   "East Timor"                                   => "Timor-Leste",
+   "Faeroe Islands"                               => "Faroe Islands",
+   "Falkland Islands (Islas Malvinas)"            => "Falkland Islands (Malvinas)",
+   "Federated States of Micronesia"               => "Micronesia, Federated States of",
+   "French Southern and Antarctic Lands"          => "French Southern Territories",
+   "Gambia, The"                                  => "Gambia",
+   "Golan Heights (Israeli-occupied)"             => "Syrian Arab Republic",
+   "Great Britain"                                => "United Kingdom",
+   "Holy See"                                     => "Holy See (Vatican City State)",
+   "Hong Kong S.A.R."                             => "Hong Kong",
+   "Hong Kong Special Administrative Region of China" => "Hong Kong",
+   "Iran (Islamic Republic of)"                   => "Iran, Islamic Republic of",
+   "Iran"                                         => "Iran, Islamic Republic of",
+   "Kazakstan"                                    => "Kazakhstan",
+   "Keeling Islands"                              => "Cocos (Keeling) Islands",
+   "Libya"                                        => "Libyan Arab Jamahiriya",
+   "Macao Special Administrative Region of China" => "Macao",
+   "Macau S.A.R"                                  => "Macao",
+   "Macau S.A.R."                                 => "Macao",
+   "Macedonia"                                    => "Macedonia, The Former Yugoslav Republic of",
+   "Macedonia, Former Yugoslav Republic of"       => "Macedonia, The Former Yugoslav Republic of",
+   "Micronesia (Federated States of)"             => "Micronesia, Federated States of",
+   "North Korea"                                  => "Korea, Democratic People's Republic of",
+   "Occupied Palestinian Territory"               => "Palestinian Territory, Occupied",
+   "Pitcairn Island"                              => "Pitcairn",
+   "Pitcairn Islands"                             => "Pitcairn",
+   "Republic of Korea"                            => "Korea, Republic of",
+   "Republic of Moldova"                          => "Moldova, Republic of",
+   "Saint Helena"                                 => "Saint Helena, Ascension and Tristan da Cunha",
+   "Saint-Barthelemy"                             => "Saint Barthelemy",
+   "Saint-Martin (French part)"                   => "Saint Martin",
+   "South Korea"                                  => "Korea, Republic of",
+   "Svalbard and Jan Mayen Islands"               => "Svalbard and Jan Mayen",
+   "Taiwan"                                       => "Taiwan, Province of China",
+   "The Bahamas"                                  => "Bahamas",
+   "The Democratic Republic of the Congo"         => "Congo, The Democratic Republic of the",
+   "The Republic of the Congo"                    => "Congo",
+   "The former Yugoslav Republic of Macedonia"    => "Macedonia, The Former Yugoslav Republic of",
+   "UK"                                           => "United Kingdom",
+   "US"                                           => "United States",
+   "USA"                                          => "United States",
+   "United Kingdom of Great Britain and Northern Ireland" => "United Kingdom",
+   "United Republic of Tanzania"                  => "Tanzania, United Republic of",
+   "United States Virgin Islands"                 => "Virgin Islands, U.S.",
+   "United States of America"                     => "United States",
+   "Vatican City"                                 => "Holy See (Vatican City State)",
+   "Venezuela (Bolivarian Republic of)"           => "Venezuela, Bolivarian Republic of",
+   "Venezuela"                                    => "Venezuela, Bolivarian Republic of",
+   "Vietnam"                                      => "Viet Nam",
+   "Virgin Islands (UK)"                          => "Virgin Islands, British",
+   "Virgin Islands (US)"                          => "Virgin Islands, U.S.",
+   "Virgin Islands"                               => "Virgin Islands, U.S.",
+   "Wallis and Futuna Islands"                    => "Wallis and Futuna",
+  );
+
+# From v. 2.xx:
+#   Zaire
+#   Serbia and Montenegro
+#   Yugoslavia
+#   Jan Mayen
+#   Svalbard
+
+################################################################################
+# ISO 3166-1 countries
+
+%country_iso_orig =
+  (
+   "AFGHANISTAN"                                  => "Afghanistan",
+   "Ã…LAND ISLANDS"                                => "Aland Islands",
+   "ALBANIA"                                      => "Albania",
+   "ALGERIA"                                      => "Algeria",
+   "AMERICAN SAMOA"                               => "American Samoa",
+   "ANDORRA"                                      => "Andorra",
+   "ANGOLA"                                       => "Angola",
+   "ANGUILLA"                                     => "Anguilla",
+   "ANTARCTICA"                                   => "Antarctica",
+   "ANTIGUA AND BARBUDA"                          => "Antigua and Barbuda",
+   "ARGENTINA"                                    => "Argentina",
+   "ARMENIA"                                      => "Armenia",
+   "ARUBA"                                        => "Aruba",
+   "AUSTRALIA"                                    => "Australia",
+   "AUSTRIA"                                      => "Austria",
+   "AZERBAIJAN"                                   => "Azerbaijan",
+   "BAHAMAS"                                      => "Bahamas",
+   "BAHRAIN"                                      => "Bahrain",
+   "BANGLADESH"                                   => "Bangladesh",
+   "BARBADOS"                                     => "Barbados",
+   "BELARUS"                                      => "Belarus",
+   "BELGIUM"                                      => "Belgium",
+   "BELIZE"                                       => "Belize",
+   "BENIN"                                        => "Benin",
+   "BERMUDA"                                      => "Bermuda",
+   "BHUTAN"                                       => "Bhutan",
+   "BOLIVIA, PLURINATIONAL STATE OF"              => "Bolivia, Plurinational State of",
+   "BOSNIA AND HERZEGOVINA"                       => "Bosnia and Herzegovina",
+   "BOTSWANA"                                     => "Botswana",
+   "BOUVET ISLAND"                                => "Bouvet Island",
+   "BRAZIL"                                       => "Brazil",
+   "BRITISH INDIAN OCEAN TERRITORY"               => "British Indian Ocean Territory",
+   "BRUNEI DARUSSALAM"                            => "Brunei Darussalam",
+   "BULGARIA"                                     => "Bulgaria",
+   "BURKINA FASO"                                 => "Burkina Faso",
+   "BURUNDI"                                      => "Burundi",
+   "CAMBODIA"                                     => "Cambodia",
+   "CAMEROON"                                     => "Cameroon",
+   "CANADA"                                       => "Canada",
+   "CAPE VERDE"                                   => "Cape Verde",
+   "CAYMAN ISLANDS"                               => "Cayman Islands",
+   "CENTRAL AFRICAN REPUBLIC"                     => "Central African Republic",
+   "CHAD"                                         => "Chad",
+   "CHILE"                                        => "Chile",
+   "CHINA"                                        => "China",
+   "CHRISTMAS ISLAND"                             => "Christmas Island",
+   "COCOS (KEELING) ISLANDS"                      => "Cocos (Keeling) Islands",
+   "COLOMBIA"                                     => "Colombia",
+   "COMOROS"                                      => "Comoros",
+   "CONGO"                                        => "Congo",
+   "CONGO, THE DEMOCRATIC REPUBLIC OF THE"        => "Congo, The Democratic Republic of the",
+   "COOK ISLANDS"                                 => "Cook Islands",
+   "COSTA RICA"                                   => "Costa Rica",
+   "CÔTE D'IVOIRE"                                => "Cote d'Ivoire",
+   "CROATIA"                                      => "Croatia",
+   "CUBA"                                         => "Cuba",
+   "CYPRUS"                                       => "Cyprus",
+   "CZECH REPUBLIC"                               => "Czech Republic",
+   "DENMARK"                                      => "Denmark",
+   "DJIBOUTI"                                     => "Djibouti",
+   "DOMINICA"                                     => "Dominica",
+   "DOMINICAN REPUBLIC"                           => "Dominican Republic",
+   "ECUADOR"                                      => "Ecuador",
+   "EGYPT"                                        => "Egypt",
+   "EL SALVADOR"                                  => "El Salvador",
+   "EQUATORIAL GUINEA"                            => "Equatorial Guinea",
+   "ERITREA"                                      => "Eritrea",
+   "ESTONIA"                                      => "Estonia",
+   "ETHIOPIA"                                     => "Ethiopia",
+   "FALKLAND ISLANDS (MALVINAS)"                  => "Falkland Islands (Malvinas)",
+   "FAROE ISLANDS"                                => "Faroe Islands",
+   "FIJI"                                         => "Fiji",
+   "FINLAND"                                      => "Finland",
+   "FRANCE"                                       => "France",
+   "FRENCH GUIANA"                                => "French Guiana",
+   "FRENCH POLYNESIA"                             => "French Polynesia",
+   "FRENCH SOUTHERN TERRITORIES"                  => "French Southern Territories",
+   "GABON"                                        => "Gabon",
+   "GAMBIA"                                       => "Gambia",
+   "GEORGIA"                                      => "Georgia",
+   "GERMANY"                                      => "Germany",
+   "GHANA"                                        => "Ghana",
+   "GIBRALTAR"                                    => "Gibraltar",
+   "GREECE"                                       => "Greece",
+   "GREENLAND"                                    => "Greenland",
+   "GRENADA"                                      => "Grenada",
+   "GUADELOUPE"                                   => "Guadeloupe",
+   "GUAM"                                         => "Guam",
+   "GUATEMALA"                                    => "Guatemala",
+   "GUERNSEY"                                     => "Guernsey",
+   "GUINEA"                                       => "Guinea",
+   "GUINEA-BISSAU"                                => "Guinea-Bissau",
+   "GUYANA"                                       => "Guyana",
+   "HAITI"                                        => "Haiti",
+   "HEARD ISLAND AND MCDONALD ISLANDS"            => "Heard Island and Mcdonald Islands",
+   "HOLY SEE (VATICAN CITY STATE)"                => "Holy See (Vatican City State)",
+   "HONDURAS"                                     => "Honduras",
+   "HONG KONG"                                    => "Hong Kong",
+   "HUNGARY"                                      => "Hungary",
+   "ICELAND"                                      => "Iceland",
+   "INDIA"                                        => "India",
+   "INDONESIA"                                    => "Indonesia",
+   "IRAN, ISLAMIC REPUBLIC OF"                    => "Iran, Islamic Republic of",
+   "IRAQ"                                         => "Iraq",
+   "IRELAND"                                      => "Ireland",
+   "ISLE OF MAN"                                  => "Isle of Man",
+   "ISRAEL"                                       => "Israel",
+   "ITALY"                                        => "Italy",
+   "JAMAICA"                                      => "Jamaica",
+   "JAPAN"                                        => "Japan",
+   "JERSEY"                                       => "Jersey",
+   "JORDAN"                                       => "Jordan",
+   "KAZAKHSTAN"                                   => "Kazakhstan",
+   "KENYA"                                        => "Kenya",
+   "KIRIBATI"                                     => "Kiribati",
+   "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"       => "Korea, Democratic People's Republic of",
+   "KOREA, REPUBLIC OF"                           => "Korea, Republic of",
+   "KUWAIT"                                       => "Kuwait",
+   "KYRGYZSTAN"                                   => "Kyrgyzstan",
+   "LAO PEOPLE'S DEMOCRATIC REPUBLIC"             => "Lao People's Democratic Republic",
+   "LATVIA"                                       => "Latvia",
+   "LEBANON"                                      => "Lebanon",
+   "LESOTHO"                                      => "Lesotho",
+   "LIBERIA"                                      => "Liberia",
+   "LIBYAN ARAB JAMAHIRIYA"                       => "Libyan Arab Jamahiriya",
+   "LIECHTENSTEIN"                                => "Liechtenstein",
+   "LITHUANIA"                                    => "Lithuania",
+   "LUXEMBOURG"                                   => "Luxembourg",
+   "MACAO"                                        => "Macao",
+   "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"   => "Macedonia, The Former Yugoslav Republic of",
+   "MADAGASCAR"                                   => "Madagascar",
+   "MALAWI"                                       => "Malawi",
+   "MALAYSIA"                                     => "Malaysia",
+   "MALDIVES"                                     => "Maldives",
+   "MALI"                                         => "Mali",
+   "MALTA"                                        => "Malta",
+   "MARSHALL ISLANDS"                             => "Marshall Islands",
+   "MARTINIQUE"                                   => "Martinique",
+   "MAURITANIA"                                   => "Mauritania",
+   "MAURITIUS"                                    => "Mauritius",
+   "MAYOTTE"                                      => "Mayotte",
+   "MEXICO"                                       => "Mexico",
+   "MICRONESIA, FEDERATED STATES OF"              => "Micronesia, Federated States of",
+   "MOLDOVA, REPUBLIC OF"                         => "Moldova, Republic of",
+   "MONACO"                                       => "Monaco",
+   "MONGOLIA"                                     => "Mongolia",
+   "MONTENEGRO"                                   => "Montenegro",
+   "MONTSERRAT"                                   => "Montserrat",
+   "MOROCCO"                                      => "Morocco",
+   "MOZAMBIQUE"                                   => "Mozambique",
+   "MYANMAR"                                      => "Myanmar",
+   "NAMIBIA"                                      => "Namibia",
+   "NAURU"                                        => "Nauru",
+   "NEPAL"                                        => "Nepal",
+   "NETHERLANDS"                                  => "Netherlands",
+   "NETHERLANDS ANTILLES"                         => "Netherlands Antilles",
+   "NEW CALEDONIA"                                => "New Caledonia",
+   "NEW ZEALAND"                                  => "New Zealand",
+   "NICARAGUA"                                    => "Nicaragua",
+   "NIGER"                                        => "Niger",
+   "NIGERIA"                                      => "Nigeria",
+   "NIUE"                                         => "Niue",
+   "NORFOLK ISLAND"                               => "Norfolk Island",
+   "NORTHERN MARIANA ISLANDS"                     => "Northern Mariana Islands",
+   "NORWAY"                                       => "Norway",
+   "OMAN"                                         => "Oman",
+   "PAKISTAN"                                     => "Pakistan",
+   "PALAU"                                        => "Palau",
+   "PALESTINIAN TERRITORY, OCCUPIED"              => "Palestinian Territory, Occupied",
+   "PANAMA"                                       => "Panama",
+   "PAPUA NEW GUINEA"                             => "Papua New Guinea",
+   "PARAGUAY"                                     => "Paraguay",
+   "PERU"                                         => "Peru",
+   "PHILIPPINES"                                  => "Philippines",
+   "PITCAIRN"                                     => "Pitcairn",
+   "POLAND"                                       => "Poland",
+   "PORTUGAL"                                     => "Portugal",
+   "PUERTO RICO"                                  => "Puerto Rico",
+   "QATAR"                                        => "Qatar",
+   "RÉUNION"                                      => "Reunion",
+   "ROMANIA"                                      => "Romania",
+   "RUSSIAN FEDERATION"                           => "Russian Federation",
+   "RWANDA"                                       => "Rwanda",
+   "SAINT BARTHÉLEMY"                             => "Saint Barthelemy",
+   "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA" => "Saint Helena, Ascension and Tristan da Cunha",
+   "SAINT KITTS AND NEVIS"                        => "Saint Kitts and Nevis",
+   "SAINT LUCIA"                                  => "Saint Lucia",
+   "SAINT MARTIN"                                 => "Saint Martin",
+   "SAINT PIERRE AND MIQUELON"                    => "Saint Pierre and Miquelon",
+   "SAINT VINCENT AND THE GRENADINES"             => "Saint Vincent and the Grenadines",
+   "SAMOA"                                        => "Samoa",
+   "SAN MARINO"                                   => "San Marino",
+   "SAO TOME AND PRINCIPE"                        => "Sao Tome and Principe",
+   "SAUDI ARABIA"                                 => "Saudi Arabia",
+   "SENEGAL"                                      => "Senegal",
+   "SERBIA"                                       => "Serbia",
+   "SEYCHELLES"                                   => "Seychelles",
+   "SIERRA LEONE"                                 => "Sierra Leone",
+   "SINGAPORE"                                    => "Singapore",
+   "SLOVAKIA"                                     => "Slovakia",
+   "SLOVENIA"                                     => "Slovenia",
+   "SOLOMON ISLANDS"                              => "Solomon Islands",
+   "SOMALIA"                                      => "Somalia",
+   "SOUTH AFRICA"                                 => "South Africa",
+   "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS" => "South Georgia and the South Sandwich Islands",
+   "SPAIN"                                        => "Spain",
+   "SRI LANKA"                                    => "Sri Lanka",
+   "SUDAN"                                        => "Sudan",
+   "SURINAME"                                     => "Suriname",
+   "SVALBARD AND JAN MAYEN"                       => "Svalbard and Jan Mayen",
+   "SWAZILAND"                                    => "Swaziland",
+   "SWEDEN"                                       => "Sweden",
+   "SWITZERLAND"                                  => "Switzerland",
+   "SYRIAN ARAB REPUBLIC"                         => "Syrian Arab Republic",
+   "TAIWAN, PROVINCE OF CHINA"                    => "Taiwan, Province of China",
+   "TAJIKISTAN"                                   => "Tajikistan",
+   "TANZANIA, UNITED REPUBLIC OF"                 => "Tanzania, United Republic of",
+   "THAILAND"                                     => "Thailand",
+   "TIMOR-LESTE"                                  => "Timor-Leste",
+   "TOGO"                                         => "Togo",
+   "TOKELAU"                                      => "Tokelau",
+   "TONGA"                                        => "Tonga",
+   "TRINIDAD AND TOBAGO"                          => "Trinidad and Tobago",
+   "TUNISIA"                                      => "Tunisia",
+   "TURKEY"                                       => "Turkey",
+   "TURKMENISTAN"                                 => "Turkmenistan",
+   "TURKS AND CAICOS ISLANDS"                     => "Turks and Caicos Islands",
+   "TUVALU"                                       => "Tuvalu",
+   "UGANDA"                                       => "Uganda",
+   "UKRAINE"                                      => "Ukraine",
+   "UNITED ARAB EMIRATES"                         => "United Arab Emirates",
+   "UNITED KINGDOM"                               => "United Kingdom",
+   "UNITED STATES"                                => "United States",
+   "UNITED STATES MINOR OUTLYING ISLANDS"         => "United States Minor Outlying Islands",
+   "URUGUAY"                                      => "Uruguay",
+   "UZBEKISTAN"                                   => "Uzbekistan",
+   "VANUATU"                                      => "Vanuatu",
+   "VENEZUELA, BOLIVARIAN REPUBLIC OF"            => "Venezuela, Bolivarian Republic of",
+   "VIET NAM"                                     => "Viet Nam",
+   "VIRGIN ISLANDS, BRITISH"                      => "Virgin Islands, British",
+   "VIRGIN ISLANDS, U.S."                         => "Virgin Islands, U.S.",
+   "WALLIS AND FUTUNA"                            => "Wallis and Futuna",
+   "WESTERN SAHARA"                               => "Western Sahara",
+   "YEMEN"                                        => "Yemen",
+   "ZAMBIA"                                       => "Zambia",
+   "ZIMBABWE"                                     => "Zimbabwe",
+  );
+
+################################################################################
+# United Nations (source of alpha-3 and numeric codes)
+
+%country_un_orig =
+  (
+   '&Aring;land Islands'                          => "Aland Islands",
+   'C&ocirc;te d'."'Ivoire"                       => "Cote d'Ivoire",
+   'Réunion'                                      => "Reunion",
+   'Saint-Barth&eacute;lemy'                      => "Saint-Barthelemy",
+  );
+
+################################################################################
+# NGA (source of FIPS 10 codes)
+
+%country_nga_orig =
+  (
+  );
+
+%country_nga_ignore =
+  (
+   "Golan Heights (Israeli-occupied)"            => 1,
+  );
+
+################################################################################
+# IANA (source of top level domains)
+
+%country_iana_orig =
+  (
+  );
+
+################################################################################
+# CIA World Factbook (checks for codes)
+
+%country_cia_orig =
+  (
+  );
+
+%country_cia_ignore =
+  (
+   "Western Samoa"               => 1,
+   "World"                       => 1,
+   "Zaire"                       => 1,
+  );
+
+%country_cia_codes =
+  (
+   "alpha2" => {"Gaza Strip"      => "-",
+                "West Bank"       => "-",
+                "Svalbard"        => "-",
+               },
+   "alpha3" => {"Gaza Strip"      => "-",
+                "West Bank"       => "-",
+                "Svalbard"        => "-",
+               },
+   "num"    => {"Gaza Strip"      => "-",
+                "West Bank"       => "-",
+                "Svalbard"        => "-",
+               },
+   "fips"   => {
+               },
+   "dom"    => {"Gaza Strip"      => "-",
+                "West Bank"       => "-",
+                "Svalbard"        => "-",
+               },
+  );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/internal/data.currency.pl b/cpan/Locale-Codes/internal/data.currency.pl
new file mode 100644 (file)
index 0000000..0410143
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck.  All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%currency_alias =
+  (
+  );
+
+%currency_iso_orig =
+  (
+  );
+
+%currency_iso_ignore =
+  (
+    "XTS"  => 1,
+    "XXX"  => 1,
+  );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/internal/data.language.pl b/cpan/Locale-Codes/internal/data.language.pl
new file mode 100644 (file)
index 0000000..73eb08d
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck.  All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%language_alias =
+  (
+   "Greek"                            => 'Greek, Modern (1453-)',
+   "Tonga"                            => 'Tonga (Tonga Islands)',
+  );
+
+%language_iso_orig =
+  (
+   "Bokm\x{e5}l, Norwegian; Norwegian Bokm\x{e5}l"
+                                      => 'Bokmal, Norwegian; Norwegian Bokmal',
+   "Occitan (post 1500); Proven\x{e7}al"
+                                      => 'Occitan (post 1500); Provencal',
+   "Proven\x{e7}al, Old (to 1500)"    => 'Provencal, Old (to 1500)',
+   "Volap\x{fc}k"                     => 'Volapuk',
+  );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/internal/data.script.pl b/cpan/Locale-Codes/internal/data.script.pl
new file mode 100644 (file)
index 0000000..d1554c3
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck.  All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%script_alias =
+  (
+  );
+
+%script_iso_orig =
+  (
+   "Ethiopic (Ge\x{2bb}ez)"          => "Ethiopic (Geez)",
+   "Hangul (Hang\x{16d}l, Hangeul)"  => "Hangul (Hangul, Hangeul)",
+   "Hanunoo (Hanun\x{f3}o)"          => "Hanunoo (Hanunoo)",
+   "Lepcha (R\x{f3}ng)"              => "Lepcha (Rong)",
+   "Nakhi Geba ('Na-'Khi \x{b2}Gg\x{14f}-\x{b9}baw, Naxi Geba)" =>
+      "Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)",
+   "N\x{2019}Ko"                     => "N'Ko",
+   "Ol Chiki (Ol Cemet\x{2019}, Ol, Santali)" =>
+      "Ol Chiki (Ol Cemet, Ol, Santali)",
+  );
+
+%script_iso_ignore =
+  (
+   "Zxxx"    => 1,
+   "Zyyy"    => 1,
+   "Zzzz"    => 1,
+  );
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/internal/get_codes b/cpan/Locale-Codes/internal/get_codes
new file mode 100755 (executable)
index 0000000..29042aa
--- /dev/null
@@ -0,0 +1,1589 @@
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck.  All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+###############################################################################
+###############################################################################
+# This script is used to automatically generate the Locale::Codes module
+# which contain the actual codes.
+
+require 5.000000;
+use YAML;
+use IO::File;
+use strict;
+use warnings;
+use Archive::Zip;
+
+use lib "./internal";
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+use vars qw($DEBUG);
+$DEBUG = 0;
+
+###############################################################################
+# GLOBAL VARIABLES
+###############################################################################
+
+# We need to create the following variables:
+#
+#  %Country{COUNTRY_ID}           => [ COUNTRY, COUNTRY, ... ]
+#                                    A list of all valid country names that
+#                                    correspond to a given COUNTRY_ID.
+#                                    The names are all real (i.e. correct
+#                                    spelling and capitalization).
+#  %CountryAlias{ALIAS}           => [ COUNTRY_ID, I ]
+#                                    A hash of all aliases for a country.
+#                                    Aliases are all lowercase.
+#  %Code2CountryID{CODESET}{CODE} => [ COUNTRY_ID, I ]
+#                                    In a given CODESET, CODE corresponds to
+#                                    the I'th entry list of countries.
+#  %CountryID2Code{CODESET}{COUNTRY_ID} => CODE
+#                                    In the given CODESET, the COUNTRY_ID
+#                                    corresponds to the given CODE.
+
+use vars qw( $CountryID %Country %CountryAlias %Code2CountryID %CountryID2Code );
+use vars qw(%country_alias);
+
+$CountryID = "0001";
+
+use vars qw( $ModDir $CountryModule );
+
+$ModDir        = "lib/Locale/Codes";
+$CountryModule = "Country";
+
+#
+# We'll first read data from the official ISO 3166.
+#
+# Data available consists only of the country names and 2-character
+# codes. Country names include non-ASCII characters encoded in
+# ISO-8859-1. Also, they're all uppercase! Every line in the file ends
+# with one unprintable character. In other words, they're distributed
+# in the most unfriendly fashion you could ask for! We'll store the
+# first country for error checking.
+#
+
+use vars qw($country_iso_url $country_iso_file $country_iso_1st);
+use vars qw(%country_iso_orig);
+
+$country_iso_url    = "http://www.iso.org/iso/list-en1-semic-3.txt";
+$country_iso_1st    = "AFGHANISTAN";
+($country_iso_file) = $country_iso_url =~ m,/([^/]*)$,;
+
+#
+# The UN Stats Division contains some (but not all) of the ISO 3166
+# 3-character codes and 3-digit codes. Since they are the maintainers
+# of this data, this is an official source.
+#
+
+use vars qw($country_un_url $country_un_file);
+use vars qw(%country_un_orig);
+
+$country_un_url    = "http://unstats.un.org/unsd/methods/m49/m49alpha.htm";
+($country_un_file) = $country_un_url =~ m,/([^/]*)$,;
+
+#
+# The National Geospatial-Intelligence Agency is the official source
+# for FIPS 10 codes.
+#
+
+use vars qw($country_nga_url $country_nga_file);
+use vars qw(%country_nga_orig %country_nga_ignore);
+
+$country_nga_url    = "http://earth-info.nga.mil/gns/html/digraphs.htm";
+($country_nga_file) = $country_nga_url =~ m,/([^/]*)$,;
+
+#
+# IANA domains
+#
+
+use vars qw($country_iana_url $country_iana_file);
+use vars qw(%country_iana_orig);
+
+$country_iana_url    = "http://www.iana.org/domains/root/db/index.html";
+($country_iana_file) = $country_iana_url =~ m,/([^/]*)$,;
+
+#
+# This is the CIA World Factbook, which is assumed to be a reliable
+# source of this data. Due to the complexity of the data, we'll store
+# the last country so we know when to stop.
+#
+# We have to force-override some codes.
+#
+
+use vars qw($country_cia_url $country_cia_file $country_cia_last);
+use vars qw(%country_cia_ignore %country_cia_orig %country_cia_codes);
+
+$country_cia_url = "https://www.cia.gov/library/publications/the-world-factbook/appendix/print_appendix-d.html";
+($country_cia_file) = $country_cia_url =~ m,/([^/]*)$,;
+$country_cia_last = "Zimbabwe";
+
+require "data.country.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+#  %Language{LANGUAGE_ID}           => [ LANGUAGE, LANGUAGE, ... ]
+#                                     A list of all valid language names that
+#                                     correspond to a given LANGUAGE_ID.
+#                                     The names are all real (i.e. correct
+#                                     spelling and capitalization).
+#  %LanguageAlias{ALIAS}           => [ LANGUAGE_ID, I ]
+#                                     A hash of all aliases for a language.
+#                                     Aliases are all lowercase.
+#  %Code2LanguageID{CODESET}{CODE} => [ LANGUAGE_ID, I ]
+#                                     In a given CODESET, CODE corresponds to
+#                                     the I'th entry in the list of languages.
+#  %LanguageID2Code{CODESET}{LANGUAGE_ID} => CODE
+#                                     In the given CODESET, the LANGUAGE_ID
+#                                     corresponds to the given CODE.
+
+use vars qw( $LanguageID %Language %LanguageAlias %Code2LanguageID %LanguageID2Code );
+use vars qw(%language_alias);
+
+$LanguageID = "0001";
+
+use vars qw( $LanguageModule );
+
+$LanguageModule = "Language";
+
+#
+# We'll first read data from the official ISO 639.
+#
+# Data available consists of the language names and 2-letter and
+# 3-letter codes. Language names include non-ASCII characters encoded in
+# UTF-8. And (amazingly enough) it's available in a field delimited file!!!
+#
+
+use vars qw($language_iso_url $language_iso_file);
+use vars qw(%language_iso_orig);
+
+$language_iso_url    = "http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt";
+($language_iso_file) = $language_iso_url =~ m,/([^/]*)$,;
+
+require "data.language.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+#  %Currency{CURRENCY_ID}           => [ CURRENCY, CURRENCY, ... ]
+#                                      A list of all valid currency names that
+#                                      correspond to a given CURRENCY_ID.
+#                                      The names are all real (i.e. correct
+#                                      spelling and capitalization).
+#  %CurrencyAlias{ALIAS}            => [ CURRENCY_ID, I ]
+#                                      A hash of all aliases for a currency.
+#                                      Aliases are all lowercase.
+#  %Code2CurrencyID{CODESET}{CODE}  => [ CURRENCY_ID, I ]
+#                                      In a given CODESET, CODE corresponds to
+#                                      the I'th entry in the list of currencies.
+#  %CurrencyID2Code{CODESET}{CURRENCY_ID} => CODE
+#                                      In the given CODESET, the CURRENCY_ID
+#                                      corresponds to the given CODE.
+
+use vars qw( $CurrencyID %Currency %CurrencyAlias %Code2CurrencyID %CurrencyID2Code );
+use vars qw(%currency_alias);
+
+$CurrencyID = "0001";
+
+use vars qw( $CurrencyModule );
+
+$CurrencyModule = "Currency";
+
+#
+# We'll first read data from the official ISO 4217.
+#
+
+use vars qw($currency_iso_url $currency_iso_file $currency_iso_last);
+use vars qw(%currency_iso_orig %currency_iso_ignore);
+
+$currency_iso_url    = "http://www.iso.org/iso/support/currency_codes_list-1.htm";
+($currency_iso_file) = $currency_iso_url =~ m,/([^/]*)$,;
+$currency_iso_last   = "XXX";
+
+require "data.currency.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+#  %Script{SCRIPT_ID}              => [ SCRIPT, SCRIPT, ... ]
+#                                     A list of all valid script names that
+#                                     correspond to a given SCRIPT_ID.
+#                                     The names are all real (i.e. correct
+#                                     spelling and capitalization).
+#  %ScriptAlias{ALIAS}             => [ SCRIPT_ID, I ]
+#                                     A hash of all aliases for a script.
+#                                     Aliases are all lowercase.
+#  %Code2ScriptID{CODESET}{CODE}   => [ SCRIPT_ID, I ]
+#                                     In a given CODESET, CODE corresponds to
+#                                     the I'th entry in the list of scripts.
+#  %ScriptID2Code{CODESET}{SCRIPT_ID} => CODE
+#                                     In the given CODESET, the SCRIPT_ID
+#                                     corresponds to the given CODE.
+
+use vars qw( $ScriptID %Script %ScriptAlias %Code2ScriptID %ScriptID2Code );
+use vars qw(%script_alias);
+
+$ScriptID = "0001";
+
+use vars qw( $ScriptModule );
+
+$ScriptModule = "Script";
+
+#
+# We'll first read data from the official ISO 15924.
+#
+# Data available consists of the script names and 2-letter and
+# 3-letter codes. Script names include non-ASCII characters encoded in
+# UTF-8. And (amazingly enough) it's available in a field delimited file!!!
+#
+
+use vars qw($script_iso_url $script_iso_file $script_iso_tmp);
+use vars qw(%script_iso_orig %script_iso_ignore);
+
+$script_iso_url    = "http://www.unicode.org/iso15924/iso15924.txt.zip";
+($script_iso_file) = $script_iso_url =~ m,/([^/]*)$,;
+$script_iso_tmp    = "iso15924.txt";
+
+require "data.script.pl";
+
+###############################################################################
+# HELP
+###############################################################################
+
+use vars qw($usage);
+my $COM = $0;
+$COM =~ s/^.*\///;
+
+$usage=
+  "usage: $COM OPTIONS
+      -h/--help       : Print help.
+
+      -a/--all        : Do all steps
+
+      -c/--country    : Get the country codes
+      -l/--language   : Get the language codes
+      -r/--currency   : Get the currency codes
+      -s/--script     : Get the script codes
+      -C/--clean      : Clean up all temporary files
+";
+
+###############################################################################
+# PARSE ARGUMENTS
+###############################################################################
+
+my $do_all      = 0;
+my $do_country  = 0;
+my $do_language = 0;
+my $do_currency = 0;
+my $do_script   = 0;
+my $do_clean    = 0;
+
+while ($_ = shift) {
+
+   (print $usage),   exit  if ($_ eq "-h"   ||  $_ eq "--help");
+
+   $do_all = 1,      next  if ($_ eq "-a"   ||  $_ eq "--all");
+
+   $do_country = 1,  next  if ($_ eq "-c"   ||  $_ eq "--country");
+   $do_language = 1, next  if ($_ eq "-l"   ||  $_ eq "--language");
+   $do_currency = 1, next  if ($_ eq "-r"   ||  $_ eq "--currency");
+   $do_script = 1,   next  if ($_ eq "-s"   ||  $_ eq "--script");
+   $do_clean = 1,    next  if ($_ eq "-C"   ||  $_ eq "--clean");
+}
+
+############################################################################
+# MAIN PROGRAM
+############################################################################
+
+do_country()    if ($do_all  ||  $do_country);
+do_language()   if ($do_all  ||  $do_language);
+do_currency()   if ($do_all  ||  $do_currency);
+do_script()     if ($do_all  ||  $do_script);
+do_clean()      if ($do_all  ||  $do_clean);
+
+############################################################################
+# DO_COUNTRY
+############################################################################
+
+sub do_country {
+   print "Country codes...\n";
+
+   do_country_iso();
+   print_table("country")  if ($DEBUG == 2);
+
+   do_country_un();
+   print_table("country")  if ($DEBUG == 2);
+
+   do_country_nga();
+   print_table("country")  if ($DEBUG == 2);
+
+   do_country_iana();
+   print_table("country")  if ($DEBUG == 2);
+
+   do_country_cia();
+   print_table("country")  if ($DEBUG == 2);
+
+   # Go through all aliases to pick up any that haven't already been
+   # added (since some aliases are for human convenience rather than
+   # dealing with variations between codesets).
+   do_aliases("country");
+   print_table("country")  if ($DEBUG);
+
+   write_module("country");
+}
+
+########################################
+sub do_country_iso {
+
+   ###
+   ### The first set we'll do is the ISO 3166-1 2-character
+   ### codes. These country names must be adjusted (since they're all
+   ### uppercase). Also, the lines all end with some strange
+   ### unprintable character.
+   ###
+
+   my $codeset = "alpha2";
+
+   system("wget -N -q $country_iso_url");
+   my @in = `cat $country_iso_file`;
+   chomp(@in);
+   chop(@in);
+
+   # File is a line of text followed by a blank line followed by the
+   # codes as ORIGNAME;CODE .
+
+   if ($in[1]  ||  $in[2] !~ /^$country_iso_1st;/) {
+      die "ERROR [iso]: country code file format changed!\n";
+   }
+
+   shift(@in);
+   shift(@in);
+
+   foreach my $line (@in) {
+      if ($line !~ /^(.*);(.*)$/) {
+         die "ERROR [iso]: line invalid\n" .
+             "             $line\n";
+      }
+      my($country,$code) = ($1,$2);
+      $code = lc($code);
+      if (exists $country_iso_orig{$country}) {
+         $country = $country_iso_orig{$country};
+      } else {
+         print "WARNING [iso]: unknown country: $country\n";
+         next;
+      }
+
+      my $countryID = $CountryID++;
+
+      $Country{$countryID}                  = [ $country ];
+      $CountryAlias{lc($country)}           = [ $countryID, 0 ];
+      $Code2CountryID{$codeset}{$code}      = [ $countryID, 0 ];
+      $CountryID2Code{$codeset}{$countryID} = $code;
+   }
+}
+
+########################################
+sub do_country_un {
+
+   print "\nINFO [un]: expect Channel Islands\n";
+
+   ###
+   ### The UN data contains most of the alpha-3 and numeric code sets.
+   ###
+
+   system("wget -N -q $country_un_url");
+   my @in = `cat $country_un_file`;
+   chomp(@in);
+   my $in = join("",@in);
+
+   # Clean up some things that could cause problems in parsing:
+
+   strip_tags(\$in,1,"br","p","strong","div");
+   $in =~ s,\&nbsp;, ,g;
+   $in =~ s,\s+, ,g;
+
+   # Look for a table who's first row has the header:
+   #    ISO ALPHA-3 code
+
+   my $found = jump_to_row(\$in,"ISO ALPHA-3 code");
+   if (! $found) {
+      die "ERROR [un]: country code file format changed!\n";
+   }
+
+   while (1) {
+      my @row = get_row("un",\$in);
+      last  if (! @row);
+
+      my($num,$country,$alpha3) = @row;
+      $alpha3 = lc($alpha3);
+
+      if ($num) {
+         if ($num !~ /^\d+$/  ||  length($num) > 3) {
+           print "WARNING [un]: Invalid numeric code: $country => $num\n";
+           next;
+        }
+      }
+
+      if ($alpha3  &&  $alpha3 !~ /^[a-z][a-z][a-z]$/) {
+         print "WARNING [un]: Invalid alpha-3 code: $country => $alpha3\n";
+         next;
+      }
+
+      if (exists $country_un_orig{$country}) {
+         $country = $country_un_orig{$country};
+      }
+
+      my($err,$countryID,$i,$t) = get_countryID("un",$country);
+      next  if ($err);
+
+      if ($t eq "new") {
+         print "INFO [un]: new country: $alpha3/$num\t$country\n";
+      }
+
+      if ($num) {
+         $num = "0$num"  while (length($num) < 3);
+         $Code2CountryID{"num"}{$num} = [ $countryID, $i ];
+         $CountryID2Code{"num"}{$countryID} = $num;
+      }
+
+      if ($alpha3) {
+         $Code2CountryID{"alpha3"}{$alpha3} = [ $countryID, $i ];
+         $CountryID2Code{"alpha3"}{$countryID} = $alpha3;
+      }
+   }
+}
+
+########################################
+sub do_country_nga {
+
+   print "\nINFO [nga]: expect Serbia, Ashmore, Baker, Bassas, Clipperton,\n" .
+           "            Coral, Europa, Gaza, Glorioso, Howland, Jan Mayen,\n" .
+           "            Jarvis, Johnston, Juan, Kingman, Midway, Navassa, Palmyra,\n" .
+           "            Paracel, Spratly, Svalbard, Tromelin, Wake, West\n";
+
+   ###
+   ### The NGA data contains the FIPS 10 codes
+   ###
+
+   system("wget -N -q $country_nga_url");
+   my @in = `cat $country_nga_file`;
+   chomp(@in);
+   my $in = join("",@in);
+
+   # Clean up some things that could cause problems in parsing:
+
+   strip_tags(\$in,1,"br","p","strong","div");
+   $in =~ s,\Q[United States}\E,,;       # A horrible typo in the HTML
+   $in =~ s,\&nbsp;, ,g;
+   $in =~ s,Other:, ,g;
+   $in =~ s,\(see note[^\)]*\), ,g;
+   $in =~ s,\[[^\]]*\], ,g;
+   $in =~ s,\s+, ,g;
+
+   # Look for a table who's first row has the header:
+   #    SHORT FORM NAME
+   # and then a table with the header:
+   #    Short Form Name
+
+   foreach my $table ("SHORT FORM NAME","Short Form Name") {
+      my $found = jump_to_row(\$in,$table);
+      if (! $found) {
+         die "ERROR [nga]: country code file format changed!\n";
+      }
+
+      while (1) {
+         my @row = get_row("nga",\$in);
+         last  if (! @row);
+
+         my($short,$long,$code) = @row;
+         $code  = uc($code);
+         next  if ($code eq "N/A");
+         next  if (exists $country_nga_ignore{$short});
+
+         if ($code !~ /^[A-Z][A-Z]$/) {
+            print "WARNING [nga]: Invalid code: $short => $code\n";
+         }
+
+         if ($short eq "None") {
+            print "ERROR [nga]: no short definition: $code  $long\n";
+            next;
+         }
+         $long  = ""  if ($long  eq "None");
+
+         if (exists $country_nga_orig{$short}) {
+            $short = $country_nga_orig{$short};
+         }
+         if (exists $country_nga_orig{$long}) {
+            $long = $country_nga_orig{$long};
+         }
+
+         my($countryID,$i);
+         my($err,$c,$ii,$t) = get_countryID("nga",$short,1);
+         next  if ($err);
+
+         if ($t ne "new") {
+            ($countryID,$i) = ($c,$ii);
+         } else {
+            ($err,$c,$ii,$t) = get_countryID("nga",$long,1);
+            ($countryID,$i) = ($c,-1);
+            if ($t eq "new") {
+               print "INFO [nga]: new country: $code\t$short\n";
+            }
+         }
+
+         if ($countryID == -1) {
+            # New country
+            $countryID = $CountryID++;
+            $i = 0;
+            $Country{$countryID} = [ $short ];
+            $CountryAlias{lc($short)} = [ $countryID, $i ];
+
+         } elsif ($i == -1) {
+            # $short is a new alias
+            push @{ $Country{$countryID} },$short;
+            $i = $#{ $Country{$countryID} };
+            $CountryAlias{lc($short)} = [ $countryID, $i ];
+         }
+
+         if ($long  &&
+             ! exists $CountryAlias{lc($long)}) {
+            # $long is a new alias
+            push @{ $Country{$countryID} },$long;
+            $i = $#{ $Country{$countryID} };
+            $CountryAlias{lc($long)} = [ $countryID, $i ];
+         }
+
+         $Code2CountryID{"fips"}{$code} = [ $countryID, $i ];
+         $CountryID2Code{"fips"}{$countryID} = $code;
+      }
+   }
+}
+
+########################################
+sub do_country_iana {
+
+   print "\nINFO [iana]: expect Acension, European, Soviet, Portuguese\n";
+
+   ###
+   ### The IANA data contains the domain names
+   ###
+
+   system("wget -N -q $country_iana_url");
+   my @in = `cat $country_iana_file`;
+   chomp(@in);
+   my $in = join("",@in);
+
+   # Clean up some things that could cause problems in parsing:
+
+   strip_tags(\$in,1,"a");
+   $in =~ s,\&nbsp;, ,g;
+   $in =~ s,\(being phased out\), ,g;
+   $in =~ s,\s+, ,g;
+
+   # Look for a table who's first row has the header:
+   #    Sponsoring Organisation
+
+   my $found = jump_to_row(\$in,"Sponsoring Organisation");
+   if (! $found) {
+      die "ERROR [iana]: country code file format changed!\n";
+   }
+
+   while (1) {
+      my @row = get_row("iana",\$in);
+      last  if (! @row);
+
+      my($dom,$type,$country) = @row;
+      next  unless ($type eq "country-code");
+      $dom     =~ s/^\.//;
+      $country =~ s,<br.*,,;
+
+      if (exists $country_un_orig{$country}) {
+         $country = $country_un_orig{$country};
+      }
+
+      my($err,$countryID,$i,$t) = get_countryID("iana",$country);
+      next  if ($err);
+
+      if ($t eq "new") {
+         print "INFO [iana]: new country: $dom\t$country\n";
+      }
+
+      $Code2CountryID{"dom"}{$dom} = [ $countryID, $i ];
+      $CountryID2Code{"dom"}{$countryID} = $dom;
+   }
+}
+
+########################################
+sub do_country_cia {
+
+   print "\nINFO [cia]: expect Antarctica, Bouvet, British, Christmas, Cocos,\n" .
+         "            France (Metro), French, Heard, Kosovo, Montenegro,\n" .
+         "            Saint Barth, Saint Martin, Serbia, Taiwan, US\n";
+
+   ###
+   ### The CIA data is used to check:
+   ###    alpha-2, alpha-3, numeric, fips 10
+   ###
+
+   system("wget -N -q $country_cia_url");
+   my @in = `cat $country_cia_file`;
+   chomp(@in);
+   my $in = join("",@in);
+   $in =~ s/\015/ /sg;
+
+   # Clean up some things that could cause problems in parsing:
+
+   strip_tags(\$in,1,"br","p","strong","div","a","b","img");
+   $in =~ s,\&nbsp;, ,g;
+   $in =~ s,\s+, ,g;
+
+   # Move to a table with "Entity" as one of the entries. This
+   # table is followed by the entires.
+
+   my $found = jump_to_entry(\$in,"Entity");
+   if (! $found) {
+      die "ERROR [cia]: country code file format changed!\n";
+   }
+
+   # Each entry is quite complicated. Each is a single table (with a
+   # table nested in it) of the form:
+   #
+   #   <table>
+   #      <tr>
+   #         <td>COUNTRY</td>
+   #         <td>FIPS</td>
+   #         <td>
+   #            <table>
+   #               <tr>
+   #                  <td>ALPHA-2</td>
+   #                  <td>ALPHA-3</td>
+   #                  <td>NUMERIC</td>
+   #            </table>
+   #         </td>
+   #         ...
+   #     </tr>
+   #     ...
+   #  </table>
+   #
+   # After all of the "A" entries, a special table containing the headers
+   # is given again.
+
+   while (1) {
+
+      #
+      # Read the next entry
+      #
+
+      my($country,$fips,$alpha2,$alpha3,$num,$stanag,$dom);
+
+      my $found   = jump_to_table(\$in);
+      if (! $found) {
+         print "ERROR [cia]: malformed file\n";
+         last;
+      }
+      $country = get_entry(\$in);
+      if (! $country) {
+         # The first entry is empty if it's at the end of the entries
+         # for a given letter.
+         $found = jump_to_entry(\$in,"Entity");
+         if (! $found) {
+            die "ERROR [cia]: country code file format changed!\n";
+         }
+         next;
+      }
+
+      if (exists $country_cia_orig{$country}) {
+         $country = $country_cia_orig{$country};
+      }
+
+      $fips    = uc(get_entry(\$in));
+      $found   = jump_to_table(\$in);
+      if (! $found) {
+         print "ERROR [cia]: malformed file\n";
+         last;
+      }
+      $alpha2  = lc(get_entry(\$in));
+      $alpha3  = lc(get_entry(\$in));
+      $num     = get_entry(\$in);
+      $stanag  = get_entry(\$in);
+      $dom     = uc(get_entry(\$in));
+      $dom     =~ s/^\.//;
+
+      next  if (exists $country_cia_ignore{$country});
+
+      $alpha2 = $country_cia_codes{"alpha2"}{$country}
+        if (exists $country_cia_codes{"alpha2"}{$country});
+      $alpha3 = $country_cia_codes{"alpha3"}{$country}
+        if (exists $country_cia_codes{"alpha3"}{$country});
+      $num = $country_cia_codes{"num"}{$country}
+        if (exists $country_cia_codes{"num"}{$country});
+      $fips = $country_cia_codes{"fips"}{$country}
+        if (exists $country_cia_codes{"fips"}{$country});
+      $dom  = $country_cia_codes{"dom"}{$country}
+        if (exists $country_cia_codes{"dom"}{$country});
+
+      #
+      # Get the countryID if the country or ANY of the codes match.
+      #
+
+      my($err,$countryID,$i,$type) = get_countryID("cia",$country,1);
+      next  if ($err);
+
+      if ($countryID == -1  &&  $alpha2 ne "-") {
+         if (exists $Code2CountryID{"alpha2"}{$alpha2}) {
+            ($countryID,$i) = @{ $Code2CountryID{"alpha2"}{$alpha2} };
+         }
+      }
+
+      if ($countryID == -1  &&  $alpha3 ne "-") {
+         if (exists $Code2CountryID{"alpha3"}{$alpha3}) {
+            ($countryID,$i) = @{ $Code2CountryID{"alpha3"}{$alpha3} };
+         }
+      }
+
+      if ($countryID == -1  &&  $num ne "-") {
+         if (exists $Code2CountryID{"num"}{$num}) {
+            ($countryID,$i) = @{ $Code2CountryID{"num"}{$num} };
+         }
+      }
+
+      if ($countryID == -1  &&  $fips ne "-") {
+         if (exists $Code2CountryID{"fips"}{$fips}) {
+            ($countryID,$i) = @{ $Code2CountryID{"fips"}{$fips} };
+         }
+      }
+
+      if ($countryID == -1  &&  $dom ne "-") {
+         if (exists $Code2CountryID{"dom"}{$dom}) {
+            ($countryID,$i) = @{ $Code2CountryID{"dom"}{$dom} };
+         }
+      }
+
+      if ($countryID == -1) {
+         $countryID = $CountryID++;
+         $i = 0;
+         $Country{$countryID} = [ $country ];
+         $CountryAlias{lc($country)} = [ $countryID, $i ];
+      }
+
+      #
+      # Now check that any previously defined values match the
+      # CIA data.
+      #
+
+      if ($alpha2 ne "-") {
+         my $err = check_code("cia","alpha2",$alpha2,$country,$countryID);
+         next  if ($err);
+      }
+
+      if ($alpha3 ne "-") {
+         my $err = check_code("cia","alpha3",$alpha3,$country,$countryID);
+         next  if ($err);
+      }
+
+      if ($num ne "-") {
+         my $err = check_code("cia","num",$num,$country,$countryID);
+         next  if ($err);
+      }
+
+      if ($fips ne "-") {
+         my $err = check_code("cia","fips",$fips,$country,$countryID);
+         next  if ($err);
+      }
+
+      if ($dom ne "-") {
+         my $err = check_code("cia","dom",$dom,$country,$countryID);
+         next  if ($err);
+      }
+
+      last  if ($country eq $country_cia_last);
+   }
+}
+
+########################################
+sub check_code {
+   my($type,$codeset,$code,$country,$countryID) = @_;
+
+   # Check to make sure that the code is defined.
+
+   if (exists $Code2CountryID{$codeset}{$code}) {
+      return _check_code_exists($type,$codeset,$code,$country,$countryID);
+   } else {
+      return _check_code_new($type,$codeset,$code,$country,$countryID);
+   }
+}
+
+sub _check_code_exists {
+   my($type,$codeset,$code,$country,$countryID) = @_;
+
+   # Check the countryID for the code. It must be the same as the one
+   # passed in.
+
+   my $old_countryID = $Code2CountryID{$codeset}{$code}[0];
+   if ($countryID != $old_countryID) {
+      print "ERROR [$type]: countryID mismatch in code: [$codeset, $country, $code, $countryID != $old_countryID ]\n";
+      return 1;
+   }
+
+   # If the country is defined, it must be the same CountryID. If it
+   # is not, create a new alias.
+
+   if (exists $CountryAlias{lc($country)}) {
+
+      my $alt_countryID = $CountryAlias{lc($country)}[0];
+
+      if ($countryID != $alt_countryID) {
+         print "ERROR [$type]: countryID mismatch in country: [$codeset, $country, $code, $countryID != $alt_countryID ]\n";
+         return 1;
+      }
+
+   } else {
+      push @{ $Country{$countryID} },$country;
+      my $i = $#{ $Country{$countryID} };
+      $CountryAlias{lc($country)} = [ $countryID, $i ];
+   }
+}
+
+# This is a new code.
+sub _check_code_new {
+   my($type,$codeset,$code,$country,$countryID) = @_;
+
+   print "INFO [$type]: New code: $codeset [$code] => $country\n";
+
+   # If this country name isn't defined, create it.
+
+   my $i;
+   if (exists $CountryAlias{lc($country)}) {
+      $i = $CountryAlias{lc($country)}[1];
+   } else {
+      push @{ $Country{$countryID} },$country;
+      $i = $#{ $Country{$countryID} };
+      $CountryAlias{lc($country)} = [ $countryID, $i ];
+   }
+
+   # This country name is the canonical name for the code.
+
+   $CountryID2Code{$codeset}{$countryID} = $code;
+   $Code2CountryID{$codeset}{$code} = [ $countryID, $i ];
+
+   return 0;
+}
+
+########################################
+sub get_countryID {
+   my($type,$country,$no_create) = @_;
+
+   my($countryID,$i,$t);
+   if (exists $CountryAlias{lc($country)}) {
+      # The country is the same name as one previously defined
+      ($countryID,$i) = @{ $CountryAlias{lc($country)} };
+      $t = "same";
+
+   } elsif (exists $country_alias{$country}) {
+      # It's a new alias for an existing country
+      my $c = $country_alias{$country};
+      if (! exists $CountryAlias{lc($c)}) {
+         print "WARNING [$type]: alias referenced before it is defined: $country => $c\n";
+         return (1);
+      }
+      $countryID = $CountryAlias{lc($c)}[0];
+      push @{ $Country{$countryID} },$country;
+      $i = $#{ $Country{$countryID} };
+      $CountryAlias{lc($country)} = [ $countryID, $i ];
+      $t = "alias";
+
+   } else {
+      # It's a new country.
+      if ($no_create) {
+         return(0,-1,-1,"new");
+      }
+      $countryID = $CountryID++;
+      $i         = 0;
+      $Country{$countryID} = [ $country ];
+      $CountryAlias{lc($country)} = [ $countryID, $i ];
+      $t = "new";
+   }
+
+   return(0,$countryID,$i,$t);
+}
+
+############################################################################
+# DO_LANGUAGE
+############################################################################
+
+sub do_language {
+   print "Language codes...\n";
+
+   do_language_iso();
+   print_table("language")  if ($DEBUG == 2);
+
+   # Go through all aliases to pick up any that haven't already been
+   # added (since some aliases are for human convenience rather than
+   # dealing with variations between codesets).
+   do_aliases("language");
+   print_table("language")  if ($DEBUG);
+
+   write_module("language");
+}
+
+########################################
+sub do_language_iso {
+   ###
+   ### The first set we'll do is the ISO codes.
+   ###
+
+   system("wget -N -q $language_iso_url");
+   open(my $in,'<:encoding(utf8)',$language_iso_file);
+   my @in = <$in>;
+   close($in);
+   chomp(@in);
+
+   # File is a set of lines of fields delimited by "|". Fields are:
+   #
+   #    alpha3
+   #    term
+   #    alpha2
+   #    English names (semicolon separated list)
+   #    French name
+
+   foreach my $line (@in) {
+      my($alpha3,$term,$alpha2,$english,$french) = split(/\|/,$line);
+      # The first line has some binary characters at the start.
+      if (length($alpha3)>3) {
+         $alpha3 = substr($alpha3,length($alpha3)-3);
+      }
+
+      if (exists $language_iso_orig{$english}) {
+         $english = $language_iso_orig{$english};
+      }
+      my $languageID = $LanguageID++;
+      my @language = split(/\s*;\s*/,$english);
+
+      $Language{$languageID}                  = [ @language ];
+      for (my $i=0; $i<=$#language; $i++) {
+         my $language = $language[$i];
+         $LanguageAlias{lc($language)}         = [ $languageID, $i ];
+      }
+
+      if ($alpha3) {
+         $Code2LanguageID{"alpha3"}{$alpha3}     = [ $languageID, 0 ];
+         $LanguageID2Code{"alpha3"}{$languageID} = $alpha3;
+      }
+
+      if ($term) {
+         $Code2LanguageID{"term"}{$term}         = [ $languageID, 0 ];
+         $LanguageID2Code{"term"}{$languageID}   = $term;
+      }
+
+      if ($alpha2) {
+         $Code2LanguageID{"alpha2"}{$alpha2}     = [ $languageID, 0 ];
+         $LanguageID2Code{"alpha2"}{$languageID} = $alpha2;
+      }
+   }
+}
+
+############################################################################
+# DO_CURRENCY
+############################################################################
+
+sub do_currency {
+   print "Currency codes...\n";
+
+   do_currency_iso();
+   print_table("currency")  if ($DEBUG == 2);
+
+   # Go through all aliases to pick up any that haven't already been
+   # added (since some aliases are for human convenience rather than
+   # dealing with variations between codesets).
+   do_aliases("currency");
+   print_table("currency")  if ($DEBUG);
+
+   write_module("currency");
+}
+
+########################################
+sub do_currency_iso {
+   ###
+   ### The first set we'll do is the ISO 4217 codes.
+   ###
+
+   system("wget -N -q $currency_iso_url");
+   my @in = `cat $currency_iso_file`;
+   chomp(@in);
+   my $in = join("",@in);
+
+   # Clean up some things that could cause problems in parsing:
+
+   strip_tags(\$in,1,"p","a","strong","div");
+   $in =~ s,\&nbsp;, ,g;
+   $in =~ s,†,,g;
+   $in =~ s,‡,,g;
+   $in =~ s,\s+, ,g;
+
+   # Look for a table who's first row has the header:
+   #    Entity
+
+   my $found = jump_to_row(\$in,"Entity");
+   if (! $found) {
+      die "ERROR [iso]: currency code file format changed!\n";
+   }
+
+   LINE: while (1) {
+      my @row = get_row("iso",\$in);
+      last  if (! @row);
+
+      my($ent,$currencies,$alphas,$nums) = @row;
+      $nums     = ""  if ($nums eq "Nil");
+      next  if (! $alphas  &&  ! $nums);
+
+      my(@currency,@num,@alpha,$done);
+      @currency = split(/<br\s*\/><br\s*\/>/,$currencies);
+      @num      = split(/<br\s*\/><br\s*\/>/,$nums);
+      @alpha    = split(/<br\s*\/><br\s*\/>/,$alphas);
+
+      if ( ($nums    &&  $#num   != $#currency)  ||
+           ($alphas  &&  $#alpha != $#currency) ) {
+         print "WARNING [iso]: Invalid line: $currencies => $alphas, $nums\n";
+         next;
+      }
+
+      for (my $i=0; $i<=$#currency; $i++) {
+         my $currency = $currency[$i];
+         my $num      = (@num   ? $num[$i]   : "");
+         my $alpha    = (@alpha ? $alpha[$i] : "");
+         $done        = 1  if ($alpha eq $currency_iso_last);
+
+         if (exists $currency_iso_orig{$currency}) {
+            $currency = $currency_iso_orig{$currency};
+         }
+
+         if ($num) {
+            if ($num !~ /^\d+$/  ||  length($num) > 3) {
+               print "WARNING [iso]: Invalid numeric code: $currency => $num\n";
+               next LINE;
+            }
+         }
+
+         $alpha = uc($alpha);
+         if ($alpha  &&  $alpha !~ /^[A-Z][A-Z][A-Z]$/) {
+            print "WARNING [iso]: Invalid alpha code: $currency => $alpha\n";
+            next LINE;
+         }
+
+         next  if (exists $currency_iso_ignore{$alpha});
+
+         # There's a lot of duplication, so make sure that if this code
+         # exists, it is consistant.
+
+         my $new = 1;
+         my @currencyID;
+         if (exists $Code2CurrencyID{"num"}{$num}) {
+            $new = 0;
+            my($currencyID,$i) = @{ $Code2CurrencyID{"num"}{$num} };
+            push(@currencyID,$currencyID);
+         }
+         if (exists $Code2CurrencyID{"alpha"}{$alpha}) {
+            $new = 0;
+            my($currencyID,$i) = @{ $Code2CurrencyID{"alpha"}{$alpha} };
+            push(@currencyID,$currencyID);
+         }
+
+         if ($#currencyID == 1) {
+            if ($currencyID[0] != $currencyID[1]) {
+               print "WARNING [iso]: CurrencyID mismatch: $currency => $alpha,$num\n";
+               next LINE;
+            }
+         }
+
+         my $currencyID;
+         if ($new) {
+            $currencyID = $CurrencyID++;
+            $Currency{$currencyID} = [ $currency ];
+            $CurrencyAlias{lc($currency)} = [ $currencyID, 0 ]
+         } else {
+            $currencyID = $currencyID[0];
+         }
+
+         if ($num) {
+            $num = "0$num"  while (length($num) < 3);
+            $Code2CurrencyID{"num"}{$num} = [ $currencyID, 0 ];
+            $CurrencyID2Code{"num"}{$currencyID} = $num;
+         }
+
+         if ($alpha) {
+            $Code2CurrencyID{"alpha"}{$alpha} = [ $currencyID, 0 ];
+            $CurrencyID2Code{"alpha"}{$currencyID} = $alpha;
+         }
+
+      }
+
+      last  if ($done);
+   }
+}
+
+############################################################################
+# DO_SCRIPT
+############################################################################
+
+sub do_script {
+   print "Script codes...\n";
+
+   do_script_iso();
+   print_table("script")  if ($DEBUG == 2);
+
+   # Go through all aliases to pick up any that haven't already been
+   # added (since some aliases are for human convenience rather than
+   # dealing with variations between codesets).
+   do_aliases("script");
+   print_table("script")  if ($DEBUG);
+
+   write_module("script");
+}
+
+########################################
+sub do_script_iso {
+   ###
+   ### The first set we'll do is the ISO 15924 codes. We
+   ### can get a zip file which contains the data.
+   ###
+
+   system("wget -N -q $script_iso_url");
+   my $zip = Archive::Zip->new($script_iso_file);
+
+   my @members = grep(/^iso15924.*\.txt/,$zip->memberNames());
+   if (@members != 1) {
+      die "ERROR [iso]: zip file changed format\n";
+   }
+   my($file) = @members;
+   $zip->extractMember($file,$script_iso_tmp);
+
+   #
+   # The zip file contains a series of lines in the form:
+   #   alpha;numeric;english;...
+   # The data is in UTF-8.
+   #
+   # Every line has an unprintable character at the end.
+   #
+
+   open(my $in,'<:encoding(utf8)',$script_iso_tmp);
+   my @in = <$in>;
+   close($in);
+   chomp(@in);
+   chop(@in);
+
+   foreach my $line (@in) {
+      next  if (! $line  ||  $line =~ /^\043/);
+      my($alpha,$num,$script) = split(/;/,$line);
+      $alpha = ucfirst(lc($alpha));
+      next  if (exists $script_iso_ignore{$alpha});
+
+      if (exists $script_iso_orig{$script}) {
+         $script = $script_iso_orig{$script};
+      }
+      my $scriptID = $ScriptID++;
+
+      $Script{$scriptID}                 = [ $script ];
+      $ScriptAlias{lc($script)}          = [ $scriptID, 0 ];
+
+      $Code2ScriptID{"alpha"}{$alpha}    = [ $scriptID, 0 ];
+      $ScriptID2Code{"alpha"}{$scriptID} = $alpha;
+
+      $Code2ScriptID{"num"}{$num}        = [ $scriptID, 0 ];
+      $ScriptID2Code{"num"}{$scriptID}   = $num;
+   }
+}
+
+############################################################################
+# PRINT_TABLE
+############################################################################
+
+sub _type_hashes {
+   my($caller) = @_;
+
+   my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID);
+
+   if      ($caller eq "country") {
+      $type_alias   = \%country_alias;
+      $TypeAlias    = \%CountryAlias;
+      $Type         = \%Country;
+      $TypeID2Code  = \%CountryID2Code;
+      $Code2TypeID  = \%Code2CountryID;
+
+   } elsif ($caller eq "language") {
+      $type_alias   = \%language_alias;
+      $TypeAlias    = \%LanguageAlias;
+      $Type         = \%Language;
+      $TypeID2Code  = \%LanguageID2Code;
+      $Code2TypeID  = \%Code2LanguageID;
+
+   } elsif ($caller eq "currency") {
+      $type_alias   = \%currency_alias;
+      $TypeAlias    = \%CurrencyAlias;
+      $Type         = \%Currency;
+      $TypeID2Code  = \%CurrencyID2Code;
+      $Code2TypeID  = \%Code2CurrencyID;
+
+   } elsif ($caller eq "script") {
+      $type_alias   = \%script_alias;
+      $TypeAlias    = \%ScriptAlias;
+      $Type         = \%Script;
+      $TypeID2Code  = \%ScriptID2Code;
+      $Code2TypeID  = \%Code2ScriptID;
+   }
+
+   return($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID);
+}
+
+sub print_table {
+   my($caller) = @_;
+
+   my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID)
+     = _type_hashes($caller);
+
+   foreach my $typeID (sort keys %$Type) {
+      my @type = @{ $$Type{$typeID} };
+      my $i = 0;
+
+      my $type = shift(@type);
+      if (length($type) < 40) {
+         $type .= " "x(40-length($type));
+      } else {
+         $type = substr($type,0,40);
+      }
+
+      print "${typeID}[$i] = $type  ";
+      foreach my $codeset (keys %$Code2TypeID) {
+         my $field = "";
+         if (exists $$TypeID2Code{$codeset}{$typeID}) {
+            my $code = $$TypeID2Code{$codeset}{$typeID};
+            my($code_id,$code_i) = @{ $$Code2TypeID{$codeset}{$code} };
+            $field = "$code [$code_id,$code_i]";
+            $field .= " ERR"  if ($code_id != $typeID);
+         }
+         $field = $field . " "x(18-length($field));
+         print $field;
+      }
+      print "\n";
+      foreach $type (@type) {
+         $i++;
+         if (length($type) > 40) {
+            $type = substr($type,0,40);
+         }
+         print "    [$i] = $type\n";
+      }
+   }
+}
+
+############################################################################
+# DO_ALIASES
+############################################################################
+
+sub do_aliases {
+   my($caller) = @_;
+
+   my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID)
+     = _type_hashes($caller);
+
+   # Add remaining aliases.
+
+   foreach my $alias (keys %$type_alias) {
+      my $type = $$type_alias{$alias};
+
+      next  if (exists $$TypeAlias{lc($type)}  &&
+                exists $$TypeAlias{lc($alias)});
+
+      if (! exists $$TypeAlias{lc($type)}  &&
+          ! exists $$TypeAlias{lc($alias)}) {
+         print "WARNING: unused type in alias list: $type\n";
+         print "WARNING: unused type in alias list: $alias\n";
+         next;
+      }
+
+      my ($typeID);
+      if (exists $$TypeAlias{lc($type)}) {
+         $typeID = $$TypeAlias{lc($type)}[0];
+         $type   = $alias;
+      } else {
+         $typeID = $$TypeAlias{lc($alias)}[0];
+      }
+
+      push @{ $$Type{$typeID} },$type;
+      my $i = $#{ $$Type{$typeID} };
+      $$TypeAlias{lc($type)} = [ $typeID, $i ];
+   }
+}
+
+############################################################################
+# WRITE_MODULE
+############################################################################
+
+sub write_module {
+   my($type) = @_;
+
+   my($module,%hashes,$id);
+
+   if ($type eq "country") {
+      $module = $CountryModule;
+      %hashes = ("id2names"  => "Country",
+                 "alias2id"  => "CountryAlias",
+                 "code2id"   => "Code2CountryID",
+                 "id2code"   => "CountryID2Code");
+      $id     = $CountryID;
+   } elsif ($type eq "language") {
+      $module = $LanguageModule;
+      %hashes = ("id2names"  => "Language",
+                 "alias2id"  => "LanguageAlias",
+                 "code2id"   => "Code2LanguageID",
+                 "id2code"   => "LanguageID2Code");
+      $id     = $LanguageID;
+   } elsif ($type eq "currency") {
+      $module = $CurrencyModule;
+      %hashes = ("id2names"  => "Currency",
+                 "alias2id"  => "CurrencyAlias",
+                 "code2id"   => "Code2CurrencyID",
+                 "id2code"   => "CurrencyID2Code");
+      $id     = $CurrencyID;
+   } elsif ($type eq "script") {
+      $module = $ScriptModule;
+      %hashes = ("id2names"  => "Script",
+                 "alias2id"  => "ScriptAlias",
+                 "code2id"   => "Code2ScriptID",
+                 "id2code"   => "ScriptID2Code");
+      $id     = $ScriptID;
+   }
+
+   my $file = "$ModDir/$module.pm";
+   if (-f $file) {
+      system("mv $file $file.bak");
+   }
+
+   my $out = new IO::File;
+   $out->open(">$file");
+   my $timestamp   = `date`;
+   chomp($timestamp);
+
+   my $podstr = '=pod';    # so the CPAN indexer won't treat this as a POD file
+
+   print $out "package Locale::Codes::$module;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: $timestamp
+
+$podstr
+
+=head1 NAME
+
+Locale::Codes::$module - $type codes for the Locale::$module module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::$module module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck\@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw(\$VERSION);
+\$VERSION='3.12';
+
+\$Locale::Codes::Data{'$type'}{'id'} = '$id';
+
+";
+
+   foreach my $h qw(id2names alias2id code2id id2code) {
+      my $hash = $hashes{$h};
+      print $out "\$Locale::Codes::Data{'$type'}{'$h'} = {\n";
+      _write_hash($out,$hash);
+
+      print $out "};\n\n";
+   }
+
+   print $out "1;\n";
+
+   $out->close();
+}
+
+sub _write_hash {
+   my($out,$hashname) = @_;
+
+   no strict 'refs';
+   my %hash = %$hashname;
+   use strict 'refs';
+   _write_subhash($out,3,\%hash);
+}
+
+sub _write_subhash {
+   my($out,$indent,$hashref) = @_;
+
+   my %hash = %$hashref;
+   my $ind  = " "x$indent;
+
+   foreach my $key (sort keys %hash) {
+      my $val = $hash{$key};
+      if (ref($val) eq "HASH") {
+         print $out "${ind}q($key) => {\n";
+         _write_subhash($out,$indent+3,$val);
+         print $out "${ind}   },\n";
+      } elsif (ref($val) eq "ARRAY") {
+         print $out "${ind}q($key) => [\n";
+         _write_sublist($out,$indent+3,$val);
+         print $out "${ind}   ],\n";
+      } else {
+         print $out "${ind}q($key) => q($val),\n";
+      }
+   }
+}
+
+sub _write_sublist {
+   my($out,$indent,$listref) = @_;
+
+   my @list = @$listref;
+   my $ind  = " "x$indent;
+
+   foreach my $val (@list) {
+      if (ref($val) eq "HASH") {
+         print $out "${ind}{\n";
+         _write_subhash($out,$indent+3,$val);
+         print $out "${ind}},\n";
+      } elsif (ref($val) eq "ARRAY") {
+         print $out "${ind}[\n";
+         _write_sublist($out,$indent+3,$val);
+         print $out "${ind}],\n";
+      } else {
+         print $out "${ind}q($val),\n";
+      }
+   }
+}
+
+############################################################################
+# DO_CLEAN
+############################################################################
+
+sub do_clean {
+   print "Cleaning...\n";
+
+   system("rm -f $country_iso_file");
+   system("rm -f $country_un_file");
+   system("rm -f $country_nga_file");
+   system("rm -f $country_cia_file");
+   system("rm -f $country_iana_file");
+   system("rm -f $language_iso_file");
+   system("rm -f $currency_iso_file");
+   system("rm -f $script_iso_file");
+   system("rm -f $script_iso_tmp");
+   system("rm -rf __MACOSX");
+}
+
+############################################################################
+# HTML SCRAPING
+############################################################################
+
+sub get_row {
+   my($type,$inref) = @_;
+
+   return ()  if ($$inref !~ m,^\s*<tr,);
+
+   if ($$inref !~ s,^(.*?)</tr[^>]*>,,) {
+      die "ERROR [$type]: malformed HTML\n";
+   }
+   my $row = $1;
+
+   if ($row =~ m,<table,) {
+      die "ERROR [$type]: embedded table\n";
+   }
+
+   my @row;
+   while ($row =~ s,(?:.*?)<(td|th)[^>]*>\s*(.*?)\s*</\1[^>]*>,,) {
+      my $val = $2;
+      push(@row,$val);
+   }
+
+   return @row;
+}
+
+sub jump_to_row {
+   my($inref,$header) = @_;
+
+   if ($$inref =~ s,(.*?)\Q$header\E(.*?)</tr[^>]*>(.*?)(?=<tr),,) {
+      return 1;
+   } else {
+      return 0;
+   }
+}
+
+sub jump_to_entry {
+   my($inref,$value) = @_;
+
+   if ($$inref =~ s,(.*?)(?=<(?:td|th)[^>]*>\s*\Q$value\E\s*),,) {
+      return 1;
+   } else {
+      return 0;
+   }
+}
+
+sub jump_to_table {
+   my($inref) = @_;
+
+   if ($$inref =~ s,(.*?)(?=<table),,) {
+      return 1;
+   } else {
+      return 0;
+   }
+}
+
+sub get_entry {
+   my($inref) = @_;
+
+   if ($$inref =~ s,.*?<td[^>]*>\s*(.*?)\s*</td[^>]*>,,) {
+      return $1;
+   }
+   return "";
+}
+
+sub strip_tags {
+   my($inref,$close,@tags) = @_;
+
+   foreach my $tag (@tags) {
+      if ($close) {
+         $$inref =~ s,</?$tag[^>]*>, ,g;
+      } else {
+         $$inref =~ s,<$tag[^>]*>, ,g;
+      }
+   }
+}
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/internal/ispell.isp b/cpan/Locale-Codes/internal/ispell.isp
new file mode 100644 (file)
index 0000000..e76fe64
--- /dev/null
@@ -0,0 +1,30 @@
+bo
+bol
+Bower's
+bR
+br
+brb
+Centre
+CODESET
+CODESETs
+CPAN
+CRE
+EUR
+Factbook
+fi
+fips
+Geospatial
+gf
+heb
+Hennecke
+IANA
+num
+Phnx
+Plurinational
+terminologic
+tv
+uk
+XTS
+Zxxx
+Zyyy
+Zzzz
diff --git a/cpan/Locale-Codes/lib/Locale/Codes.pm b/cpan/Locale-Codes/lib/Locale/Codes.pm
new file mode 100644 (file)
index 0000000..82516b9
--- /dev/null
@@ -0,0 +1,628 @@
+package Locale::Codes;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+require 5.002;
+
+use Carp;
+
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
+
+# This module is not called directly... %Data is filled in by the
+# calling modules.
+
+use vars qw($VERSION %Data);
+
+# $Data{ TYPE }{ code2id   }{ CODESET } { CODE }  = [ ID, I ]
+#              { id2code   }{ CODESET } { ID }    = CODE
+#              { id2names  }{ ID }                = [ NAME, NAME, ... ]
+#              { alias2id  }{ NAME }              = [ ID, I ]
+#              { id        }                      = FIRST_UNUSED_ID
+#              { codealias }{ CODESET } { ALIAS } = CODE
+
+$VERSION='3.12';
+
+#=======================================================================
+#
+# _code2name ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2name {
+   my($type,$code,$codeset) = @_;
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   if (exists $Data{$type}{'code2id'}{$codeset}  &&
+       exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      my ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+      my $name    = $Data{$type}{'id2names'}{$id}[$i];
+      return $name;
+   } else {
+      #---------------------------------------------------------------
+      # no such code!
+      #---------------------------------------------------------------
+      return undef;
+   }
+}
+
+#=======================================================================
+#
+# _name2code ( TYPE,NAME,CODESET )
+#
+#=======================================================================
+
+sub _name2code {
+   my($type,$name,$codeset) = @_;
+   $name = ""  if (! $name);
+   $name = lc($name);
+
+   if (exists $Data{$type}{'alias2id'}{$name}) {
+      my $id = $Data{$type}{'alias2id'}{$name}[0];
+      if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+         return $Data{$type}{'id2code'}{$codeset}{$id};
+      }
+   }
+
+   #---------------------------------------------------------------
+   # no such name!
+   #---------------------------------------------------------------
+   return undef;
+  }
+
+#=======================================================================
+#
+# _code2code ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2code {
+   my($type,$code,$inset,$outset) = @_;
+
+   my $name    = _code2name($type,$code,$inset);
+   my $outcode = _name2code($type,$name,$outset);
+   return $outcode;
+}
+
+#=======================================================================
+#
+# _all_codes ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_codes {
+   my($type,$codeset) = @_;
+
+   if (! exists $Data{$type}{'code2id'}{$codeset}) {
+      return ();
+   }
+   my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
+   return (sort @codes);
+}
+
+#=======================================================================
+#
+# _all_names ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_names {
+   my($type,$codeset) = @_;
+
+   my @codes = _all_codes($type,$codeset);
+   return ()  if (! @codes);
+   my @names;
+
+   foreach my $code (@codes) {
+      my($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+      my $name   = $Data{$type}{'id2names'}{$id}[$i];
+      push(@names,$name);
+   }
+   return (sort @names);
+}
+
+#=======================================================================
+#
+# _rename ( TYPE,CODE,NAME,CODESET )
+#
+# Change the official name for a code. The original is retained
+# as an alias, but the new name will be returned if you lookup the
+# name from code.
+#
+#=======================================================================
+
+sub _rename {
+   my($type,$code,$new_name,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "rename_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   # Check that $code exists in the codeset.
+
+   my $id;
+   if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+   } else {
+      carp "rename_$type(): unknown code: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Cases:
+   #   1. Renaming to a name which exists with a different ID
+   #      Error
+   #
+   #   2. Renaming to a name which exists with the same ID
+   #      Just change code2id (I value)
+   #
+   #   3. Renaming to a new name
+   #      Create a new alias
+   #      Change code2id (I value)
+
+   if (exists $Data{$type}{'alias2id'}{lc($new_name)}) {
+      # Existing name (case 1 and 2)
+
+      my ($new_id,$i) = @{ $Data{$type}{'alias2id'}{lc($new_name)} };
+      if ($new_id != $id) {
+         # Case 1
+        carp "rename_$type(): rename to an existing $type not allowed\n"
+          unless ($nowarn);
+        return 0;
+      }
+
+      # Case 2
+
+      $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+
+   } else {
+
+      # Case 3
+
+      push @{ $Data{$type}{'id2names'}{$id} },$new_name;
+      my $i = $#{ $Data{$type}{'id2names'}{$id} };
+      $Data{$type}{'alias2id'}{lc($new_name)} = [ $id,$i ];
+      $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+   }
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _add_code ( TYPE,CODE,NAME,CODESET )
+#
+# Add a new code to the codeset. Both CODE and NAME must be
+# unused in the code set.
+#
+#=======================================================================
+
+sub _add_code {
+   my($type,$code,$name,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "add_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Check that $code is unused.
+
+   if (exists $Data{$type}{'code2id'}{$codeset}{$code}  ||
+       exists $Data{$type}{'codealias'}{$codeset}{$code}) {
+      carp "add_$type(): code already in use: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Check to see that $name is unused in this code set.  If it is
+   # used (but not in this code set), we'll use that ID.  Otherwise,
+   # we'll need to get the next available ID.
+
+   my ($id,$i);
+   if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+      ($id,$i) = @{ $Data{$type}{'alias2id'}{lc($name)} };
+      if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+         carp "add_$type(): name already in use: $name\n"  unless ($nowarn);
+         return 0;
+      }
+
+   } else {
+      $id = $Data{$type}{'id'}++;
+      $i  = 0;
+      $Data{$type}{'alias2id'}{lc($name)} = [ $id,$i ];
+      $Data{$type}{'id2names'}{$id}       = [ $name ];
+   }
+
+   # Add the new code
+
+   $Data{$type}{'code2id'}{$codeset}{$code} = [ $id,$i ];
+   $Data{$type}{'id2code'}{$codeset}{$id}   = $code;
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _delete_code ( TYPE,CODE,CODESET )
+#
+# Delete a code from the codeset.
+#
+#=======================================================================
+
+sub _delete_code {
+   my($type,$code,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "delete_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   # Check that $code is valid.
+
+   if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      carp "delete_$type(): code does not exist: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Delete the code
+
+   my $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+   delete $Data{$type}{'code2id'}{$codeset}{$code};
+   delete $Data{$type}{'id2code'}{$codeset}{$id};
+
+   # Delete any aliases that are linked to this code
+
+   foreach my $alias (keys %{ $Data{$type}{'codealias'}{$codeset} }) {
+      next  if ($Data{$type}{'codealias'}{$codeset}{$alias} ne $code);
+      delete $Data{$type}{'codealias'}{$codeset}{$alias};
+   }
+
+   # If this ID is not used in any other codeset, delete it completely.
+
+   foreach my $c (keys %{ $Data{$type}{'id2code'} }) {
+      return 1  if (exists $Data{$type}{'id2code'}{$c}{$id});
+   }
+
+   my @names = @{ $Data{$type}{'id2names'}{$id} };
+   delete $Data{$type}{'id2names'}{$id};
+
+   foreach my $name (@names) {
+      delete $Data{$type}{'alias2id'}{lc($name)};
+   }
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _add_alias ( TYPE,NAME,NEW_NAME )
+#
+# Add a new alias. NAME must exist, and NEW_NAME must be unused.
+#
+#=======================================================================
+
+sub _add_alias {
+   my($type,$name,$new_name,$nowarn) = @_;
+
+   # Check that $name is used and $new_name is new.
+
+   my($id);
+   if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+      $id = $Data{$type}{'alias2id'}{lc($name)}[0];
+   } else {
+      carp "add_${type}_alias(): name does not exist: $name\n"  unless ($nowarn);
+      return 0;
+   }
+
+   if (exists $Data{$type}{'alias2id'}{lc($new_name)}) {
+      carp "add_${type}_alias(): alias already in use: $new_name\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Add the new alias
+
+   push @{ $Data{$type}{'id2names'}{$id} },$new_name;
+   my $i = $#{ $Data{$type}{'id2names'}{$id} };
+   $Data{$type}{'alias2id'}{lc($new_name)} = [ $id,$i ];
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _delete_alias ( TYPE,NAME )
+#
+# This deletes a name from the list of names used by an element.
+# NAME must be used, but must NOT be the only name in the list.
+#
+# Any id2name that references this name will be changed to
+# refer to the first name in the list.
+#
+#=======================================================================
+
+sub _delete_alias {
+   my($type,$name,$nowarn) = @_;
+
+   # Check that $name is used.
+
+   my($id,$i);
+   if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+      ($id,$i) = @{ $Data{$type}{'alias2id'}{lc($name)} };
+   } else {
+      carp "delete_${type}_alias(): name does not exist: $name\n"  unless ($nowarn);
+      return 0;
+   }
+
+   my $n = $#{ $Data{$type}{'id2names'}{$id} };
+   if ($n == 1) {
+      carp "delete_${type}_alias(): only one name defined (use _delete_${type} instead)\n"
+        unless ($nowarn);
+      return 0;
+   }
+
+   # Delete the alias.
+
+   splice (@{ $Data{$type}{'id2names'}{$id} },$i,1);
+   delete $Data{$type}{'alias2id'}{lc($name)};
+
+   # Every element that refers to this ID:
+   #   Ignore     if I < $i
+   #   Set to 0   if I = $i
+   #   Decrement  if I > $i
+
+   foreach my $codeset (keys %{ $Data{'code2id'} }) {
+      foreach my $code (keys %{ $Data{'code2id'}{$codeset} }) {
+         my($jd,$j) = @{ $Data{'code2id'}{$codeset}{$code} };
+         next  if ($jd ne $id  ||
+                   $j < $i);
+         if ($i == $j) {
+            $Data{'code2id'}{$codeset}{$code}[1] = 0;
+         } else {
+            $Data{'code2id'}{$codeset}{$code}[1]--;
+         }
+      }
+   }
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _rename_code ( TYPE,CODE,NEW_CODE,CODESET )
+#
+# Change the official code. The original is retained as an alias, but
+# the new name will be returned if you lookup the code from name.
+#
+#=======================================================================
+
+sub _rename_code {
+   my($type,$code,$new_code,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "rename_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   # Check that $code exists in the codeset.
+
+   if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      carp "rename_$type(): unknown code: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Cases:
+   #   1. Renaming code to an existing alias of this code:
+   #      Make the alias real and the code an alias
+   #
+   #   2. Renaming code to some other existing alias:
+   #      Error
+   #
+   #   3. Renaming code to some other code:
+   #      Error (
+   #
+   #   4. Renaming code to a new code:
+   #      Make code into an alias
+   #      Replace code with new_code.
+
+   if (exists $Data{$type}{'codealias'}{$codeset}{$new_code}) {
+      # Cases 1 and 2
+      if ($Data{$type}{'codealias'}{$codeset}{$new_code} eq $code) {
+         # Case 1
+
+         delete $Data{$type}{'codealias'}{$codeset}{$new_code};
+
+      } else {
+         # Case 2
+         carp "rename_$type(): new code already in use: $new_code\n"  unless ($nowarn);
+         return 0;
+      }
+
+   } elsif (exists $Data{$type}{'code2id'}{$codeset}{$new_code}) {
+      # Case 3
+      carp "rename_$type(): new code already in use: $new_code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Cases 1 and 4
+
+   $Data{$type}{'codealias'}{$codeset}{$code} = $new_code;
+
+   my $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+   $Data{$type}{'code2id'}{$codeset}{$new_code} = $Data{$type}{'code2id'}{$codeset}{$code};
+   delete $Data{$type}{'code2id'}{$codeset}{$code};
+
+   $Data{$type}{'id2code'}{$codeset}{$id} = $new_code;
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _add_code_alias ( TYPE,CODE,NEW_CODE,CODESET )
+#
+# Adds an alias for the code.
+#
+#=======================================================================
+
+sub _add_code_alias {
+   my($type,$code,$new_code,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "add_${type}_code_alias(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   # Check that $code exists in the codeset and that $new_code
+   # does not exist.
+
+   if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      carp "add_${type}_code_alias(): unknown code: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   if (exists $Data{$type}{'code2id'}{$codeset}{$new_code}  ||
+       exists $Data{$type}{'codealias'}{$codeset}{$new_code}) {
+      carp "add_${type}_code_alias(): code already in use: $new_code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Add the alias
+
+   $Data{$type}{'codealias'}{$codeset}{$new_code} = $code;
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _delete_code_alias ( TYPE,CODE,CODESET )
+#
+# Deletes an alias for the code.
+#
+#=======================================================================
+
+sub _delete_code_alias {
+   my($type,$code,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "delete_${type}_code_alias(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Check that $code exists in the codeset as an alias.
+
+   if (! exists $Data{$type}{'codealias'}{$codeset}{$code}) {
+      carp "delete_${type}_code_alias(): no alias defined: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Delete the alias
+
+   delete $Data{$type}{'codealias'}{$codeset}{$code};
+
+   return 1;
+}
+
+#=======================================================================
+#
+# alias_code ( ALIAS => CODE [ , CODESET ] )
+#
+# Add an alias for an existing code. If the CODESET isn't specified,
+# then we use the default (currently the alpha-2 codeset).
+#
+#   Locale::Country::alias_code('uk' => 'gb');
+#
+#=======================================================================
+
+# sub alias_code {
+#    my $nowarn   = 0;
+#    $nowarn      = 1, pop  if ($_[$#_] eq "nowarn");
+#    my $alias    = shift;
+#    my $code     = shift;
+#    my $codeset  = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
+
+#    return 0  if ($codeset !~ /^\d+$/);
+
+#    if      ($codeset == LOCALE_CODE_ALPHA_2) {
+#       $codeset = "alpha2";
+#       $alias   = lc($alias);
+#    } elsif ($codeset == LOCALE_CODE_ALPHA_3) {
+#       $codeset = "alpha3";
+#       $alias   = lc($alias);
+#    } elsif ($codeset == LOCALE_CODE_FIPS) {
+#       $codeset = "fips";
+#       $alias   = uc($alias);
+#    } elsif ($codeset == LOCALE_CODE_NUMERIC) {
+#       $codeset = "num";
+#       return undef if ($alias =~ /\D/);
+#       $alias   = sprintf("%.3d", $alias);
+#    } else {
+#       carp "rename_country(): unknown codeset\n"  unless ($nowarn);
+#       return 0;
+#    }
+
+#    # Check that $code exists in the codeset.
+
+#    my ($id,$i);
+#    if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+#       ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+#    } else {
+#       carp "alias_code: attempt to alias \"$alias\" to unknown country code \"$code\"\n"
+#      unless ($nowarn);
+#       return 0;
+#    }
+
+#    # Cases:
+#    #   The alias already exists.
+#    #      Error
+#    #
+#    #   It's new
+#    #      Create a new entry in Code2CountryID
+#    #      Replace the entiry in CountryID2Code
+#    #      Regenerate %Codes
+
+#    if (exists $Data{$type}{'code2id'}{$codeset}{$alias}) {
+#       carp "alias_code: attempt to alias \"$alias\" which is already in use\n"
+#      unless ($nowarn);
+#       return 0;
+#    }
+
+#    $Data{$type}{'code2id'}{$codeset}{$alias} = [ $id, $i ];
+#    $Data{$type}{'id2names'}ID2Code{$codeset}{$id} = $alias;
+
+#    my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
+#    $Locale::CountryCodes::Codes{$codeset} = [ sort @codes ];
+
+#    return $alias;
+# }
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/lib/Locale/Codes.pod b/cpan/Locale-Codes/lib/Locale/Codes.pod
new file mode 100644 (file)
index 0000000..447aa4b
--- /dev/null
@@ -0,0 +1,540 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes - a distribution of modules to handle locale codes
+
+=head1 DESCRIPTION
+
+B<Locale::Codes> is a distribution containing a set of modules.  The
+modules each deal with different types of codes which identify parts
+of the locale including languages, countries, currency, etc.
+
+Currently, the following modules are included:
+
+=over 4
+
+=item B<Locale::Country>
+
+This includes support for country codes (such as those listed in ISO-3166)
+to specify the country.
+
+=item B<Locale::Language>
+
+This includes support for language codes (such as those listed in ISO-639)
+to specify the language.
+
+=item B<Locale::Currency>
+
+This includes support for currency codes (such as those listed in ISO-4217)
+to specify the currency.
+
+=item B<Locale::Script>
+
+This includes support for script codes (such as those listed in ISO-15924)
+to specify the script.
+
+=back
+
+Each module can support an arbitrary number of code sets, and it it
+not required that the relationship between these code sets be
+one-to-one.  For example, the Locale::Country module supports code
+sets from ISO-3166 and the FIPS 10 standard, and they do not break the
+world down into exactly the same sets of countries. This does not
+cause any problem (though converting codes from ISO-3166 to FIPS or
+back will not work except for countries that are one-to-one).
+
+All data in all of these modules comes directly from the original
+standards (or as close to direct as possible), so it should be
+up-to-date at the time of release.
+
+I plan on releasing a new version a couple of times a year to
+incorporate any changes made in the standards. However, I don't always
+know about changes that occur, so if any of the standards change, and
+you want a new release sooner, just email me and I'll get one out.
+
+=head1 NEW CODE SETS
+
+I'm always open to suggestions for new code sets.
+
+In order for me to add a code set, I want the following criteria
+to be met:
+
+=over 4
+
+=item B<General-use code set>
+
+If a code set is not general use, I'm not likely to spend the time
+to add and support it.
+
+=item B<An official source of data>
+
+I require an official (or at least, a NEARLY official) source where I
+can get the data on a regular basis.
+
+Ideally, I'd only get data from an official source, but sometimes that
+is not possible. For example the ISO standards are not typically
+available for free, so I may have to get some of that data from
+alternate sources that I'm confident are getting their data from the
+official source.
+
+As an example, I get some country data from the CIA World
+Factbook. Given the nature of the source, I'm sure they're updating
+data from the official sources and I consider it "nearly" official.
+
+There are many 3rd party sites which maintain lists (many of which are
+actually in a more convenient form than the official sites).
+Unfortunately, I will reject most of them since I have no feel for how
+"official" they are.
+
+=item B<A free source of the data>
+
+Obviously, the data must be free-of-charge. I'm not interested in
+paying for the data (and I'm not interested in the overhead of having
+someone else pay for the data for me).
+
+=item B<A reliable source of data>
+
+The source of data must come from a source that I can reasonably expect
+to exist for the foreseeable future since I will be extremely reluctant
+to drop support for a data set once it's included.
+
+I am also reluctant to accept data sent to me by an individual.
+Although I appreciate the offer, it is simply not practical to consider
+an individual contribution as a reliable source of data. The source
+should be an official agency of some sort.
+
+=back
+
+These requirements are open to discussion. If you have a code set
+you'd like to see added, but which may not meet all of the above
+requirements, feel free to email me and we'll discuss it.  Depending
+on circumstances, I may be willing to waive some of these criteria.
+
+=head1 COMMON ALIASES
+
+As of version 2.00, the modules supported common variants of names.
+
+For example, Locale::Country supports variant names for countries, and
+a few of the most common ones are included in the data. The country
+code for "United States" is "us", so:
+
+   country2code('United States');
+      => "us"
+
+Now the following will also return 'us':
+
+   country2code('United States of America');
+   country2code('USA');
+
+Any number of common aliases may be included in the data, in addition
+to the names that come directly from the standards.  If you have a
+common alias for a country, language, or any other of the types of
+codes, let me know and I'll add it, with some restrictions.
+
+For example, the country name "North Korea" never appeared in any of
+the official sources (instead, it was "Korea, North" or "Korea,
+Democratic People's Republic of". I would honor a request to add an
+alias "North Korea" since that's a very common way to specify the
+country (please don't request this... I've already added it).
+
+On the other hand, a request to add Zaire as an alias for "Congo, The
+Democratic Republic of" may not be honored. The country's official
+name is not Zaire, so adding it as an alias violates the standard.
+Zaire was kept as an alias in versions prior to 3.00, but it has been
+removed. Other aliases (if any) which no longer appear in any standard
+have also been removed.
+
+=head1 ROUTINES
+
+As of 3.10, the interface for all of the modules listed above are
+identical (as a matter of fact, they are all just wrappers around a
+central module which does all the real work).
+
+In order to maintain the documentation for the modules consistently,
+the functions are all documented here, rather than in the documentation
+for the separate modules.
+
+The name of the function depends on the module. For example, every module
+contains a function "code2XXX" where XXX refers to the type of data
+(country, language, currency, or script). So, the Locale::Country module
+contains the function code2country, the Locale::Language module contains
+the function code2language, etc.
+
+In all of the functions below, CODE refers to a code for one element in
+the code set. For example, in the two-letter country codes from ISO 3166-1,
+the code 'fi' is used to refer to the country Finland. CODE is always
+case insensitive (though when a code is returned, it will always be in
+the case as used in the standard), so 'fi', 'FI', and 'Fi' would all
+be equivalent.
+
+CODESET refers to a constant specified in the documentation for each
+module to label the various code sets. For example, in the
+Locale::Language module, CODESET could be LOCALE_CODE_ALPHA_2 or
+LOCALE_CODE_ALPHA_3 (among others). Most functions have a default one,
+so they do not need to be specified. So the following calls are valid:
+
+   code2country("fi");
+   code2country("fi",LOCALE_CODE_ALPHA_2);
+   code2country("fin",LOCALE_CODE_ALPHA_3);
+
+Since LOCALE_CODE_ALPHA_2 is the default code set, the first two are
+identical.
+
+=over 4
+
+=item B<code2country ( CODE [,CODESET] )>
+
+=item B<code2language( CODE [,CODESET] )>
+
+=item B<code2currency( CODE [,CODESET] )>
+
+=item B<code2script  ( CODE [,CODESET] )>
+
+These functions take a code and returns a string which contains
+the name of the element identified.  If the code is not a valid
+code in the CODESET specified then C<undef> will be returned.
+
+The name of the element is the name as specified in the standard,
+and as a result, different variations of an element name may
+be returned for different values of CODESET.
+
+For example, the B<alpha-2> country code set defines the two-letter
+code "bo" to be "Bolivia, Plurinational State of", whereas the
+B<alpha-3> code set defines the code 'bol' to be the country "Bolivia
+(Plurinational State of)". So:
+
+   code2country('bo',LOCALE_CODE_ALPHA_2);
+      => 'Bolivia, Plurinational State of'
+
+   code2country('bol',LOCALE_CODE_ALPHA_3);
+      => 'Bolivia (Plurinational State of)'
+
+=item B<country2code ( NAME [,CODESET] )>
+
+=item B<language2code( NAME [,CODESET] )>
+
+=item B<currency2code( NAME [,CODESET] )>
+
+=item B<script2code  ( NAME [,CODESET] )>
+
+These functions takes the name of an element (or any of it's aliases)
+and returns the code that corresponds to it, if it exists. If NAME
+could not be identified as the name of one of the elements, then
+C<undef> will be returned.
+
+The name is not case sensitive. Also, any known variation of a name
+may be passed in.
+
+For example, even though the country name returned using
+LOCALE_CODE_ALPHA_2 and LOCALE_CODE_ALPHA_3 country codes for Bolivia is different,
+either country name may be passed in since for each code set, in addition to
+the alias 'Bolivia'. So:
+
+   country2code('Bolivia, Plurinational State of',
+                LOCALE_CODE_ALPHA_2);
+      => bo
+
+   country2code('Bolivia (Plurinational State of)',
+                LOCALE_CODE_ALPHA_2);
+      => bo
+
+   country2code('Bolivia',LOCALE_CODE_ALPHA_2);
+      => bo
+
+=item B<country_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<language_code2code( CODE ,CODESET ,CODESET2 )>
+
+=item B<currency_code2code( CODE ,CODESET ,CODESET2 )>
+
+=item B<script_code2code  ( CODE ,CODESET ,CODESET2 )>
+
+These functions takes a a code from one code set, and returns the
+corresponding code from another code set. CODE must exists in the code
+set specified by CODESET and must have a corresponding code in the
+code set specified by CODESET2 or C<undef> will be returned.
+
+Both CODESETs must be explicitly entered.
+
+   country_code2code('fin', LOCALE_CODE_ALPHA_3,
+                     LOCALE_CODE_ALPHA_2);
+      => 'fi'
+
+=item B<all_country_codes ( [CODESET] )>
+
+=item B<all_language_codes( [CODESET] )>
+
+=item B<all_currency_codes( [CODESET] )>
+
+=item B<all_script_codes  ( [CODESET] )>
+
+These returns a list of all code in the code set. The codes will be
+sorted.
+
+=item B<all_country_names ( [CODESET] )>
+
+=item B<all_language_names( [CODESET] )>
+
+=item B<all_currency_names( [CODESET] )>
+
+=item B<all_script_names  ( [CODESET] )>
+
+These return a list of all elements names for which there is a
+corresponding code in the specified code set.
+
+The names returned are exactly as they are specified in the standard,
+and are sorted.
+
+Since not all elements are listed in all code sets, the list of
+elements may differ depending on the code set specified.
+
+=back
+
+=head1 SEMI-PRIVATE ROUTINES
+
+Additional semi-private routines which may be used to modify the
+internal data are also available.  Given their status, they aren't
+exported, and so need to be called by prefixing the function name with
+the package name.
+
+=over 4
+
+=item B<Locale::Country::rename_country  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Language::rename_language( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Currency::rename_currency( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Script::rename_script    ( CODE ,NEW_NAME [,CODESET] )>
+
+These routines are used to change the official name of an element. At
+that point, the name returned by the code2XXX routine would be
+NEW_NAME instead of the name specified in the standard.
+
+The original name will remain as an alias.
+
+For example, the official country name for code 'gb' is 'United
+Kingdom'.  If you want to change that, you might call:
+
+   Locale::Country::rename_country('gb', 'Great Britain');
+
+This means that calling code2country('gb') will now return 'Great
+Britain' instead of 'United Kingdom'.
+
+If any error occurs, a warning is issued and 0 is returned. An error
+occurs if CODE doesn't exist in the specified code set, or if
+NEW_NAME is already in use but for a different element.
+
+If the routine succeeds, 1 is returned.
+
+=item B<Locale::Country::add_country  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Language::add_language( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Currency::add_currency( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Script::add_script    ( CODE ,NAME [,CODESET] )>
+
+These routines are used to add a new code and name to the data.
+
+Both CODE and NAME must be unused in the data set or an error
+occurs (though NAME may be used in a different data set).
+
+For example, to create the fictitious country named "Duchy of
+Grand Fenwick" with codes "gf" and "fen", use the following:
+
+   Locale::Country::add_country("fe","Duchy of Grand Fenwick",
+                                LOCALE_CODE_ALPHA_2);
+
+   Locale::Country::add_country("fen","Duchy of Grand Fenwick",
+                                LOCALE_CODE_ALPHA_3);
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::delete_country  ( CODE [,CODESET] )>
+
+=item B<Locale::Language::delete_language( CODE [,CODESET] )>
+
+=item B<Locale::Currency::delete_currency( CODE [,CODESET] )>
+
+=item B<Locale::Script::delete_script    ( CODE [,CODESET] )>
+
+These routines are used to delete a code from the data.
+
+CODE must refer to an existing code in the code set.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::add_country_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Language::add_language_alias( NAME ,NEW_NAME )>
+
+=item B<Locale::Currency::add_currency_alias( NAME ,NEW_NAME )>
+
+=item B<Locale::Script::add_script_alias    ( NAME ,NEW_NAME )>
+
+These routines are used to add a new alias to the data. They do
+not alter the return value of the code2XXX function.
+
+NAME must be an existing element name, and NEW_NAME must
+be unused or an error occurs.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::delete_country_alias  ( NAME )>
+
+=item B<Locale::Language::delete_language_alias( NAME )>
+
+=item B<Locale::Currency::delete_currency_alias( NAME )>
+
+=item B<Locale::Script::delete_script_alias    ( NAME )>
+
+These routines are used to delete an alias from the data. Once
+removed, the element may not be referred to by NAME.
+
+NAME must be one of a list of at least two names that may be used to
+specify an element. If the element may only be referred to by a single
+name, you'll need to use the add_XXX_alias function to add a new alias
+first, or the remove_XXX function to remove the element entirely.
+
+If the alias is used as the name in any code set, one of the other
+names will be used instead. Predicting exactly which one will
+be used requires you to know the order in which the standards
+were read, which is not reliable, so you may want to use the
+rename_XXX function to force one of the alternate names to be
+used.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::rename_country_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Language::rename_language_code( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Currency::rename_currency_code( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Script::rename_script_code    ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines are used to change the official code for an element. At
+that point, the code returned by the XXX2code routine would be
+NEW_CODE instead of the code specified in the standard.
+
+NEW_CODE may either be a code that is not in use, or it may be an
+alias for CODE (in which case, CODE becomes and alias and NEW_CODE
+becomes the "real" code).
+
+The original code is kept as an alias, so that the code2XXX routines
+will work with either the code from the standard or the new code.
+
+However, the all_XXX_codes routine will only return the codes which
+are considered "real" (which means that the list of codes will now
+contain NEW_CODE, but will not contain CODE).
+
+=item B<Locale::Country::add_country_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Language::add_language_code_alias( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Currency::add_currency_code_alias( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Script::add_script_code_alias    ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines add an alias for the code. At that point, NEW_CODE and CODE
+will both work in the code2XXX routines. However, the XXX2code routines will
+still return the original code.
+
+=item B<Locale::Country::delete_country_code_alias  ( CODE [,CODESET] )>
+
+=item B<Locale::Language::delete_language_code_alias( CODE [,CODESET] )>
+
+=item B<Locale::Currency::delete_currency_code_alias( CODE [,CODESET] )>
+
+=item B<Locale::Script::delete_script_code_alias    ( CODE [,CODESET] )>
+
+These routines delete an alias for the code.
+
+These will only work if CODE is actually an alias. If it is the "real"
+code, it will not be deleted. You will need to use the rename_XXX_code
+function to switch the real code with one of the aliases, and then
+delete the alias.
+
+=back
+
+=head1 KNOWN BUGS AND LIMITATIONS
+
+=over 4
+
+=item B<*>
+
+Because each code set uses a slightly different list of elements, and
+they are not necessarily one-to-one, there may be some confusion
+about the relationship between codes from different code sets.
+
+For example, ISO 3166 assigns one code to the country "United States
+Minor Outlying Islands", but the FIPS 10 codes give different codes
+to different islands (Baker Island, Howland Island, etc.).
+
+This may cause some confusion... I've done the best that I could do
+to minimize it.
+
+=item B<*>
+
+Currently all names must be all ASCII. I plan on relaxing that
+limitation in the future.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Constants>
+
+Constants for Locale codes.
+
+=item B<Locale::Country>
+
+Codes for identification of countries.
+
+=item B<Locale::Language>
+
+Codes for identification of languages.
+
+=item B<Locale::Script>
+
+Codes for identification of scripts.
+
+=item B<Locale::Currency>
+
+Codes for identification of currencies and funds.
+
+=back
+
+=head1 AUTHOR
+
+Locale::Country and Locale::Language were originally written by Neil
+Bowers at the Canon Research Centre Europe (CRE). They maintained the
+distribution from 1997 to 2001.
+
+Locale::Currency was originally written by Michael Hennecke.
+
+From 2001 to 2004, maintenance was continued by Neil Bowers.  He
+modified Locale::Currency for inclusion in the distribution. He also
+added Locale::Constants and Locale::Script.
+
+From 2004-2009, the module was unmaintained.
+
+In 2010, maintenance was taken over by Sullivan Beck (sbeck@cpan.org)
+with Neil Bower's permission.
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001      Michael Hennecke (Locale::Currency)
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
diff --git a/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod b/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod
new file mode 100644 (file)
index 0000000..02694d9
--- /dev/null
@@ -0,0 +1,171 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Changes - details important changes after 2.07
+
+=head1 3.10
+
+=over 4
+
+=item B<Changed XXX_code2code behavior slightly>
+
+In previous versions, passing in the same code set for both code set
+arguments would automatically return undef. For example:
+
+   country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+      => undef
+
+This doesn't seem like reasonable behavior, so it has been changed
+to allow the same code set:
+
+   country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+      => 'bo'
+
+Note that if an invalid code is passed in, undef will still be
+returned:
+
+   country_code2code('bol',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+      => undef
+
+=item B<Added many semi-private routines>
+
+Previous versions had only two semi-private routines: rename_country
+and alias_code which had the ability to modify the internal data in
+a couple very limited ways. It was requested (in an anonymous posting
+by someone named Steve and also by Steve Hay) that better support
+for modifying internal data, so a full set of routines were added.
+
+The full set of routines includes:
+
+   rename_country
+   rename_language
+   rename_currency
+   rename_script
+
+   add_country
+   add_language
+   add_currency
+   add_script
+
+   delete_country
+   delete_language
+   delete_currency
+   delete_script
+
+   add_country_alias
+   add_language_alias
+   add_currency_alias
+   add_script_alias
+
+   delete_country_alias
+   delete_language_alias
+   delete_currency_alias
+   delete_script_alias
+
+   rename_country_code
+   rename_language_code
+   rename_currency_code
+   rename_script_code
+
+   add_country_code_alias
+   add_language_code_alias
+   add_currency_code_alias
+   add_script_code_alias
+
+   delete_country_code_alias
+   delete_language_code_alias
+   delete_currency_code_alias
+   delete_script_code_alias
+
+=back
+
+=head1 3.00
+
+=over 4
+
+=item B<New maintainer>
+
+From 1997 to 2004, Locale::Codes was maintained by Neil
+Bowers. Unfortunately, no updates were made from June 2004 to January
+2010. During that time, a number of changes have been made to the
+standards since then, so the data included was out-of-date.
+
+I contacted Neil to get his permission to assume maintenance of
+the module, and he kindly agreed.
+
+=item B<All codes are generated from standards>
+
+All of the values returned by the various functions are now values
+directly from the standards. This means that the values returned in
+the 2.xx series are not necessarily the same as the values returned
+here.
+
+As an example, the ISO 3166 standard which lists country codes refers
+to the country associated with the code "bo" as "Bolivia,
+Plurinational State of", so that is what is returned. In the 2.xx
+series, "Bolivia" was returned.  Also, the country names vary from one
+standard to another. So the code "bol" which is maintained by the
+United Nations returns the name of the country as "Bolivia
+(Plurinational State of)". Some common aliases have been added, so you
+can still request a code associated with a county name "Bolivia".
+
+Since the data comes from the standards, some "incorrect" values are
+no longer supported. For example, 2.07 treated "Zaire" as an alias for
+"Congo", but the country changed it's name, and "Zaire" is not in the
+standard, so it has been dropped in 3.00.
+
+=item B<Added several code sets from standards>
+
+I've added the following code sets:
+
+   FIPS 10 country codes
+   Alpha-3 and Term language codes
+   Numeric currency codes
+
+=item B<Locale::Script changed>
+
+In 2.xx, Locale::Script assigned scripts to country codes, which is NOT
+how it is done currently in the standards. It appears that an older version
+of ISO 15924 did this, but I haven't found an old version to confirm
+that, and in any case, that is not the case in the current standards.
+
+As a result, the Locale::Script module is completely incompatible with
+the 2.xx version with respect to the types of codes it supports. None of
+the old codes will work.
+
+=item B<Added missing functions>
+
+I've added in some functions which were "missing" previously (since there was
+only one set of codes supported, the code2code functions didn't apply):
+
+   language_code2code
+   currency_code2code
+
+so the interfaces for each type of codes are consistent.
+
+=item B<Dropped support for _alias_code>
+
+In Locale::Country, _alias_code was an allowed, but deprecated function
+which was documented to be supported in the 2.xx series. I've removed it.
+
+=back
+
+=head1 SEE ALSO
+
+Locale::Codes
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
diff --git a/cpan/Locale-Codes/lib/Locale/Codes/Country.pm b/cpan/Locale-Codes/lib/Locale/Codes/Country.pm
new file mode 100644 (file)
index 0000000..49badc0
--- /dev/null
@@ -0,0 +1,9589 @@
+package Locale::Codes::Country;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Mon Apr  5 15:40:50 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Country - country codes for the Locale::Country module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Country module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'country'}{'id'} = '0278';
+
+$Locale::Codes::Data{'country'}{'id2names'} = {
+   q(0001) => [
+      q(Afghanistan),
+      q(Islamic State of Afghanistan),
+      ],
+   q(0002) => [
+      q(Aland Islands),
+      ],
+   q(0003) => [
+      q(Albania),
+      q(Republic of Albania),
+      ],
+   q(0004) => [
+      q(Algeria),
+      q(People's Democratic Republic of Algeria),
+      ],
+   q(0005) => [
+      q(American Samoa),
+      q(Territory of American Samoa),
+      ],
+   q(0006) => [
+      q(Andorra),
+      q(Principality of Andorra),
+      ],
+   q(0007) => [
+      q(Angola),
+      q(Republic of Angola),
+      ],
+   q(0008) => [
+      q(Anguilla),
+      ],
+   q(0009) => [
+      q(Antarctica),
+      ],
+   q(0010) => [
+      q(Antigua and Barbuda),
+      ],
+   q(0011) => [
+      q(Argentina),
+      q(Argentine Republic),
+      ],
+   q(0012) => [
+      q(Armenia),
+      q(Republic of Armenia),
+      ],
+   q(0013) => [
+      q(Aruba),
+      ],
+   q(0014) => [
+      q(Australia),
+      q(Commonwealth of Australia),
+      ],
+   q(0015) => [
+      q(Austria),
+      q(Republic of Austria),
+      ],
+   q(0016) => [
+      q(Azerbaijan),
+      q(Republic of Azerbaijan),
+      ],
+   q(0017) => [
+      q(Bahamas),
+      q(Bahamas, The),
+      q(Commonwealth of the Bahamas),
+      q(The Bahamas),
+      ],
+   q(0018) => [
+      q(Bahrain),
+      q(State of Bahrain),
+      ],
+   q(0019) => [
+      q(Bangladesh),
+      q(People's Republic of Bangladesh),
+      ],
+   q(0020) => [
+      q(Barbados),
+      ],
+   q(0021) => [
+      q(Belarus),
+      q(Republic of Belarus),
+      ],
+   q(0022) => [
+      q(Belgium),
+      q(Kingdom of Belgium),
+      ],
+   q(0023) => [
+      q(Belize),
+      ],
+   q(0024) => [
+      q(Benin),
+      q(Republic of Benin),
+      ],
+   q(0025) => [
+      q(Bermuda),
+      ],
+   q(0026) => [
+      q(Bhutan),
+      q(Kingdom of Bhutan),
+      ],
+   q(0027) => [
+      q(Bolivia, Plurinational State of),
+      q(Bolivia (Plurinational State of)),
+      q(Bolivia),
+      q(Republic of Bolivia),
+      ],
+   q(0028) => [
+      q(Bosnia and Herzegovina),
+      ],
+   q(0029) => [
+      q(Botswana),
+      q(Republic of Botswana),
+      ],
+   q(0030) => [
+      q(Bouvet Island),
+      ],
+   q(0031) => [
+      q(Brazil),
+      q(Federative Republic of Brazil),
+      ],
+   q(0032) => [
+      q(British Indian Ocean Territory),
+      ],
+   q(0033) => [
+      q(Brunei Darussalam),
+      q(Brunei),
+      q(Negara Brunei Darussalam),
+      ],
+   q(0034) => [
+      q(Bulgaria),
+      ],
+   q(0035) => [
+      q(Burkina Faso),
+      ],
+   q(0036) => [
+      q(Burundi),
+      q(Republic of Burundi),
+      ],
+   q(0037) => [
+      q(Cambodia),
+      q(Kingdom of Cambodia),
+      ],
+   q(0038) => [
+      q(Cameroon),
+      q(Republic of Cameroon),
+      ],
+   q(0039) => [
+      q(Canada),
+      ],
+   q(0040) => [
+      q(Cape Verde),
+      q(Republic of Cape Verde),
+      ],
+   q(0041) => [
+      q(Cayman Islands),
+      ],
+   q(0042) => [
+      q(Central African Republic),
+      ],
+   q(0043) => [
+      q(Chad),
+      q(Republic of Chad),
+      ],
+   q(0044) => [
+      q(Chile),
+      q(Republic of Chile),
+      ],
+   q(0045) => [
+      q(China),
+      q(People's Republic of China),
+      ],
+   q(0046) => [
+      q(Christmas Island),
+      q(Territory of Christmas Island),
+      ],
+   q(0047) => [
+      q(Cocos (Keeling) Islands),
+      q(Territory of Cocos (Keeling) Islands),
+      q(Keeling Islands),
+      q(Cocos Islands),
+      ],
+   q(0048) => [
+      q(Colombia),
+      q(Republic of Colombia),
+      ],
+   q(0049) => [
+      q(Comoros),
+      q(Federal Islamic Republic of the Comoros),
+      ],
+   q(0050) => [
+      q(Congo),
+      q(Congo (Brazzaville)),
+      q(Republic of the Congo),
+      q(Congo, Republic of the),
+      q(The Republic of the Congo),
+      ],
+   q(0051) => [
+      q(Congo, The Democratic Republic of the),
+      q(Democratic Republic of the Congo),
+      q(Congo (Kinshasa)),
+      q(Congo, Democratic Republic of the),
+      q(The Democratic Republic of the Congo),
+      ],
+   q(0052) => [
+      q(Cook Islands),
+      ],
+   q(0053) => [
+      q(Costa Rica),
+      q(Republic of Costa Rica),
+      ],
+   q(0054) => [
+      q(Cote d'Ivoire),
+      q(Republic of Cote D'Ivoire),
+      ],
+   q(0055) => [
+      q(Croatia),
+      q(Republic of Croatia),
+      ],
+   q(0056) => [
+      q(Cuba),
+      q(Republic of Cuba),
+      ],
+   q(0057) => [
+      q(Cyprus),
+      q(Republic of Cyprus),
+      ],
+   q(0058) => [
+      q(Czech Republic),
+      ],
+   q(0059) => [
+      q(Denmark),
+      q(Kingdom of Denmark),
+      ],
+   q(0060) => [
+      q(Djibouti),
+      q(Republic of Djibouti),
+      ],
+   q(0061) => [
+      q(Dominica),
+      q(Commonwealth of Dominica),
+      ],
+   q(0062) => [
+      q(Dominican Republic),
+      ],
+   q(0063) => [
+      q(Ecuador),
+      q(Republic of Ecuador),
+      ],
+   q(0064) => [
+      q(Egypt),
+      q(Arab Republic of Egypt),
+      ],
+   q(0065) => [
+      q(El Salvador),
+      q(Republic of El Salvador),
+      ],
+   q(0066) => [
+      q(Equatorial Guinea),
+      q(Republic of Equatorial Guinea),
+      ],
+   q(0067) => [
+      q(Eritrea),
+      q(State of Eritrea),
+      ],
+   q(0068) => [
+      q(Estonia),
+      q(Republic of Estonia),
+      ],
+   q(0069) => [
+      q(Ethiopia),
+      q(Federal Democratic Republic of Ethiopia),
+      ],
+   q(0070) => [
+      q(Falkland Islands (Malvinas)),
+      q(Falkland Islands (Islas Malvinas)),
+      ],
+   q(0071) => [
+      q(Faroe Islands),
+      q(Faeroe Islands),
+      ],
+   q(0072) => [
+      q(Fiji),
+      q(Republic of the Fiji Islands),
+      ],
+   q(0073) => [
+      q(Finland),
+      q(Republic of Finland),
+      ],
+   q(0074) => [
+      q(France),
+      q(French Republic),
+      ],
+   q(0075) => [
+      q(French Guiana),
+      q(Department of Guiana),
+      ],
+   q(0076) => [
+      q(French Polynesia),
+      q(Territory of French Polynesia),
+      ],
+   q(0077) => [
+      q(French Southern Territories),
+      q(French Southern and Antarctic Lands),
+      q(Territory of the French Southern and Antarctic Lands),
+      ],
+   q(0078) => [
+      q(Gabon),
+      q(Gabonese Republic),
+      ],
+   q(0079) => [
+      q(Gambia),
+      q(Gambia, The),
+      q(Republic of the Gambia),
+      ],
+   q(0080) => [
+      q(Georgia),
+      ],
+   q(0081) => [
+      q(Germany),
+      q(Federal Republic of Germany),
+      ],
+   q(0082) => [
+      q(Ghana),
+      q(Republic of Ghana),
+      ],
+   q(0083) => [
+      q(Gibraltar),
+      ],
+   q(0084) => [
+      q(Greece),
+      q(Hellenic Republic),
+      ],
+   q(0085) => [
+      q(Greenland),
+      ],
+   q(0086) => [
+      q(Grenada),
+      ],
+   q(0087) => [
+      q(Guadeloupe),
+      q(Department of Guadeloupe),
+      ],
+   q(0088) => [
+      q(Guam),
+      q(Territory of Guam),
+      ],
+   q(0089) => [
+      q(Guatemala),
+      q(Republic of Guatemala),
+      ],
+   q(0090) => [
+      q(Guernsey),
+      q(Bailiwick of Guernsey),
+      ],
+   q(0091) => [
+      q(Guinea),
+      q(Republic of Guinea),
+      ],
+   q(0092) => [
+      q(Guinea-Bissau),
+      q(Republic of Guinea-Bissau),
+      ],
+   q(0093) => [
+      q(Guyana),
+      q(Co-operative Republic of Guyana),
+      ],
+   q(0094) => [
+      q(Haiti),
+      q(Republic of Haiti),
+      ],
+   q(0095) => [
+      q(Heard Island and Mcdonald Islands),
+      q(Territory of Heard Island and McDonald Islands),
+      ],
+   q(0096) => [
+      q(Holy See (Vatican City State)),
+      q(Holy See),
+      q(Vatican City),
+      q(State of the Vatican City),
+      q(Holy See (Vatican City)),
+      ],
+   q(0097) => [
+      q(Honduras),
+      q(Republic of Honduras),
+      ],
+   q(0098) => [
+      q(Hong Kong),
+      q(China, Hong Kong Special Administrative Region),
+      q(Hong Kong S.A.R.),
+      q(Hong Kong Special Administrative Region),
+      q(Hong Kong Special Administrative Region of China),
+      ],
+   q(0099) => [
+      q(Hungary),
+      q(Republic of Hungary),
+      ],
+   q(0100) => [
+      q(Iceland),
+      q(Republic of Iceland),
+      ],
+   q(0101) => [
+      q(India),
+      q(Republic of India),
+      ],
+   q(0102) => [
+      q(Indonesia),
+      q(Republic of Indonesia),
+      ],
+   q(0103) => [
+      q(Iran, Islamic Republic of),
+      q(Iran (Islamic Republic of)),
+      q(Iran),
+      q(Islamic Republic of Iran),
+      ],
+   q(0104) => [
+      q(Iraq),
+      q(Republic of Iraq),
+      ],
+   q(0105) => [
+      q(Ireland),
+      ],
+   q(0106) => [
+      q(Isle of Man),
+      ],
+   q(0107) => [
+      q(Israel),
+      q(State of Israel),
+      ],
+   q(0108) => [
+      q(Italy),
+      q(Italian Republic),
+      ],
+   q(0109) => [
+      q(Jamaica),
+      ],
+   q(0110) => [
+      q(Japan),
+      ],
+   q(0111) => [
+      q(Jersey),
+      q(Bailiwick of Jersey),
+      ],
+   q(0112) => [
+      q(Jordan),
+      q(Hashemite Kingdom of Jordan),
+      ],
+   q(0113) => [
+      q(Kazakhstan),
+      q(Republic of Kazakhstan),
+      q(Kazakstan),
+      ],
+   q(0114) => [
+      q(Kenya),
+      q(Republic of Kenya),
+      ],
+   q(0115) => [
+      q(Kiribati),
+      q(Republic of Kiribati),
+      ],
+   q(0116) => [
+      q(Korea, Democratic People's Republic of),
+      q(Democratic People's Republic of Korea),
+      q(Korea, North),
+      q(North Korea),
+      ],
+   q(0117) => [
+      q(Korea, Republic of),
+      q(Republic of Korea),
+      q(Korea, South),
+      q(South Korea),
+      ],
+   q(0118) => [
+      q(Kuwait),
+      q(State of Kuwait),
+      ],
+   q(0119) => [
+      q(Kyrgyzstan),
+      q(Kyrgyz Republic),
+      ],
+   q(0120) => [
+      q(Lao People's Democratic Republic),
+      q(Laos),
+      ],
+   q(0121) => [
+      q(Latvia),
+      q(Republic of Latvia),
+      ],
+   q(0122) => [
+      q(Lebanon),
+      q(Lebanese Republic),
+      ],
+   q(0123) => [
+      q(Lesotho),
+      q(Republic of Lesotho),
+      ],
+   q(0124) => [
+      q(Liberia),
+      q(Republic of Liberia),
+      ],
+   q(0125) => [
+      q(Libyan Arab Jamahiriya),
+      q(Libya),
+      q(Great Socialist People's Libyan Arab Jamahiriya),
+      ],
+   q(0126) => [
+      q(Liechtenstein),
+      q(Principality of Liechtenstein),
+      ],
+   q(0127) => [
+      q(Lithuania),
+      q(Republic of Lithuania),
+      ],
+   q(0128) => [
+      q(Luxembourg),
+      q(Grand Duchy of Luxembourg),
+      ],
+   q(0129) => [
+      q(Macao),
+      q(China, Macao Special Administrative Region),
+      q(Macau S.A.R),
+      q(Macau Special Administrative Region),
+      q(Macau),
+      q(Macau S.A.R.),
+      q(Macao Special Administrative Region of China),
+      ],
+   q(0130) => [
+      q(Macedonia, The Former Yugoslav Republic of),
+      q(The former Yugoslav Republic of Macedonia),
+      q(Macedonia),
+      q(Republic of Macedonia),
+      q(Macedonia, Former Yugoslav Republic of),
+      ],
+   q(0131) => [
+      q(Madagascar),
+      q(Republic of Madagascar),
+      ],
+   q(0132) => [
+      q(Malawi),
+      q(Republic of Malawi),
+      ],
+   q(0133) => [
+      q(Malaysia),
+      ],
+   q(0134) => [
+      q(Maldives),
+      q(Republic of Maldives),
+      ],
+   q(0135) => [
+      q(Mali),
+      q(Republic of Mali),
+      ],
+   q(0136) => [
+      q(Malta),
+      q(Republic of Malta),
+      ],
+   q(0137) => [
+      q(Marshall Islands),
+      q(Republic of the Marshall Islands),
+      ],
+   q(0138) => [
+      q(Martinique),
+      q(Department of Martinique),
+      ],
+   q(0139) => [
+      q(Mauritania),
+      q(Islamic Republic of Mauritania),
+      ],
+   q(0140) => [
+      q(Mauritius),
+      q(Republic of Mauritius),
+      ],
+   q(0141) => [
+      q(Mayotte),
+      q(Territorial Collectivity of Mayotte),
+      ],
+   q(0142) => [
+      q(Mexico),
+      q(United Mexican States),
+      ],
+   q(0143) => [
+      q(Micronesia, Federated States of),
+      q(Micronesia (Federated States of)),
+      q(Federated States of Micronesia),
+      ],
+   q(0144) => [
+      q(Moldova, Republic of),
+      q(Republic of Moldova),
+      q(Moldova),
+      ],
+   q(0145) => [
+      q(Monaco),
+      q(Principality of Monaco),
+      ],
+   q(0146) => [
+      q(Mongolia),
+      ],
+   q(0147) => [
+      q(Montenegro),
+      ],
+   q(0148) => [
+      q(Montserrat),
+      ],
+   q(0149) => [
+      q(Morocco),
+      q(Kingdom of Morocco),
+      ],
+   q(0150) => [
+      q(Mozambique),
+      q(Republic of Mozambique),
+      ],
+   q(0151) => [
+      q(Myanmar),
+      q(Burma),
+      q(Union of Burma),
+      ],
+   q(0152) => [
+      q(Namibia),
+      q(Republic of Namibia),
+      ],
+   q(0153) => [
+      q(Nauru),
+      q(Republic of Nauru),
+      ],
+   q(0154) => [
+      q(Nepal),
+      q(Kingdom of Nepal),
+      ],
+   q(0155) => [
+      q(Netherlands),
+      q(Kingdom of the Netherlands),
+      ],
+   q(0156) => [
+      q(Netherlands Antilles),
+      ],
+   q(0157) => [
+      q(New Caledonia),
+      q(Territory of New Caledonia and Dependencies),
+      ],
+   q(0158) => [
+      q(New Zealand),
+      ],
+   q(0159) => [
+      q(Nicaragua),
+      q(Republic of Nicaragua),
+      ],
+   q(0160) => [
+      q(Niger),
+      q(Republic of Niger),
+      ],
+   q(0161) => [
+      q(Nigeria),
+      q(Federal Republic of Nigeria),
+      ],
+   q(0162) => [
+      q(Niue),
+      ],
+   q(0163) => [
+      q(Norfolk Island),
+      q(Territory of Norfolk Island),
+      ],
+   q(0164) => [
+      q(Northern Mariana Islands),
+      q(Commonwealth of the Northern Mariana Islands),
+      ],
+   q(0165) => [
+      q(Norway),
+      q(Kingdom of Norway),
+      ],
+   q(0166) => [
+      q(Oman),
+      q(Sultanate of Oman),
+      ],
+   q(0167) => [
+      q(Pakistan),
+      q(Islamic Republic of Pakistan),
+      ],
+   q(0168) => [
+      q(Palau),
+      q(Republic of Palau),
+      ],
+   q(0169) => [
+      q(Palestinian Territory, Occupied),
+      q(Occupied Palestinian Territory),
+      ],
+   q(0170) => [
+      q(Panama),
+      q(Republic of Panama),
+      ],
+   q(0171) => [
+      q(Papua New Guinea),
+      q(Independent State of Papua New Guinea),
+      ],
+   q(0172) => [
+      q(Paraguay),
+      q(Republic of Paraguay),
+      ],
+   q(0173) => [
+      q(Peru),
+      q(Republic of Peru),
+      ],
+   q(0174) => [
+      q(Philippines),
+      q(Republic of the Philippines),
+      ],
+   q(0175) => [
+      q(Pitcairn),
+      q(Pitcairn Islands),
+      q(Pitcairn, Henderson, Ducie and Oeno Islands),
+      q(Pitcairn Island),
+      ],
+   q(0176) => [
+      q(Poland),
+      q(Republic of Poland),
+      ],
+   q(0177) => [
+      q(Portugal),
+      q(Portuguese Republic),
+      ],
+   q(0178) => [
+      q(Puerto Rico),
+      q(Commonwealth of Puerto Rico),
+      ],
+   q(0179) => [
+      q(Qatar),
+      q(State of Qatar),
+      ],
+   q(0180) => [
+      q(Reunion),
+      q(Department of Reunion),
+      ],
+   q(0181) => [
+      q(Romania),
+      ],
+   q(0182) => [
+      q(Russian Federation),
+      q(Russia),
+      ],
+   q(0183) => [
+      q(Rwanda),
+      q(Rwandese Republic),
+      ],
+   q(0184) => [
+      q(Saint Barthelemy),
+      q(Saint-Barthelemy),
+      ],
+   q(0185) => [
+      q(Saint Helena, Ascension and Tristan da Cunha),
+      q(Saint Helena),
+      ],
+   q(0186) => [
+      q(Saint Kitts and Nevis),
+      q(Federation of Saint Kitts and Nevis),
+      ],
+   q(0187) => [
+      q(Saint Lucia),
+      ],
+   q(0188) => [
+      q(Saint Martin),
+      q(Saint-Martin (French part)),
+      ],
+   q(0189) => [
+      q(Saint Pierre and Miquelon),
+      q(Territorial Collectivity of Saint Pierre and Miquelon),
+      ],
+   q(0190) => [
+      q(Saint Vincent and the Grenadines),
+      ],
+   q(0191) => [
+      q(Samoa),
+      q(Independent State of Samoa),
+      ],
+   q(0192) => [
+      q(San Marino),
+      q(Republic of San Marino),
+      ],
+   q(0193) => [
+      q(Sao Tome and Principe),
+      q(Democratic Republic of Sao Tome and Principe),
+      ],
+   q(0194) => [
+      q(Saudi Arabia),
+      q(Kingdom of Saudi Arabia),
+      ],
+   q(0195) => [
+      q(Senegal),
+      q(Republic of Senegal),
+      ],
+   q(0196) => [
+      q(Serbia),
+      ],
+   q(0197) => [
+      q(Seychelles),
+      q(Republic of Seychelles),
+      ],
+   q(0198) => [
+      q(Sierra Leone),
+      q(Republic of Sierra Leone),
+      ],
+   q(0199) => [
+      q(Singapore),
+      q(Republic of Singapore),
+      ],
+   q(0200) => [
+      q(Slovakia),
+      q(Slovak Republic),
+      ],
+   q(0201) => [
+      q(Slovenia),
+      q(Republic of Slovenia),
+      ],
+   q(0202) => [
+      q(Solomon Islands),
+      ],
+   q(0203) => [
+      q(Somalia),
+      ],
+   q(0204) => [
+      q(South Africa),
+      q(Republic of South Africa),
+      ],
+   q(0205) => [
+      q(South Georgia and the South Sandwich Islands),
+      q(South Georgia and the Islands),
+      ],
+   q(0206) => [
+      q(Spain),
+      q(Kingdom of Spain),
+      ],
+   q(0207) => [
+      q(Sri Lanka),
+      q(Democratic Socialist Republic of Sri Lanka),
+      ],
+   q(0208) => [
+      q(Sudan),
+      q(Republic of the Sudan),
+      ],
+   q(0209) => [
+      q(Suriname),
+      q(Republic of Suriname),
+      ],
+   q(0210) => [
+      q(Svalbard and Jan Mayen),
+      q(Svalbard and Jan Mayen Islands),
+      ],
+   q(0211) => [
+      q(Swaziland),
+      q(Kingdom of Swaziland),
+      ],
+   q(0212) => [
+      q(Sweden),
+      q(Kingdom of Sweden),
+      ],
+   q(0213) => [
+      q(Switzerland),
+      q(Swiss Confederation),
+      ],
+   q(0214) => [
+      q(Syrian Arab Republic),
+      q(Syria),
+      q(Golan Heights (Israeli-occupied)),
+      ],
+   q(0215) => [
+      q(Taiwan, Province of China),
+      q(Taiwan),
+      ],
+   q(0216) => [
+      q(Tajikistan),
+      q(Republic of Tajikistan),
+      ],
+   q(0217) => [
+      q(Tanzania, United Republic of),
+      q(United Republic of Tanzania),
+      q(Tanzania),
+      ],
+   q(0218) => [
+      q(Thailand),
+      q(Kingdom of Thailand),
+      ],
+   q(0219) => [
+      q(Timor-Leste),
+      q(East Timor),
+      ],
+   q(0220) => [
+      q(Togo),
+      q(Togolese Republic),
+      ],
+   q(0221) => [
+      q(Tokelau),
+      ],
+   q(0222) => [
+      q(Tonga),
+      q(Kingdom of Tonga),
+      ],
+   q(0223) => [
+      q(Trinidad and Tobago),
+      q(Republic of Trinidad and Tobago),
+      ],
+   q(0224) => [
+      q(Tunisia),
+      q(Republic of Tunisia),
+      ],
+   q(0225) => [
+      q(Turkey),
+      q(Republic of Turkey),
+      ],
+   q(0226) => [
+      q(Turkmenistan),
+      ],
+   q(0227) => [
+      q(Turks and Caicos Islands),
+      ],
+   q(0228) => [
+      q(Tuvalu),
+      ],
+   q(0229) => [
+      q(Uganda),
+      ],
+   q(0230) => [
+      q(Ukraine),
+      ],
+   q(0231) => [
+      q(United Arab Emirates),
+      ],
+   q(0232) => [
+      q(United Kingdom),
+      q(United Kingdom of Great Britain and Northern Ireland),
+      q(Great Britain),
+      q(UK),
+      ],
+   q(0233) => [
+      q(United States),
+      q(United States of America),
+      q(US),
+      q(USA),
+      ],
+   q(0234) => [
+      q(United States Minor Outlying Islands),
+      ],
+   q(0235) => [
+      q(Uruguay),
+      q(Oriental Republic of Uruguay),
+      ],
+   q(0236) => [
+      q(Uzbekistan),
+      q(Republic of Uzbekistan),
+      ],
+   q(0237) => [
+      q(Vanuatu),
+      q(Republic of Vanuatu),
+      ],
+   q(0238) => [
+      q(Venezuela, Bolivarian Republic of),
+      q(Venezuela (Bolivarian Republic of)),
+      q(Venezuela),
+      q(Bolivarian Republic of Venezuela),
+      ],
+   q(0239) => [
+      q(Viet Nam),
+      q(Vietnam),
+      q(Socialist Republic of Vietnam),
+      ],
+   q(0240) => [
+      q(Virgin Islands, British),
+      q(British Virgin Islands),
+      q(Virgin Islands (UK)),
+      ],
+   q(0241) => [
+      q(Virgin Islands, U.S.),
+      q(United States Virgin Islands),
+      q(Virgin Islands),
+      q(Virgin Islands of the United States),
+      q(Virgin Islands (US)),
+      ],
+   q(0242) => [
+      q(Wallis and Futuna),
+      q(Wallis and Futuna Islands),
+      q(Territory of the Wallis and Futuna Islands),
+      ],
+   q(0243) => [
+      q(Western Sahara),
+      ],
+   q(0244) => [
+      q(Yemen),
+      q(Republic of Yemen),
+      ],
+   q(0245) => [
+      q(Zambia),
+      q(Republic of Zambia),
+      ],
+   q(0246) => [
+      q(Zimbabwe),
+      q(Republic of Zimbabwe),
+      ],
+   q(0247) => [
+      q(Channel Islands),
+      ],
+   q(0248) => [
+      q(Serbia and Montenegro),
+      ],
+   q(0249) => [
+      q(Ashmore and Cartier Islands),
+      q(Territory of Ashmore and Cartier Islands),
+      ],
+   q(0250) => [
+      q(Baker Island),
+      ],
+   q(0251) => [
+      q(Bassas da India),
+      ],
+   q(0252) => [
+      q(Clipperton Island),
+      ],
+   q(0253) => [
+      q(Coral Sea Islands),
+      q(Coral Sea Islands Territory),
+      ],
+   q(0254) => [
+      q(Europa Island),
+      ],
+   q(0255) => [
+      q(Gaza Strip),
+      ],
+   q(0256) => [
+      q(Glorioso Islands),
+      ],
+   q(0257) => [
+      q(Howland Island),
+      ],
+   q(0258) => [
+      q(Jan Mayen),
+      ],
+   q(0259) => [
+      q(Jarvis Island),
+      ],
+   q(0260) => [
+      q(Johnston Atoll),
+      ],
+   q(0261) => [
+      q(Juan De Nova Island),
+      ],
+   q(0262) => [
+      q(Kingman Reef),
+      ],
+   q(0263) => [
+      q(Midway Islands),
+      ],
+   q(0264) => [
+      q(Navassa Island),
+      ],
+   q(0265) => [
+      q(Palmyra Atoll),
+      ],
+   q(0266) => [
+      q(Paracel Islands),
+      ],
+   q(0267) => [
+      q(Spratly Islands),
+      ],
+   q(0268) => [
+      q(Svalbard),
+      ],
+   q(0269) => [
+      q(Tromelin Island),
+      ],
+   q(0270) => [
+      q(Wake Atoll),
+      q(Wake Island),
+      ],
+   q(0271) => [
+      q(West Bank),
+      ],
+   q(0272) => [
+      q(Ascension Island),
+      ],
+   q(0273) => [
+      q(European Union),
+      ],
+   q(0274) => [
+      q(Soviet Union ),
+      ],
+   q(0275) => [
+      q(Portuguese Timor ),
+      ],
+   q(0276) => [
+      q(France, Metropolitan),
+      ],
+   q(0277) => [
+      q(Kosovo),
+      ],
+};
+
+$Locale::Codes::Data{'country'}{'alias2id'} = {
+   q(afghanistan) => [
+      q(0001),
+      q(0),
+      ],
+   q(aland islands) => [
+      q(0002),
+      q(0),
+      ],
+   q(albania) => [
+      q(0003),
+      q(0),
+      ],
+   q(algeria) => [
+      q(0004),
+      q(0),
+      ],
+   q(american samoa) => [
+      q(0005),
+      q(0),
+      ],
+   q(andorra) => [
+      q(0006),
+      q(0),
+      ],
+   q(angola) => [
+      q(0007),
+      q(0),
+      ],
+   q(anguilla) => [
+      q(0008),
+      q(0),
+      ],
+   q(antarctica) => [
+      q(0009),
+      q(0),
+      ],
+   q(antigua and barbuda) => [
+      q(0010),
+      q(0),
+      ],
+   q(arab republic of egypt) => [
+      q(0064),
+      q(1),
+      ],
+   q(argentina) => [
+      q(0011),
+      q(0),
+      ],
+   q(argentine republic) => [
+      q(0011),
+      q(1),
+      ],
+   q(armenia) => [
+      q(0012),
+      q(0),
+      ],
+   q(aruba) => [
+      q(0013),
+      q(0),
+      ],
+   q(ascension island) => [
+      q(0272),
+      q(0),
+      ],
+   q(ashmore and cartier islands) => [
+      q(0249),
+      q(0),
+      ],
+   q(australia) => [
+      q(0014),
+      q(0),
+      ],
+   q(austria) => [
+      q(0015),
+      q(0),
+      ],
+   q(azerbaijan) => [
+      q(0016),
+      q(0),
+      ],
+   q(bahamas) => [
+      q(0017),
+      q(0),
+      ],
+   q(bahamas, the) => [
+      q(0017),
+      q(1),
+      ],
+   q(bahrain) => [
+      q(0018),
+      q(0),
+      ],
+   q(bailiwick of guernsey) => [
+      q(0090),
+      q(1),
+      ],
+   q(bailiwick of jersey) => [
+      q(0111),
+      q(1),
+      ],
+   q(baker island) => [
+      q(0250),
+      q(0),
+      ],
+   q(bangladesh) => [
+      q(0019),
+      q(0),
+      ],
+   q(barbados) => [
+      q(0020),
+      q(0),
+      ],
+   q(bassas da india) => [
+      q(0251),
+      q(0),
+      ],
+   q(belarus) => [
+      q(0021),
+      q(0),
+      ],
+   q(belgium) => [
+      q(0022),
+      q(0),
+      ],
+   q(belize) => [
+      q(0023),
+      q(0),
+      ],
+   q(benin) => [
+      q(0024),
+      q(0),
+      ],
+   q(bermuda) => [
+      q(0025),
+      q(0),
+      ],
+   q(bhutan) => [
+      q(0026),
+      q(0),
+      ],
+   q(bolivarian republic of venezuela) => [
+      q(0238),
+      q(3),
+      ],
+   q(bolivia) => [
+      q(0027),
+      q(2),
+      ],
+   q(bolivia (plurinational state of)) => [
+      q(0027),
+      q(1),
+      ],
+   q(bolivia, plurinational state of) => [
+      q(0027),
+      q(0),
+      ],
+   q(bosnia and herzegovina) => [
+      q(0028),
+      q(0),
+      ],
+   q(botswana) => [
+      q(0029),
+      q(0),
+      ],
+   q(bouvet island) => [
+      q(0030),
+      q(0),
+      ],
+   q(brazil) => [
+      q(0031),
+      q(0),
+      ],
+   q(british indian ocean territory) => [
+      q(0032),
+      q(0),
+      ],
+   q(british virgin islands) => [
+      q(0240),
+      q(1),
+      ],
+   q(brunei) => [
+      q(0033),
+      q(1),
+      ],
+   q(brunei darussalam) => [
+      q(0033),
+      q(0),
+      ],
+   q(bulgaria) => [
+      q(0034),
+      q(0),
+      ],
+   q(burkina faso) => [
+      q(0035),
+      q(0),
+      ],
+   q(burma) => [
+      q(0151),
+      q(1),
+      ],
+   q(burundi) => [
+      q(0036),
+      q(0),
+      ],
+   q(cambodia) => [
+      q(0037),
+      q(0),
+      ],
+   q(cameroon) => [
+      q(0038),
+      q(0),
+      ],
+   q(canada) => [
+      q(0039),
+      q(0),
+      ],
+   q(cape verde) => [
+      q(0040),
+      q(0),
+      ],
+   q(cayman islands) => [
+      q(0041),
+      q(0),
+      ],
+   q(central african republic) => [
+      q(0042),
+      q(0),
+      ],
+   q(chad) => [
+      q(0043),
+      q(0),
+      ],
+   q(channel islands) => [
+      q(0247),
+      q(0),
+      ],
+   q(chile) => [
+      q(0044),
+      q(0),
+      ],
+   q(china) => [
+      q(0045),
+      q(0),
+      ],
+   q(china, hong kong special administrative region) => [
+      q(0098),
+      q(1),
+      ],
+   q(china, macao special administrative region) => [
+      q(0129),
+      q(1),
+      ],
+   q(christmas island) => [
+      q(0046),
+      q(0),
+      ],
+   q(clipperton island) => [
+      q(0252),
+      q(0),
+      ],
+   q(co-operative republic of guyana) => [
+      q(0093),
+      q(1),
+      ],
+   q(cocos (keeling) islands) => [
+      q(0047),
+      q(0),
+      ],
+   q(cocos islands) => [
+      q(0047),
+      q(3),
+      ],
+   q(colombia) => [
+      q(0048),
+      q(0),
+      ],
+   q(commonwealth of australia) => [
+      q(0014),
+      q(1),
+      ],
+   q(commonwealth of dominica) => [
+      q(0061),
+      q(1),
+      ],
+   q(commonwealth of puerto rico) => [
+      q(0178),
+      q(1),
+      ],
+   q(commonwealth of the bahamas) => [
+      q(0017),
+      q(2),
+      ],
+   q(commonwealth of the northern mariana islands) => [
+      q(0164),
+      q(1),
+      ],
+   q(comoros) => [
+      q(0049),
+      q(0),
+      ],
+   q(congo) => [
+      q(0050),
+      q(0),
+      ],
+   q(congo (brazzaville)) => [
+      q(0050),
+      q(1),
+      ],
+   q(congo (kinshasa)) => [
+      q(0051),
+      q(2),
+      ],
+   q(congo, democratic republic of the) => [
+      q(0051),
+      q(3),
+      ],
+   q(congo, republic of the) => [
+      q(0050),
+      q(3),
+      ],
+   q(congo, the democratic republic of the) => [
+      q(0051),
+      q(0),
+      ],
+   q(cook islands) => [
+      q(0052),
+      q(0),
+      ],
+   q(coral sea islands) => [
+      q(0253),
+      q(0),
+      ],
+   q(coral sea islands territory) => [
+      q(0253),
+      q(1),
+      ],
+   q(costa rica) => [
+      q(0053),
+      q(0),
+      ],
+   q(cote d'ivoire) => [
+      q(0054),
+      q(0),
+      ],
+   q(croatia) => [
+      q(0055),
+      q(0),
+      ],
+   q(cuba) => [
+      q(0056),
+      q(0),
+      ],
+   q(cyprus) => [
+      q(0057),
+      q(0),
+      ],
+   q(czech republic) => [
+      q(0058),
+      q(0),
+      ],
+   q(democratic people's republic of korea) => [
+      q(0116),
+      q(1),
+      ],
+   q(democratic republic of sao tome and principe) => [
+      q(0193),
+      q(1),
+      ],
+   q(democratic republic of the congo) => [
+      q(0051),
+      q(1),
+      ],
+   q(democratic socialist republic of sri lanka) => [
+      q(0207),
+      q(1),
+      ],
+   q(denmark) => [
+      q(0059),
+      q(0),
+      ],
+   q(department of guadeloupe) => [
+      q(0087),
+      q(1),
+      ],
+   q(department of guiana) => [
+      q(0075),
+      q(1),
+      ],
+   q(department of martinique) => [
+      q(0138),
+      q(1),
+      ],
+   q(department of reunion) => [
+      q(0180),
+      q(1),
+      ],
+   q(djibouti) => [
+      q(0060),
+      q(0),
+      ],
+   q(dominica) => [
+      q(0061),
+      q(0),
+      ],
+   q(dominican republic) => [
+      q(0062),
+      q(0),
+      ],
+   q(east timor) => [
+      q(0219),
+      q(1),
+      ],
+   q(ecuador) => [
+      q(0063),
+      q(0),
+      ],
+   q(egypt) => [
+      q(0064),
+      q(0),
+      ],
+   q(el salvador) => [
+      q(0065),
+      q(0),
+      ],
+   q(equatorial guinea) => [
+      q(0066),
+      q(0),
+      ],
+   q(eritrea) => [
+      q(0067),
+      q(0),
+      ],
+   q(estonia) => [
+      q(0068),
+      q(0),
+      ],
+   q(ethiopia) => [
+      q(0069),
+      q(0),
+      ],
+   q(europa island) => [
+      q(0254),
+      q(0),
+      ],
+   q(european union) => [
+      q(0273),
+      q(0),
+      ],
+   q(faeroe islands) => [
+      q(0071),
+      q(1),
+      ],
+   q(falkland islands (islas malvinas)) => [
+      q(0070),
+      q(1),
+      ],
+   q(falkland islands (malvinas)) => [
+      q(0070),
+      q(0),
+      ],
+   q(faroe islands) => [
+      q(0071),
+      q(0),
+      ],
+   q(federal democratic republic of ethiopia) => [
+      q(0069),
+      q(1),
+      ],
+   q(federal islamic republic of the comoros) => [
+      q(0049),
+      q(1),
+      ],
+   q(federal republic of germany) => [
+      q(0081),
+      q(1),
+      ],
+   q(federal republic of nigeria) => [
+      q(0161),
+      q(1),
+      ],
+   q(federated states of micronesia) => [
+      q(0143),
+      q(2),
+      ],
+   q(federation of saint kitts and nevis) => [
+      q(0186),
+      q(1),
+      ],
+   q(federative republic of brazil) => [
+      q(0031),
+      q(1),
+      ],
+   q(fiji) => [
+      q(0072),
+      q(0),
+      ],
+   q(finland) => [
+      q(0073),
+      q(0),
+      ],
+   q(france) => [
+      q(0074),
+      q(0),
+      ],
+   q(france, metropolitan) => [
+      q(0276),
+      q(0),
+      ],
+   q(french guiana) => [
+      q(0075),
+      q(0),
+      ],
+   q(french polynesia) => [
+      q(0076),
+      q(0),
+      ],
+   q(french republic) => [
+      q(0074),
+      q(1),
+      ],
+   q(french southern and antarctic lands) => [
+      q(0077),
+      q(1),
+      ],
+   q(french southern territories) => [
+      q(0077),
+      q(0),
+      ],
+   q(gabon) => [
+      q(0078),
+      q(0),
+      ],
+   q(gabonese republic) => [
+      q(0078),
+      q(1),
+      ],
+   q(gambia) => [
+      q(0079),
+      q(0),
+      ],
+   q(gambia, the) => [
+      q(0079),
+      q(1),
+      ],
+   q(gaza strip) => [
+      q(0255),
+      q(0),
+      ],
+   q(georgia) => [
+      q(0080),
+      q(0),
+      ],
+   q(germany) => [
+      q(0081),
+      q(0),
+      ],
+   q(ghana) => [
+      q(0082),
+      q(0),
+      ],
+   q(gibraltar) => [
+      q(0083),
+      q(0),
+      ],
+   q(glorioso islands) => [
+      q(0256),
+      q(0),
+      ],
+   q(golan heights (israeli-occupied)) => [
+      q(0214),
+      q(2),
+      ],
+   q(grand duchy of luxembourg) => [
+      q(0128),
+      q(1),
+      ],
+   q(great britain) => [
+      q(0232),
+      q(2),
+      ],
+   q(great socialist people's libyan arab jamahiriya) => [
+      q(0125),
+      q(2),
+      ],
+   q(greece) => [
+      q(0084),
+      q(0),
+      ],
+   q(greenland) => [
+      q(0085),
+      q(0),
+      ],
+   q(grenada) => [
+      q(0086),
+      q(0),
+      ],
+   q(guadeloupe) => [
+      q(0087),
+      q(0),
+      ],
+   q(guam) => [
+      q(0088),
+      q(0),
+      ],
+   q(guatemala) => [
+      q(0089),
+      q(0),
+      ],
+   q(guernsey) => [
+      q(0090),
+      q(0),
+      ],
+   q(guinea) => [
+      q(0091),
+      q(0),
+      ],
+   q(guinea-bissau) => [
+      q(0092),
+      q(0),
+      ],
+   q(guyana) => [
+      q(0093),
+      q(0),
+      ],
+   q(haiti) => [
+      q(0094),
+      q(0),
+      ],
+   q(hashemite kingdom of jordan) => [
+      q(0112),
+      q(1),
+      ],
+   q(heard island and mcdonald islands) => [
+      q(0095),
+      q(0),
+      ],
+   q(hellenic republic) => [
+      q(0084),
+      q(1),
+      ],
+   q(holy see) => [
+      q(0096),
+      q(1),
+      ],
+   q(holy see (vatican city state)) => [
+      q(0096),
+      q(0),
+      ],
+   q(holy see (vatican city)) => [
+      q(0096),
+      q(4),
+      ],
+   q(honduras) => [
+      q(0097),
+      q(0),
+      ],
+   q(hong kong) => [
+      q(0098),
+      q(0),
+      ],
+   q(hong kong s.a.r.) => [
+      q(0098),
+      q(2),
+      ],
+   q(hong kong special administrative region) => [
+      q(0098),
+      q(3),
+      ],
+   q(hong kong special administrative region of china) => [
+      q(0098),
+      q(4),
+      ],
+   q(howland island) => [
+      q(0257),
+      q(0),
+      ],
+   q(hungary) => [
+      q(0099),
+      q(0),
+      ],
+   q(iceland) => [
+      q(0100),
+      q(0),
+      ],
+   q(independent state of papua new guinea) => [
+      q(0171),
+      q(1),
+      ],
+   q(independent state of samoa) => [
+      q(0191),
+      q(1),
+      ],
+   q(india) => [
+      q(0101),
+      q(0),
+      ],
+   q(indonesia) => [
+      q(0102),
+      q(0),
+      ],
+   q(iran) => [
+      q(0103),
+      q(2),
+      ],
+   q(iran (islamic republic of)) => [
+      q(0103),
+      q(1),
+      ],
+   q(iran, islamic republic of) => [
+      q(0103),
+      q(0),
+      ],
+   q(iraq) => [
+      q(0104),
+      q(0),
+      ],
+   q(ireland) => [
+      q(0105),
+      q(0),
+      ],
+   q(islamic republic of iran) => [
+      q(0103),
+      q(3),
+      ],
+   q(islamic republic of mauritania) => [
+      q(0139),
+      q(1),
+      ],
+   q(islamic republic of pakistan) => [
+      q(0167),
+      q(1),
+      ],
+   q(islamic state of afghanistan) => [
+      q(0001),
+      q(1),
+      ],
+   q(isle of man) => [
+      q(0106),
+      q(0),
+      ],
+   q(israel) => [
+      q(0107),
+      q(0),
+      ],
+   q(italian republic) => [
+      q(0108),
+      q(1),
+      ],
+   q(italy) => [
+      q(0108),
+      q(0),
+      ],
+   q(jamaica) => [
+      q(0109),
+      q(0),
+      ],
+   q(jan mayen) => [
+      q(0258),
+      q(0),
+      ],
+   q(japan) => [
+      q(0110),
+      q(0),
+      ],
+   q(jarvis island) => [
+      q(0259),
+      q(0),
+      ],
+   q(jersey) => [
+      q(0111),
+      q(0),
+      ],
+   q(johnston atoll) => [
+      q(0260),
+      q(0),
+      ],
+   q(jordan) => [
+      q(0112),
+      q(0),
+      ],
+   q(juan de nova island) => [
+      q(0261),
+      q(0),
+      ],
+   q(kazakhstan) => [
+      q(0113),
+      q(0),
+      ],
+   q(kazakstan) => [
+      q(0113),
+      q(2),
+      ],
+   q(keeling islands) => [
+      q(0047),
+      q(2),
+      ],
+   q(kenya) => [
+      q(0114),
+      q(0),
+      ],
+   q(kingdom of belgium) => [
+      q(0022),
+      q(1),
+      ],
+   q(kingdom of bhutan) => [
+      q(0026),
+      q(1),
+      ],
+   q(kingdom of cambodia) => [
+      q(0037),
+      q(1),
+      ],
+   q(kingdom of denmark) => [
+      q(0059),
+      q(1),
+      ],
+   q(kingdom of morocco) => [
+      q(0149),
+      q(1),
+      ],
+   q(kingdom of nepal) => [
+      q(0154),
+      q(1),
+      ],
+   q(kingdom of norway) => [
+      q(0165),
+      q(1),
+      ],
+   q(kingdom of saudi arabia) => [
+      q(0194),
+      q(1),
+      ],
+   q(kingdom of spain) => [
+      q(0206),
+      q(1),
+      ],
+   q(kingdom of swaziland) => [
+      q(0211),
+      q(1),
+      ],
+   q(kingdom of sweden) => [
+      q(0212),
+      q(1),
+      ],
+   q(kingdom of thailand) => [
+      q(0218),
+      q(1),
+      ],
+   q(kingdom of the netherlands) => [
+      q(0155),
+      q(1),
+      ],
+   q(kingdom of tonga) => [
+      q(0222),
+      q(1),
+      ],
+   q(kingman reef) => [
+      q(0262),
+      q(0),
+      ],
+   q(kiribati) => [
+      q(0115),
+      q(0),
+      ],
+   q(korea, democratic people's republic of) => [
+      q(0116),
+      q(0),
+      ],
+   q(korea, north) => [
+      q(0116),
+      q(2),
+      ],
+   q(korea, republic of) => [
+      q(0117),
+      q(0),
+      ],
+   q(korea, south) => [
+      q(0117),
+      q(2),
+      ],
+   q(kosovo) => [
+      q(0277),
+      q(0),
+      ],
+   q(kuwait) => [
+      q(0118),
+      q(0),
+      ],
+   q(kyrgyz republic) => [
+      q(0119),
+      q(1),
+      ],
+   q(kyrgyzstan) => [
+      q(0119),
+      q(0),
+      ],
+   q(lao people's democratic republic) => [
+      q(0120),
+      q(0),
+      ],
+   q(laos) => [
+      q(0120),
+      q(1),
+      ],
+   q(latvia) => [
+      q(0121),
+      q(0),
+      ],
+   q(lebanese republic) => [
+      q(0122),
+      q(1),
+      ],
+   q(lebanon) => [
+      q(0122),
+      q(0),
+      ],
+   q(lesotho) => [
+      q(0123),
+      q(0),
+      ],
+   q(liberia) => [
+      q(0124),
+      q(0),
+      ],
+   q(libya) => [
+      q(0125),
+      q(1),
+      ],
+   q(libyan arab jamahiriya) => [
+      q(0125),
+      q(0),
+      ],
+   q(liechtenstein) => [
+      q(0126),
+      q(0),
+      ],
+   q(lithuania) => [
+      q(0127),
+      q(0),
+      ],
+   q(luxembourg) => [
+      q(0128),
+      q(0),
+      ],
+   q(macao) => [
+      q(0129),
+      q(0),
+      ],
+   q(macao special administrative region of china) => [
+      q(0129),
+      q(6),
+      ],
+   q(macau) => [
+      q(0129),
+      q(4),
+      ],
+   q(macau s.a.r) => [
+      q(0129),
+      q(2),
+      ],
+   q(macau s.a.r.) => [
+      q(0129),
+      q(5),
+      ],
+   q(macau special administrative region) => [
+      q(0129),
+      q(3),
+      ],
+   q(macedonia) => [
+      q(0130),
+      q(2),
+      ],
+   q(macedonia, former yugoslav republic of) => [
+      q(0130),
+      q(4),
+      ],
+   q(macedonia, the former yugoslav republic of) => [
+      q(0130),
+      q(0),
+      ],
+   q(madagascar) => [
+      q(0131),
+      q(0),
+      ],
+   q(malawi) => [
+      q(0132),
+      q(0),
+      ],
+   q(malaysia) => [
+      q(0133),
+      q(0),
+      ],
+   q(maldives) => [
+      q(0134),
+      q(0),
+      ],
+   q(mali) => [
+      q(0135),
+      q(0),
+      ],
+   q(malta) => [
+      q(0136),
+      q(0),
+      ],
+   q(marshall islands) => [
+      q(0137),
+      q(0),
+      ],
+   q(martinique) => [
+      q(0138),
+      q(0),
+      ],
+   q(mauritania) => [
+      q(0139),
+      q(0),
+      ],
+   q(mauritius) => [
+      q(0140),
+      q(0),
+      ],
+   q(mayotte) => [
+      q(0141),
+      q(0),
+      ],
+   q(mexico) => [
+      q(0142),
+      q(0),
+      ],
+   q(micronesia (federated states of)) => [
+      q(0143),
+      q(1),
+      ],
+   q(micronesia, federated states of) => [
+      q(0143),
+      q(0),
+      ],
+   q(midway islands) => [
+      q(0263),
+      q(0),
+      ],
+   q(moldova) => [
+      q(0144),
+      q(2),
+      ],
+   q(moldova, republic of) => [
+      q(0144),
+      q(0),
+      ],
+   q(monaco) => [
+      q(0145),
+      q(0),
+      ],
+   q(mongolia) => [
+      q(0146),
+      q(0),
+      ],
+   q(montenegro) => [
+      q(0147),
+      q(0),
+      ],
+   q(montserrat) => [
+      q(0148),
+      q(0),
+      ],
+   q(morocco) => [
+      q(0149),
+      q(0),
+      ],
+   q(mozambique) => [
+      q(0150),
+      q(0),
+      ],
+   q(myanmar) => [
+      q(0151),
+      q(0),
+      ],
+   q(namibia) => [
+      q(0152),
+      q(0),
+      ],
+   q(nauru) => [
+      q(0153),
+      q(0),
+      ],
+   q(navassa island) => [
+      q(0264),
+      q(0),
+      ],
+   q(negara brunei darussalam) => [
+      q(0033),
+      q(2),
+      ],
+   q(nepal) => [
+      q(0154),
+      q(0),
+      ],
+   q(netherlands) => [
+      q(0155),
+      q(0),
+      ],
+   q(netherlands antilles) => [
+      q(0156),
+      q(0),
+      ],
+   q(new caledonia) => [
+      q(0157),
+      q(0),
+      ],
+   q(new zealand) => [
+      q(0158),
+      q(0),
+      ],
+   q(nicaragua) => [
+      q(0159),
+      q(0),
+      ],
+   q(niger) => [
+      q(0160),
+      q(0),
+      ],
+   q(nigeria) => [
+      q(0161),
+      q(0),
+      ],
+   q(niue) => [
+      q(0162),
+      q(0),
+      ],
+   q(norfolk island) => [
+      q(0163),
+      q(0),
+      ],
+   q(north korea) => [
+      q(0116),
+      q(3),
+      ],
+   q(northern mariana islands) => [
+      q(0164),
+      q(0),
+      ],
+   q(norway) => [
+      q(0165),
+      q(0),
+      ],
+   q(occupied palestinian territory) => [
+      q(0169),
+      q(1),
+      ],
+   q(oman) => [
+      q(0166),
+      q(0),
+      ],
+   q(oriental republic of uruguay) => [
+      q(0235),
+      q(1),
+      ],
+   q(pakistan) => [
+      q(0167),
+      q(0),
+      ],
+   q(palau) => [
+      q(0168),
+      q(0),
+      ],
+   q(palestinian territory, occupied) => [
+      q(0169),
+      q(0),
+      ],
+   q(palmyra atoll) => [
+      q(0265),
+      q(0),
+      ],
+   q(panama) => [
+      q(0170),
+      q(0),
+      ],
+   q(papua new guinea) => [
+      q(0171),
+      q(0),
+      ],
+   q(paracel islands) => [
+      q(0266),
+      q(0),
+      ],
+   q(paraguay) => [
+      q(0172),
+      q(0),
+      ],
+   q(people's democratic republic of algeria) => [
+      q(0004),
+      q(1),
+      ],
+   q(people's republic of bangladesh) => [
+      q(0019),
+      q(1),
+      ],
+   q(people's republic of china) => [
+      q(0045),
+      q(1),
+      ],
+   q(peru) => [
+      q(0173),
+      q(0),
+      ],
+   q(philippines) => [
+      q(0174),
+      q(0),
+      ],
+   q(pitcairn) => [
+      q(0175),
+      q(0),
+      ],
+   q(pitcairn island) => [
+      q(0175),
+      q(3),
+      ],
+   q(pitcairn islands) => [
+      q(0175),
+      q(1),
+      ],
+   q(pitcairn, henderson, ducie and oeno islands) => [
+      q(0175),
+      q(2),
+      ],
+   q(poland) => [
+      q(0176),
+      q(0),
+      ],
+   q(portugal) => [
+      q(0177),
+      q(0),
+      ],
+   q(portuguese republic) => [
+      q(0177),
+      q(1),
+      ],
+   q(portuguese timor ) => [
+      q(0275),
+      q(0),
+      ],
+   q(principality of andorra) => [
+      q(0006),
+      q(1),
+      ],
+   q(principality of liechtenstein) => [
+      q(0126),
+      q(1),
+      ],
+   q(principality of monaco) => [
+      q(0145),
+      q(1),
+      ],
+   q(puerto rico) => [
+      q(0178),
+      q(0),
+      ],
+   q(qatar) => [
+      q(0179),
+      q(0),
+      ],
+   q(republic of albania) => [
+      q(0003),
+      q(1),
+      ],
+   q(republic of angola) => [
+      q(0007),
+      q(1),
+      ],
+   q(republic of armenia) => [
+      q(0012),
+      q(1),
+      ],
+   q(republic of austria) => [
+      q(0015),
+      q(1),
+      ],
+   q(republic of azerbaijan) => [
+      q(0016),
+      q(1),
+      ],
+   q(republic of belarus) => [
+      q(0021),
+      q(1),
+      ],
+   q(republic of benin) => [
+      q(0024),
+      q(1),
+      ],
+   q(republic of bolivia) => [
+      q(0027),
+      q(3),
+      ],
+   q(republic of botswana) => [
+      q(0029),
+      q(1),
+      ],
+   q(republic of burundi) => [
+      q(0036),
+      q(1),
+      ],
+   q(republic of cameroon) => [
+      q(0038),
+      q(1),
+      ],
+   q(republic of cape verde) => [
+      q(0040),
+      q(1),
+      ],
+   q(republic of chad) => [
+      q(0043),
+      q(1),
+      ],
+   q(republic of chile) => [
+      q(0044),
+      q(1),
+      ],
+   q(republic of colombia) => [
+      q(0048),
+      q(1),
+      ],
+   q(republic of costa rica) => [
+      q(0053),
+      q(1),
+      ],
+   q(republic of cote d'ivoire) => [
+      q(0054),
+      q(1),
+      ],
+   q(republic of croatia) => [
+      q(0055),
+      q(1),
+      ],
+   q(republic of cuba) => [
+      q(0056),
+      q(1),
+      ],
+   q(republic of cyprus) => [
+      q(0057),
+      q(1),
+      ],
+   q(republic of djibouti) => [
+      q(0060),
+      q(1),
+      ],
+   q(republic of ecuador) => [
+      q(0063),
+      q(1),
+      ],
+   q(republic of el salvador) => [
+      q(0065),
+      q(1),
+      ],
+   q(republic of equatorial guinea) => [
+      q(0066),
+      q(1),
+      ],
+   q(republic of estonia) => [
+      q(0068),
+      q(1),
+      ],
+   q(republic of finland) => [
+      q(0073),
+      q(1),
+      ],
+   q(republic of ghana) => [
+      q(0082),
+      q(1),
+      ],
+   q(republic of guatemala) => [
+      q(0089),
+      q(1),
+      ],
+   q(republic of guinea) => [
+      q(0091),
+      q(1),
+      ],
+   q(republic of guinea-bissau) => [
+      q(0092),
+      q(1),
+      ],
+   q(republic of haiti) => [
+      q(0094),
+      q(1),
+      ],
+   q(republic of honduras) => [
+      q(0097),
+      q(1),
+      ],
+   q(republic of hungary) => [
+      q(0099),
+      q(1),
+      ],
+   q(republic of iceland) => [
+      q(0100),
+      q(1),
+      ],
+   q(republic of india) => [
+      q(0101),
+      q(1),
+      ],
+   q(republic of indonesia) => [
+      q(0102),
+      q(1),
+      ],
+   q(republic of iraq) => [
+      q(0104),
+      q(1),
+      ],
+   q(republic of kazakhstan) => [
+      q(0113),
+      q(1),
+      ],
+   q(republic of kenya) => [
+      q(0114),
+      q(1),
+      ],
+   q(republic of kiribati) => [
+      q(0115),
+      q(1),
+      ],
+   q(republic of korea) => [
+      q(0117),
+      q(1),
+      ],
+   q(republic of latvia) => [
+      q(0121),
+      q(1),
+      ],
+   q(republic of lesotho) => [
+      q(0123),
+      q(1),
+      ],
+   q(republic of liberia) => [
+      q(0124),
+      q(1),
+      ],
+   q(republic of lithuania) => [
+      q(0127),
+      q(1),
+      ],
+   q(republic of macedonia) => [
+      q(0130),
+      q(3),
+      ],
+   q(republic of madagascar) => [
+      q(0131),
+      q(1),
+      ],
+   q(republic of malawi) => [
+      q(0132),
+      q(1),
+      ],
+   q(republic of maldives) => [
+      q(0134),
+      q(1),
+      ],
+   q(republic of mali) => [
+      q(0135),
+      q(1),
+      ],
+   q(republic of malta) => [
+      q(0136),
+      q(1),
+      ],
+   q(republic of mauritius) => [
+      q(0140),
+      q(1),
+      ],
+   q(republic of moldova) => [
+      q(0144),
+      q(1),
+      ],
+   q(republic of mozambique) => [
+      q(0150),
+      q(1),
+      ],
+   q(republic of namibia) => [
+      q(0152),
+      q(1),
+      ],
+   q(republic of nauru) => [
+      q(0153),
+      q(1),
+      ],
+   q(republic of nicaragua) => [
+      q(0159),
+      q(1),
+      ],
+   q(republic of niger) => [
+      q(0160),
+      q(1),
+      ],
+   q(republic of palau) => [
+      q(0168),
+      q(1),
+      ],
+   q(republic of panama) => [
+      q(0170),
+      q(1),
+      ],
+   q(republic of paraguay) => [
+      q(0172),
+      q(1),
+      ],
+   q(republic of peru) => [
+      q(0173),
+      q(1),
+      ],
+   q(republic of poland) => [
+      q(0176),
+      q(1),
+      ],
+   q(republic of san marino) => [
+      q(0192),
+      q(1),
+      ],
+   q(republic of senegal) => [
+      q(0195),
+      q(1),
+      ],
+   q(republic of seychelles) => [
+      q(0197),
+      q(1),
+      ],
+   q(republic of sierra leone) => [
+      q(0198),
+      q(1),
+      ],
+   q(republic of singapore) => [
+      q(0199),
+      q(1),
+      ],
+   q(republic of slovenia) => [
+      q(0201),
+      q(1),
+      ],
+   q(republic of south africa) => [
+      q(0204),
+      q(1),
+      ],
+   q(republic of suriname) => [
+      q(0209),
+      q(1),
+      ],
+   q(republic of tajikistan) => [
+      q(0216),
+      q(1),
+      ],
+   q(republic of the congo) => [
+      q(0050),
+      q(2),
+      ],
+   q(republic of the fiji islands) => [
+      q(0072),
+      q(1),
+      ],
+   q(republic of the gambia) => [
+      q(0079),
+      q(2),
+      ],
+   q(republic of the marshall islands) => [
+      q(0137),
+      q(1),
+      ],
+   q(republic of the philippines) => [
+      q(0174),
+      q(1),
+      ],
+   q(republic of the sudan) => [
+      q(0208),
+      q(1),
+      ],
+   q(republic of trinidad and tobago) => [
+      q(0223),
+      q(1),
+      ],
+   q(republic of tunisia) => [
+      q(0224),
+      q(1),
+      ],
+   q(republic of turkey) => [
+      q(0225),
+      q(1),
+      ],
+   q(republic of uzbekistan) => [
+      q(0236),
+      q(1),
+      ],
+   q(republic of vanuatu) => [
+      q(0237),
+      q(1),
+      ],
+   q(republic of yemen) => [
+      q(0244),
+      q(1),
+      ],
+   q(republic of zambia) => [
+      q(0245),
+      q(1),
+      ],
+   q(republic of zimbabwe) => [
+      q(0246),
+      q(1),
+      ],
+   q(reunion) => [
+      q(0180),
+      q(0),
+      ],
+   q(romania) => [
+      q(0181),
+      q(0),
+      ],
+   q(russia) => [
+      q(0182),
+      q(1),
+      ],
+   q(russian federation) => [
+      q(0182),
+      q(0),
+      ],
+   q(rwanda) => [
+      q(0183),
+      q(0),
+      ],
+   q(rwandese republic) => [
+      q(0183),
+      q(1),
+      ],
+   q(saint barthelemy) => [
+      q(0184),
+      q(0),
+      ],
+   q(saint helena) => [
+      q(0185),
+      q(1),
+      ],
+   q(saint helena, ascension and tristan da cunha) => [
+      q(0185),
+      q(0),
+      ],
+   q(saint kitts and nevis) => [
+      q(0186),
+      q(0),
+      ],
+   q(saint lucia) => [
+      q(0187),
+      q(0),
+      ],
+   q(saint martin) => [
+      q(0188),
+      q(0),
+      ],
+   q(saint pierre and miquelon) => [
+      q(0189),
+      q(0),
+      ],
+   q(saint vincent and the grenadines) => [
+      q(0190),
+      q(0),
+      ],
+   q(saint-barthelemy) => [
+      q(0184),
+      q(1),
+      ],
+   q(saint-martin (french part)) => [
+      q(0188),
+      q(1),
+      ],
+   q(samoa) => [
+      q(0191),
+      q(0),
+      ],
+   q(san marino) => [
+      q(0192),
+      q(0),
+      ],
+   q(sao tome and principe) => [
+      q(0193),
+      q(0),
+      ],
+   q(saudi arabia) => [
+      q(0194),
+      q(0),
+      ],
+   q(senegal) => [
+      q(0195),
+      q(0),
+      ],
+   q(serbia) => [
+      q(0196),
+      q(0),
+      ],
+   q(serbia and montenegro) => [
+      q(0248),
+      q(0),
+      ],
+   q(seychelles) => [
+      q(0197),
+      q(0),
+      ],
+   q(sierra leone) => [
+      q(0198),
+      q(0),
+      ],
+   q(singapore) => [
+      q(0199),
+      q(0),
+      ],
+   q(slovak republic) => [
+      q(0200),
+      q(1),
+      ],
+   q(slovakia) => [
+      q(0200),
+      q(0),
+      ],
+   q(slovenia) => [
+      q(0201),
+      q(0),
+      ],
+   q(socialist republic of vietnam) => [
+      q(0239),
+      q(2),
+      ],
+   q(solomon islands) => [
+      q(0202),
+      q(0),
+      ],
+   q(somalia) => [
+      q(0203),
+      q(0),
+      ],
+   q(south africa) => [
+      q(0204),
+      q(0),
+      ],
+   q(south georgia and the islands) => [
+      q(0205),
+      q(1),
+      ],
+   q(south georgia and the south sandwich islands) => [
+      q(0205),
+      q(0),
+      ],
+   q(south korea) => [
+      q(0117),
+      q(3),
+      ],
+   q(soviet union ) => [
+      q(0274),
+      q(0),
+      ],
+   q(spain) => [
+      q(0206),
+      q(0),
+      ],
+   q(spratly islands) => [
+      q(0267),
+      q(0),
+      ],
+   q(sri lanka) => [
+      q(0207),
+      q(0),
+      ],
+   q(state of bahrain) => [
+      q(0018),
+      q(1),
+      ],
+   q(state of eritrea) => [
+      q(0067),
+      q(1),
+      ],
+   q(state of israel) => [
+      q(0107),
+      q(1),
+      ],
+   q(state of kuwait) => [
+      q(0118),
+      q(1),
+      ],
+   q(state of qatar) => [
+      q(0179),
+      q(1),
+      ],
+   q(state of the vatican city) => [
+      q(0096),
+      q(3),
+      ],
+   q(sudan) => [
+      q(0208),
+      q(0),
+      ],
+   q(sultanate of oman) => [
+      q(0166),
+      q(1),
+      ],
+   q(suriname) => [
+      q(0209),
+      q(0),
+      ],
+   q(svalbard) => [
+      q(0268),
+      q(0),
+      ],
+   q(svalbard and jan mayen) => [
+      q(0210),
+      q(0),
+      ],
+   q(svalbard and jan mayen islands) => [
+      q(0210),
+      q(1),
+      ],
+   q(swaziland) => [
+      q(0211),
+      q(0),
+      ],
+   q(sweden) => [
+      q(0212),
+      q(0),
+      ],
+   q(swiss confederation) => [
+      q(0213),
+      q(1),
+      ],
+   q(switzerland) => [
+      q(0213),
+      q(0),
+      ],
+   q(syria) => [
+      q(0214),
+      q(1),
+      ],
+   q(syrian arab republic) => [
+      q(0214),
+      q(0),
+      ],
+   q(taiwan) => [
+      q(0215),
+      q(1),
+      ],
+   q(taiwan, province of china) => [
+      q(0215),
+      q(0),
+      ],
+   q(tajikistan) => [
+      q(0216),
+      q(0),
+      ],
+   q(tanzania) => [
+      q(0217),
+      q(2),
+      ],
+   q(tanzania, united republic of) => [
+      q(0217),
+      q(0),
+      ],
+   q(territorial collectivity of mayotte) => [
+      q(0141),
+      q(1),
+      ],
+   q(territorial collectivity of saint pierre and miquelon) => [
+      q(0189),
+      q(1),
+      ],
+   q(territory of american samoa) => [
+      q(0005),
+      q(1),
+      ],
+   q(territory of ashmore and cartier islands) => [
+      q(0249),
+      q(1),
+      ],
+   q(territory of christmas island) => [
+      q(0046),
+      q(1),
+      ],
+   q(territory of cocos (keeling) islands) => [
+      q(0047),
+      q(1),
+      ],
+   q(territory of french polynesia) => [
+      q(0076),
+      q(1),
+      ],
+   q(territory of guam) => [
+      q(0088),
+      q(1),
+      ],
+   q(territory of heard island and mcdonald islands) => [
+      q(0095),
+      q(1),
+      ],
+   q(territory of new caledonia and dependencies) => [
+      q(0157),
+      q(1),
+      ],
+   q(territory of norfolk island) => [
+      q(0163),
+      q(1),
+      ],
+   q(territory of the french southern and antarctic lands) => [
+      q(0077),
+      q(2),
+      ],
+   q(territory of the wallis and futuna islands) => [
+      q(0242),
+      q(2),
+      ],
+   q(thailand) => [
+      q(0218),
+      q(0),
+      ],
+   q(the bahamas) => [
+      q(0017),
+      q(3),
+      ],
+   q(the democratic republic of the congo) => [
+      q(0051),
+      q(4),
+      ],
+   q(the former yugoslav republic of macedonia) => [
+      q(0130),
+      q(1),
+      ],
+   q(the republic of the congo) => [
+      q(0050),
+      q(4),
+      ],
+   q(timor-leste) => [
+      q(0219),
+      q(0),
+      ],
+   q(togo) => [
+      q(0220),
+      q(0),
+      ],
+   q(togolese republic) => [
+      q(0220),
+      q(1),
+      ],
+   q(tokelau) => [
+      q(0221),
+      q(0),
+      ],
+   q(tonga) => [
+      q(0222),
+      q(0),
+      ],
+   q(trinidad and tobago) => [
+      q(0223),
+      q(0),
+      ],
+   q(tromelin island) => [
+      q(0269),
+      q(0),
+      ],
+   q(tunisia) => [
+      q(0224),
+      q(0),
+      ],
+   q(turkey) => [
+      q(0225),
+      q(0),
+      ],
+   q(turkmenistan) => [
+      q(0226),
+      q(0),
+      ],
+   q(turks and caicos islands) => [
+      q(0227),
+      q(0),
+      ],
+   q(tuvalu) => [
+      q(0228),
+      q(0),
+      ],
+   q(uganda) => [
+      q(0229),
+      q(0),
+      ],
+   q(uk) => [
+      q(0232),
+      q(3),
+      ],
+   q(ukraine) => [
+      q(0230),
+      q(0),
+      ],
+   q(union of burma) => [
+      q(0151),
+      q(2),
+      ],
+   q(united arab emirates) => [
+      q(0231),
+      q(0),
+      ],
+   q(united kingdom) => [
+      q(0232),
+      q(0),
+      ],
+   q(united kingdom of great britain and northern ireland) => [
+      q(0232),
+      q(1),
+      ],
+   q(united mexican states) => [
+      q(0142),
+      q(1),
+      ],
+   q(united republic of tanzania) => [
+      q(0217),
+      q(1),
+      ],
+   q(united states) => [
+      q(0233),
+      q(0),
+      ],
+   q(united states minor outlying islands) => [
+      q(0234),
+      q(0),
+      ],
+   q(united states of america) => [
+      q(0233),
+      q(1),
+      ],
+   q(united states virgin islands) => [
+      q(0241),
+      q(1),
+      ],
+   q(uruguay) => [
+      q(0235),
+      q(0),
+      ],
+   q(us) => [
+      q(0233),
+      q(2),
+      ],
+   q(usa) => [
+      q(0233),
+      q(3),
+      ],
+   q(uzbekistan) => [
+      q(0236),
+      q(0),
+      ],
+   q(vanuatu) => [
+      q(0237),
+      q(0),
+      ],
+   q(vatican city) => [
+      q(0096),
+      q(2),
+      ],
+   q(venezuela) => [
+      q(0238),
+      q(2),
+      ],
+   q(venezuela (bolivarian republic of)) => [
+      q(0238),
+      q(1),
+      ],
+   q(venezuela, bolivarian republic of) => [
+      q(0238),
+      q(0),
+      ],
+   q(viet nam) => [
+      q(0239),
+      q(0),
+      ],
+   q(vietnam) => [
+      q(0239),
+      q(1),
+      ],
+   q(virgin islands) => [
+      q(0241),
+      q(2),
+      ],
+   q(virgin islands (uk)) => [
+      q(0240),
+      q(2),
+      ],
+   q(virgin islands (us)) => [
+      q(0241),
+      q(4),
+      ],
+   q(virgin islands of the united states) => [
+      q(0241),
+      q(3),
+      ],
+   q(virgin islands, british) => [
+      q(0240),
+      q(0),
+      ],
+   q(virgin islands, u.s.) => [
+      q(0241),
+      q(0),
+      ],
+   q(wake atoll) => [
+      q(0270),
+      q(0),
+      ],
+   q(wake island) => [
+      q(0270),
+      q(1),
+      ],
+   q(wallis and futuna) => [
+      q(0242),
+      q(0),
+      ],
+   q(wallis and futuna islands) => [
+      q(0242),
+      q(1),
+      ],
+   q(west bank) => [
+      q(0271),
+      q(0),
+      ],
+   q(western sahara) => [
+      q(0243),
+      q(0),
+      ],
+   q(yemen) => [
+      q(0244),
+      q(0),
+      ],
+   q(zambia) => [
+      q(0245),
+      q(0),
+      ],
+   q(zimbabwe) => [
+      q(0246),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'country'}{'code2id'} = {
+   q(alpha2) => {
+      q(ad) => [
+         q(0006),
+         q(0),
+         ],
+      q(ae) => [
+         q(0231),
+         q(0),
+         ],
+      q(af) => [
+         q(0001),
+         q(0),
+         ],
+      q(ag) => [
+         q(0010),
+         q(0),
+         ],
+      q(ai) => [
+         q(0008),
+         q(0),
+         ],
+      q(al) => [
+         q(0003),
+         q(0),
+         ],
+      q(am) => [
+         q(0012),
+         q(0),
+         ],
+      q(an) => [
+         q(0156),
+         q(0),
+         ],
+      q(ao) => [
+         q(0007),
+         q(0),
+         ],
+      q(aq) => [
+         q(0009),
+         q(0),
+         ],
+      q(ar) => [
+         q(0011),
+         q(0),
+         ],
+      q(as) => [
+         q(0005),
+         q(0),
+         ],
+      q(at) => [
+         q(0015),
+         q(0),
+         ],
+      q(au) => [
+         q(0014),
+         q(0),
+         ],
+      q(aw) => [
+         q(0013),
+         q(0),
+         ],
+      q(ax) => [
+         q(0002),
+         q(0),
+         ],
+      q(az) => [
+         q(0016),
+         q(0),
+         ],
+      q(ba) => [
+         q(0028),
+         q(0),
+         ],
+      q(bb) => [
+         q(0020),
+         q(0),
+         ],
+      q(bd) => [
+         q(0019),
+         q(0),
+         ],
+      q(be) => [
+         q(0022),
+         q(0),
+         ],
+      q(bf) => [
+         q(0035),
+         q(0),
+         ],
+      q(bg) => [
+         q(0034),
+         q(0),
+         ],
+      q(bh) => [
+         q(0018),
+         q(0),
+         ],
+      q(bi) => [
+         q(0036),
+         q(0),
+         ],
+      q(bj) => [
+         q(0024),
+         q(0),
+         ],
+      q(bl) => [
+         q(0184),
+         q(0),
+         ],
+      q(bm) => [
+         q(0025),
+         q(0),
+         ],
+      q(bn) => [
+         q(0033),
+         q(0),
+         ],
+      q(bo) => [
+         q(0027),
+         q(0),
+         ],
+      q(br) => [
+         q(0031),
+         q(0),
+         ],
+      q(bs) => [
+         q(0017),
+         q(0),
+         ],
+      q(bt) => [
+         q(0026),
+         q(0),
+         ],
+      q(bv) => [
+         q(0030),
+         q(0),
+         ],
+      q(bw) => [
+         q(0029),
+         q(0),
+         ],
+      q(by) => [
+         q(0021),
+         q(0),
+         ],
+      q(bz) => [
+         q(0023),
+         q(0),
+         ],
+      q(ca) => [
+         q(0039),
+         q(0),
+         ],
+      q(cc) => [
+         q(0047),
+         q(0),
+         ],
+      q(cd) => [
+         q(0051),
+         q(0),
+         ],
+      q(cf) => [
+         q(0042),
+         q(0),
+         ],
+      q(cg) => [
+         q(0050),
+         q(0),
+         ],
+      q(ch) => [
+         q(0213),
+         q(0),
+         ],
+      q(ci) => [
+         q(0054),
+         q(0),
+         ],
+      q(ck) => [
+         q(0052),
+         q(0),
+         ],
+      q(cl) => [
+         q(0044),
+         q(0),
+         ],
+      q(cm) => [
+         q(0038),
+         q(0),
+         ],
+      q(cn) => [
+         q(0045),
+         q(0),
+         ],
+      q(co) => [
+         q(0048),
+         q(0),
+         ],
+      q(cr) => [
+         q(0053),
+         q(0),
+         ],
+      q(cu) => [
+         q(0056),
+         q(0),
+         ],
+      q(cv) => [
+         q(0040),
+         q(0),
+         ],
+      q(cx) => [
+         q(0046),
+         q(0),
+         ],
+      q(cy) => [
+         q(0057),
+         q(0),
+         ],
+      q(cz) => [
+         q(0058),
+         q(0),
+         ],
+      q(de) => [
+         q(0081),
+         q(0),
+         ],
+      q(dj) => [
+         q(0060),
+         q(0),
+         ],
+      q(dk) => [
+         q(0059),
+         q(0),
+         ],
+      q(dm) => [
+         q(0061),
+         q(0),
+         ],
+      q(do) => [
+         q(0062),
+         q(0),
+         ],
+      q(dz) => [
+         q(0004),
+         q(0),
+         ],
+      q(ec) => [
+         q(0063),
+         q(0),
+         ],
+      q(ee) => [
+         q(0068),
+         q(0),
+         ],
+      q(eg) => [
+         q(0064),
+         q(0),
+         ],
+      q(eh) => [
+         q(0243),
+         q(0),
+         ],
+      q(er) => [
+         q(0067),
+         q(0),
+         ],
+      q(es) => [
+         q(0206),
+         q(0),
+         ],
+      q(et) => [
+         q(0069),
+         q(0),
+         ],
+      q(fi) => [
+         q(0073),
+         q(0),
+         ],
+      q(fj) => [
+         q(0072),
+         q(0),
+         ],
+      q(fk) => [
+         q(0070),
+         q(0),
+         ],
+      q(fm) => [
+         q(0143),
+         q(0),
+         ],
+      q(fo) => [
+         q(0071),
+         q(0),
+         ],
+      q(fr) => [
+         q(0074),
+         q(0),
+         ],
+      q(fx) => [
+         q(0276),
+         q(0),
+         ],
+      q(ga) => [
+         q(0078),
+         q(0),
+         ],
+      q(gb) => [
+         q(0232),
+         q(0),
+         ],
+      q(gd) => [
+         q(0086),
+         q(0),
+         ],
+      q(ge) => [
+         q(0080),
+         q(0),
+         ],
+      q(gf) => [
+         q(0075),
+         q(0),
+         ],
+      q(gg) => [
+         q(0090),
+         q(0),
+         ],
+      q(gh) => [
+         q(0082),
+         q(0),
+         ],
+      q(gi) => [
+         q(0083),
+         q(0),
+         ],
+      q(gl) => [
+         q(0085),
+         q(0),
+         ],
+      q(gm) => [
+         q(0079),
+         q(0),
+         ],
+      q(gn) => [
+         q(0091),
+         q(0),
+         ],
+      q(gp) => [
+         q(0087),
+         q(0),
+         ],
+      q(gq) => [
+         q(0066),
+         q(0),
+         ],
+      q(gr) => [
+         q(0084),
+         q(0),
+         ],
+      q(gs) => [
+         q(0205),
+         q(0),
+         ],
+      q(gt) => [
+         q(0089),
+         q(0),
+         ],
+      q(gu) => [
+         q(0088),
+         q(0),
+         ],
+      q(gw) => [
+         q(0092),
+         q(0),
+         ],
+      q(gy) => [
+         q(0093),
+         q(0),
+         ],
+      q(hk) => [
+         q(0098),
+         q(0),
+         ],
+      q(hm) => [
+         q(0095),
+         q(0),
+         ],
+      q(hn) => [
+         q(0097),
+         q(0),
+         ],
+      q(hr) => [
+         q(0055),
+         q(0),
+         ],
+      q(ht) => [
+         q(0094),
+         q(0),
+         ],
+      q(hu) => [
+         q(0099),
+         q(0),
+         ],
+      q(id) => [
+         q(0102),
+         q(0),
+         ],
+      q(ie) => [
+         q(0105),
+         q(0),
+         ],
+      q(il) => [
+         q(0107),
+         q(0),
+         ],
+      q(im) => [
+         q(0106),
+         q(0),
+         ],
+      q(in) => [
+         q(0101),
+         q(0),
+         ],
+      q(io) => [
+         q(0032),
+         q(0),
+         ],
+      q(iq) => [
+         q(0104),
+         q(0),
+         ],
+      q(ir) => [
+         q(0103),
+         q(0),
+         ],
+      q(is) => [
+         q(0100),
+         q(0),
+         ],
+      q(it) => [
+         q(0108),
+         q(0),
+         ],
+      q(je) => [
+         q(0111),
+         q(0),
+         ],
+      q(jm) => [
+         q(0109),
+         q(0),
+         ],
+      q(jo) => [
+         q(0112),
+         q(0),
+         ],
+      q(jp) => [
+         q(0110),
+         q(0),
+         ],
+      q(ke) => [
+         q(0114),
+         q(0),
+         ],
+      q(kg) => [
+         q(0119),
+         q(0),
+         ],
+      q(kh) => [
+         q(0037),
+         q(0),
+         ],
+      q(ki) => [
+         q(0115),
+         q(0),
+         ],
+      q(km) => [
+         q(0049),
+         q(0),
+         ],
+      q(kn) => [
+         q(0186),
+         q(0),
+         ],
+      q(kp) => [
+         q(0116),
+         q(0),
+         ],
+      q(kr) => [
+         q(0117),
+         q(0),
+         ],
+      q(kw) => [
+         q(0118),
+         q(0),
+         ],
+      q(ky) => [
+         q(0041),
+         q(0),
+         ],
+      q(kz) => [
+         q(0113),
+         q(0),
+         ],
+      q(la) => [
+         q(0120),
+         q(0),
+         ],
+      q(lb) => [
+         q(0122),
+         q(0),
+         ],
+      q(lc) => [
+         q(0187),
+         q(0),
+         ],
+      q(li) => [
+         q(0126),
+         q(0),
+         ],
+      q(lk) => [
+         q(0207),
+         q(0),
+         ],
+      q(lr) => [
+         q(0124),
+         q(0),
+         ],
+      q(ls) => [
+         q(0123),
+         q(0),
+         ],
+      q(lt) => [
+         q(0127),
+         q(0),
+         ],
+      q(lu) => [
+         q(0128),
+         q(0),
+         ],
+      q(lv) => [
+         q(0121),
+         q(0),
+         ],
+      q(ly) => [
+         q(0125),
+         q(0),
+         ],
+      q(ma) => [
+         q(0149),
+         q(0),
+         ],
+      q(mc) => [
+         q(0145),
+         q(0),
+         ],
+      q(md) => [
+         q(0144),
+         q(0),
+         ],
+      q(me) => [
+         q(0147),
+         q(0),
+         ],
+      q(mf) => [
+         q(0188),
+         q(0),
+         ],
+      q(mg) => [
+         q(0131),
+         q(0),
+         ],
+      q(mh) => [
+         q(0137),
+         q(0),
+         ],
+      q(mk) => [
+         q(0130),
+         q(0),
+         ],
+      q(ml) => [
+         q(0135),
+         q(0),
+         ],
+      q(mm) => [
+         q(0151),
+         q(0),
+         ],
+      q(mn) => [
+         q(0146),
+         q(0),
+         ],
+      q(mo) => [
+         q(0129),
+         q(0),
+         ],
+      q(mp) => [
+         q(0164),
+         q(0),
+         ],
+      q(mq) => [
+         q(0138),
+         q(0),
+         ],
+      q(mr) => [
+         q(0139),
+         q(0),
+         ],
+      q(ms) => [
+         q(0148),
+         q(0),
+         ],
+      q(mt) => [
+         q(0136),
+         q(0),
+         ],
+      q(mu) => [
+         q(0140),
+         q(0),
+         ],
+      q(mv) => [
+         q(0134),
+         q(0),
+         ],
+      q(mw) => [
+         q(0132),
+         q(0),
+         ],
+      q(mx) => [
+         q(0142),
+         q(0),
+         ],
+      q(my) => [
+         q(0133),
+         q(0),
+         ],
+      q(mz) => [
+         q(0150),
+         q(0),
+         ],
+      q(na) => [
+         q(0152),
+         q(0),
+         ],
+      q(nc) => [
+         q(0157),
+         q(0),
+         ],
+      q(ne) => [
+         q(0160),
+         q(0),
+         ],
+      q(nf) => [
+         q(0163),
+         q(0),
+         ],
+      q(ng) => [
+         q(0161),
+         q(0),
+         ],
+      q(ni) => [
+         q(0159),
+         q(0),
+         ],
+      q(nl) => [
+         q(0155),
+         q(0),
+         ],
+      q(no) => [
+         q(0165),
+         q(0),
+         ],
+      q(np) => [
+         q(0154),
+         q(0),
+         ],
+      q(nr) => [
+         q(0153),
+         q(0),
+         ],
+      q(nu) => [
+         q(0162),
+         q(0),
+         ],
+      q(nz) => [
+         q(0158),
+         q(0),
+         ],
+      q(om) => [
+         q(0166),
+         q(0),
+         ],
+      q(pa) => [
+         q(0170),
+         q(0),
+         ],
+      q(pe) => [
+         q(0173),
+         q(0),
+         ],
+      q(pf) => [
+         q(0076),
+         q(0),
+         ],
+      q(pg) => [
+         q(0171),
+         q(0),
+         ],
+      q(ph) => [
+         q(0174),
+         q(0),
+         ],
+      q(pk) => [
+         q(0167),
+         q(0),
+         ],
+      q(pl) => [
+         q(0176),
+         q(0),
+         ],
+      q(pm) => [
+         q(0189),
+         q(0),
+         ],
+      q(pn) => [
+         q(0175),
+         q(0),
+         ],
+      q(pr) => [
+         q(0178),
+         q(0),
+         ],
+      q(ps) => [
+         q(0169),
+         q(0),
+         ],
+      q(pt) => [
+         q(0177),
+         q(0),
+         ],
+      q(pw) => [
+         q(0168),
+         q(0),
+         ],
+      q(py) => [
+         q(0172),
+         q(0),
+         ],
+      q(qa) => [
+         q(0179),
+         q(0),
+         ],
+      q(re) => [
+         q(0180),
+         q(0),
+         ],
+      q(ro) => [
+         q(0181),
+         q(0),
+         ],
+      q(rs) => [
+         q(0196),
+         q(0),
+         ],
+      q(ru) => [
+         q(0182),
+         q(0),
+         ],
+      q(rw) => [
+         q(0183),
+         q(0),
+         ],
+      q(sa) => [
+         q(0194),
+         q(0),
+         ],
+      q(sb) => [
+         q(0202),
+         q(0),
+         ],
+      q(sc) => [
+         q(0197),
+         q(0),
+         ],
+      q(sd) => [
+         q(0208),
+         q(0),
+         ],
+      q(se) => [
+         q(0212),
+         q(0),
+         ],
+      q(sg) => [
+         q(0199),
+         q(0),
+         ],
+      q(sh) => [
+         q(0185),
+         q(0),
+         ],
+      q(si) => [
+         q(0201),
+         q(0),
+         ],
+      q(sj) => [
+         q(0210),
+         q(0),
+         ],
+      q(sk) => [
+         q(0200),
+         q(0),
+         ],
+      q(sl) => [
+         q(0198),
+         q(0),
+         ],
+      q(sm) => [
+         q(0192),
+         q(0),
+         ],
+      q(sn) => [
+         q(0195),
+         q(0),
+         ],
+      q(so) => [
+         q(0203),
+         q(0),
+         ],
+      q(sr) => [
+         q(0209),
+         q(0),
+         ],
+      q(st) => [
+         q(0193),
+         q(0),
+         ],
+      q(sv) => [
+         q(0065),
+         q(0),
+         ],
+      q(sy) => [
+         q(0214),
+         q(0),
+         ],
+      q(sz) => [
+         q(0211),
+         q(0),
+         ],
+      q(tc) => [
+         q(0227),
+         q(0),
+         ],
+      q(td) => [
+         q(0043),
+         q(0),
+         ],
+      q(tf) => [
+         q(0077),
+         q(0),
+         ],
+      q(tg) => [
+         q(0220),
+         q(0),
+         ],
+      q(th) => [
+         q(0218),
+         q(0),
+         ],
+      q(tj) => [
+         q(0216),
+         q(0),
+         ],
+      q(tk) => [
+         q(0221),
+         q(0),
+         ],
+      q(tl) => [
+         q(0219),
+         q(0),
+         ],
+      q(tm) => [
+         q(0226),
+         q(0),
+         ],
+      q(tn) => [
+         q(0224),
+         q(0),
+         ],
+      q(to) => [
+         q(0222),
+         q(0),
+         ],
+      q(tr) => [
+         q(0225),
+         q(0),
+         ],
+      q(tt) => [
+         q(0223),
+         q(0),
+         ],
+      q(tv) => [
+         q(0228),
+         q(0),
+         ],
+      q(tw) => [
+         q(0215),
+         q(0),
+         ],
+      q(tz) => [
+         q(0217),
+         q(0),
+         ],
+      q(ua) => [
+         q(0230),
+         q(0),
+         ],
+      q(ug) => [
+         q(0229),
+         q(0),
+         ],
+      q(um) => [
+         q(0234),
+         q(0),
+         ],
+      q(us) => [
+         q(0233),
+         q(0),
+         ],
+      q(uy) => [
+         q(0235),
+         q(0),
+         ],
+      q(uz) => [
+         q(0236),
+         q(0),
+         ],
+      q(va) => [
+         q(0096),
+         q(0),
+         ],
+      q(vc) => [
+         q(0190),
+         q(0),
+         ],
+      q(ve) => [
+         q(0238),
+         q(0),
+         ],
+      q(vg) => [
+         q(0240),
+         q(0),
+         ],
+      q(vi) => [
+         q(0241),
+         q(0),
+         ],
+      q(vn) => [
+         q(0239),
+         q(0),
+         ],
+      q(vu) => [
+         q(0237),
+         q(0),
+         ],
+      q(wf) => [
+         q(0242),
+         q(0),
+         ],
+      q(ws) => [
+         q(0191),
+         q(0),
+         ],
+      q(ye) => [
+         q(0244),
+         q(0),
+         ],
+      q(yt) => [
+         q(0141),
+         q(0),
+         ],
+      q(za) => [
+         q(0204),
+         q(0),
+         ],
+      q(zm) => [
+         q(0245),
+         q(0),
+         ],
+      q(zw) => [
+         q(0246),
+         q(0),
+         ],
+      },
+   q(alpha3) => {
+      q(abw) => [
+         q(0013),
+         q(0),
+         ],
+      q(afg) => [
+         q(0001),
+         q(0),
+         ],
+      q(ago) => [
+         q(0007),
+         q(0),
+         ],
+      q(aia) => [
+         q(0008),
+         q(0),
+         ],
+      q(ala) => [
+         q(0002),
+         q(0),
+         ],
+      q(alb) => [
+         q(0003),
+         q(0),
+         ],
+      q(and) => [
+         q(0006),
+         q(0),
+         ],
+      q(ant) => [
+         q(0156),
+         q(0),
+         ],
+      q(are) => [
+         q(0231),
+         q(0),
+         ],
+      q(arg) => [
+         q(0011),
+         q(0),
+         ],
+      q(arm) => [
+         q(0012),
+         q(0),
+         ],
+      q(asm) => [
+         q(0005),
+         q(0),
+         ],
+      q(ata) => [
+         q(0009),
+         q(0),
+         ],
+      q(atf) => [
+         q(0077),
+         q(1),
+         ],
+      q(atg) => [
+         q(0010),
+         q(0),
+         ],
+      q(aus) => [
+         q(0014),
+         q(0),
+         ],
+      q(aut) => [
+         q(0015),
+         q(0),
+         ],
+      q(aze) => [
+         q(0016),
+         q(0),
+         ],
+      q(bdi) => [
+         q(0036),
+         q(0),
+         ],
+      q(bel) => [
+         q(0022),
+         q(0),
+         ],
+      q(ben) => [
+         q(0024),
+         q(0),
+         ],
+      q(bfa) => [
+         q(0035),
+         q(0),
+         ],
+      q(bgd) => [
+         q(0019),
+         q(0),
+         ],
+      q(bgr) => [
+         q(0034),
+         q(0),
+         ],
+      q(bhr) => [
+         q(0018),
+         q(0),
+         ],
+      q(bhs) => [
+         q(0017),
+         q(0),
+         ],
+      q(bih) => [
+         q(0028),
+         q(0),
+         ],
+      q(blm) => [
+         q(0184),
+         q(1),
+         ],
+      q(blr) => [
+         q(0021),
+         q(0),
+         ],
+      q(blz) => [
+         q(0023),
+         q(0),
+         ],
+      q(bmu) => [
+         q(0025),
+         q(0),
+         ],
+      q(bol) => [
+         q(0027),
+         q(1),
+         ],
+      q(bra) => [
+         q(0031),
+         q(0),
+         ],
+      q(brb) => [
+         q(0020),
+         q(0),
+         ],
+      q(brn) => [
+         q(0033),
+         q(0),
+         ],
+      q(btn) => [
+         q(0026),
+         q(0),
+         ],
+      q(bvt) => [
+         q(0030),
+         q(0),
+         ],
+      q(bwa) => [
+         q(0029),
+         q(0),
+         ],
+      q(caf) => [
+         q(0042),
+         q(0),
+         ],
+      q(can) => [
+         q(0039),
+         q(0),
+         ],
+      q(cck) => [
+         q(0047),
+         q(0),
+         ],
+      q(che) => [
+         q(0213),
+         q(0),
+         ],
+      q(chl) => [
+         q(0044),
+         q(0),
+         ],
+      q(chn) => [
+         q(0045),
+         q(0),
+         ],
+      q(civ) => [
+         q(0054),
+         q(0),
+         ],
+      q(cmr) => [
+         q(0038),
+         q(0),
+         ],
+      q(cod) => [
+         q(0051),
+         q(1),
+         ],
+      q(cog) => [
+         q(0050),
+         q(0),
+         ],
+      q(cok) => [
+         q(0052),
+         q(0),
+         ],
+      q(col) => [
+         q(0048),
+         q(0),
+         ],
+      q(com) => [
+         q(0049),
+         q(0),
+         ],
+      q(cpv) => [
+         q(0040),
+         q(0),
+         ],
+      q(cri) => [
+         q(0053),
+         q(0),
+         ],
+      q(cub) => [
+         q(0056),
+         q(0),
+         ],
+      q(cxr) => [
+         q(0046),
+         q(0),
+         ],
+      q(cym) => [
+         q(0041),
+         q(0),
+         ],
+      q(cyp) => [
+         q(0057),
+         q(0),
+         ],
+      q(cze) => [
+         q(0058),
+         q(0),
+         ],
+      q(deu) => [
+         q(0081),
+         q(0),
+         ],
+      q(dji) => [
+         q(0060),
+         q(0),
+         ],
+      q(dma) => [
+         q(0061),
+         q(0),
+         ],
+      q(dnk) => [
+         q(0059),
+         q(0),
+         ],
+      q(dom) => [
+         q(0062),
+         q(0),
+         ],
+      q(dza) => [
+         q(0004),
+         q(0),
+         ],
+      q(ecu) => [
+         q(0063),
+         q(0),
+         ],
+      q(egy) => [
+         q(0064),
+         q(0),
+         ],
+      q(eri) => [
+         q(0067),
+         q(0),
+         ],
+      q(esh) => [
+         q(0243),
+         q(0),
+         ],
+      q(esp) => [
+         q(0206),
+         q(0),
+         ],
+      q(est) => [
+         q(0068),
+         q(0),
+         ],
+      q(eth) => [
+         q(0069),
+         q(0),
+         ],
+      q(fin) => [
+         q(0073),
+         q(0),
+         ],
+      q(fji) => [
+         q(0072),
+         q(0),
+         ],
+      q(flk) => [
+         q(0070),
+         q(0),
+         ],
+      q(fra) => [
+         q(0074),
+         q(0),
+         ],
+      q(fro) => [
+         q(0071),
+         q(1),
+         ],
+      q(fsm) => [
+         q(0143),
+         q(1),
+         ],
+      q(fxx) => [
+         q(0276),
+         q(0),
+         ],
+      q(gab) => [
+         q(0078),
+         q(0),
+         ],
+      q(gbr) => [
+         q(0232),
+         q(1),
+         ],
+      q(geo) => [
+         q(0080),
+         q(0),
+         ],
+      q(ggy) => [
+         q(0090),
+         q(0),
+         ],
+      q(gha) => [
+         q(0082),
+         q(0),
+         ],
+      q(gib) => [
+         q(0083),
+         q(0),
+         ],
+      q(gin) => [
+         q(0091),
+         q(0),
+         ],
+      q(glp) => [
+         q(0087),
+         q(0),
+         ],
+      q(gmb) => [
+         q(0079),
+         q(0),
+         ],
+      q(gnb) => [
+         q(0092),
+         q(0),
+         ],
+      q(gnq) => [
+         q(0066),
+         q(0),
+         ],
+      q(grc) => [
+         q(0084),
+         q(0),
+         ],
+      q(grd) => [
+         q(0086),
+         q(0),
+         ],
+      q(grl) => [
+         q(0085),
+         q(0),
+         ],
+      q(gtm) => [
+         q(0089),
+         q(0),
+         ],
+      q(guf) => [
+         q(0075),
+         q(0),
+         ],
+      q(gum) => [
+         q(0088),
+         q(0),
+         ],
+      q(guy) => [
+         q(0093),
+         q(0),
+         ],
+      q(hkg) => [
+         q(0098),
+         q(1),
+         ],
+      q(hmd) => [
+         q(0095),
+         q(0),
+         ],
+      q(hnd) => [
+         q(0097),
+         q(0),
+         ],
+      q(hrv) => [
+         q(0055),
+         q(0),
+         ],
+      q(hti) => [
+         q(0094),
+         q(0),
+         ],
+      q(hun) => [
+         q(0099),
+         q(0),
+         ],
+      q(idn) => [
+         q(0102),
+         q(0),
+         ],
+      q(imn) => [
+         q(0106),
+         q(0),
+         ],
+      q(ind) => [
+         q(0101),
+         q(0),
+         ],
+      q(iot) => [
+         q(0032),
+         q(0),
+         ],
+      q(irl) => [
+         q(0105),
+         q(0),
+         ],
+      q(irn) => [
+         q(0103),
+         q(1),
+         ],
+      q(irq) => [
+         q(0104),
+         q(0),
+         ],
+      q(isl) => [
+         q(0100),
+         q(0),
+         ],
+      q(isr) => [
+         q(0107),
+         q(0),
+         ],
+      q(ita) => [
+         q(0108),
+         q(0),
+         ],
+      q(jam) => [
+         q(0109),
+         q(0),
+         ],
+      q(jey) => [
+         q(0111),
+         q(0),
+         ],
+      q(jor) => [
+         q(0112),
+         q(0),
+         ],
+      q(jpn) => [
+         q(0110),
+         q(0),
+         ],
+      q(kaz) => [
+         q(0113),
+         q(0),
+         ],
+      q(ken) => [
+         q(0114),
+         q(0),
+         ],
+      q(kgz) => [
+         q(0119),
+         q(0),
+         ],
+      q(khm) => [
+         q(0037),
+         q(0),
+         ],
+      q(kir) => [
+         q(0115),
+         q(0),
+         ],
+      q(kna) => [
+         q(0186),
+         q(0),
+         ],
+      q(kor) => [
+         q(0117),
+         q(1),
+         ],
+      q(kwt) => [
+         q(0118),
+         q(0),
+         ],
+      q(lao) => [
+         q(0120),
+         q(0),
+         ],
+      q(lbn) => [
+         q(0122),
+         q(0),
+         ],
+      q(lbr) => [
+         q(0124),
+         q(0),
+         ],
+      q(lby) => [
+         q(0125),
+         q(0),
+         ],
+      q(lca) => [
+         q(0187),
+         q(0),
+         ],
+      q(lie) => [
+         q(0126),
+         q(0),
+         ],
+      q(lka) => [
+         q(0207),
+         q(0),
+         ],
+      q(lso) => [
+         q(0123),
+         q(0),
+         ],
+      q(ltu) => [
+         q(0127),
+         q(0),
+         ],
+      q(lux) => [
+         q(0128),
+         q(0),
+         ],
+      q(lva) => [
+         q(0121),
+         q(0),
+         ],
+      q(mac) => [
+         q(0129),
+         q(1),
+         ],
+      q(maf) => [
+         q(0188),
+         q(1),
+         ],
+      q(mar) => [
+         q(0149),
+         q(0),
+         ],
+      q(mco) => [
+         q(0145),
+         q(0),
+         ],
+      q(mda) => [
+         q(0144),
+         q(1),
+         ],
+      q(mdg) => [
+         q(0131),
+         q(0),
+         ],
+      q(mdv) => [
+         q(0134),
+         q(0),
+         ],
+      q(mex) => [
+         q(0142),
+         q(0),
+         ],
+      q(mhl) => [
+         q(0137),
+         q(0),
+         ],
+      q(mkd) => [
+         q(0130),
+         q(1),
+         ],
+      q(mli) => [
+         q(0135),
+         q(0),
+         ],
+      q(mlt) => [
+         q(0136),
+         q(0),
+         ],
+      q(mmr) => [
+         q(0151),
+         q(0),
+         ],
+      q(mne) => [
+         q(0147),
+         q(0),
+         ],
+      q(mng) => [
+         q(0146),
+         q(0),
+         ],
+      q(mnp) => [
+         q(0164),
+         q(0),
+         ],
+      q(moz) => [
+         q(0150),
+         q(0),
+         ],
+      q(mrt) => [
+         q(0139),
+         q(0),
+         ],
+      q(msr) => [
+         q(0148),
+         q(0),
+         ],
+      q(mtq) => [
+         q(0138),
+         q(0),
+         ],
+      q(mus) => [
+         q(0140),
+         q(0),
+         ],
+      q(mwi) => [
+         q(0132),
+         q(0),
+         ],
+      q(mys) => [
+         q(0133),
+         q(0),
+         ],
+      q(myt) => [
+         q(0141),
+         q(0),
+         ],
+      q(nam) => [
+         q(0152),
+         q(0),
+         ],
+      q(ncl) => [
+         q(0157),
+         q(0),
+         ],
+      q(ner) => [
+         q(0160),
+         q(0),
+         ],
+      q(nfk) => [
+         q(0163),
+         q(0),
+         ],
+      q(nga) => [
+         q(0161),
+         q(0),
+         ],
+      q(nic) => [
+         q(0159),
+         q(0),
+         ],
+      q(niu) => [
+         q(0162),
+         q(0),
+         ],
+      q(nld) => [
+         q(0155),
+         q(0),
+         ],
+      q(nor) => [
+         q(0165),
+         q(0),
+         ],
+      q(npl) => [
+         q(0154),
+         q(0),
+         ],
+      q(nru) => [
+         q(0153),
+         q(0),
+         ],
+      q(nzl) => [
+         q(0158),
+         q(0),
+         ],
+      q(omn) => [
+         q(0166),
+         q(0),
+         ],
+      q(pak) => [
+         q(0167),
+         q(0),
+         ],
+      q(pan) => [
+         q(0170),
+         q(0),
+         ],
+      q(pcn) => [
+         q(0175),
+         q(0),
+         ],
+      q(per) => [
+         q(0173),
+         q(0),
+         ],
+      q(phl) => [
+         q(0174),
+         q(0),
+         ],
+      q(plw) => [
+         q(0168),
+         q(0),
+         ],
+      q(png) => [
+         q(0171),
+         q(0),
+         ],
+      q(pol) => [
+         q(0176),
+         q(0),
+         ],
+      q(pri) => [
+         q(0178),
+         q(0),
+         ],
+      q(prk) => [
+         q(0116),
+         q(1),
+         ],
+      q(prt) => [
+         q(0177),
+         q(0),
+         ],
+      q(pry) => [
+         q(0172),
+         q(0),
+         ],
+      q(pse) => [
+         q(0169),
+         q(1),
+         ],
+      q(pyf) => [
+         q(0076),
+         q(0),
+         ],
+      q(qat) => [
+         q(0179),
+         q(0),
+         ],
+      q(reu) => [
+         q(0180),
+         q(0),
+         ],
+      q(rou) => [
+         q(0181),
+         q(0),
+         ],
+      q(rus) => [
+         q(0182),
+         q(0),
+         ],
+      q(rwa) => [
+         q(0183),
+         q(0),
+         ],
+      q(sau) => [
+         q(0194),
+         q(0),
+         ],
+      q(sdn) => [
+         q(0208),
+         q(0),
+         ],
+      q(sen) => [
+         q(0195),
+         q(0),
+         ],
+      q(sgp) => [
+         q(0199),
+         q(0),
+         ],
+      q(shn) => [
+         q(0185),
+         q(1),
+         ],
+      q(sjm) => [
+         q(0210),
+         q(1),
+         ],
+      q(slb) => [
+         q(0202),
+         q(0),
+         ],
+      q(sle) => [
+         q(0198),
+         q(0),
+         ],
+      q(slv) => [
+         q(0065),
+         q(0),
+         ],
+      q(smr) => [
+         q(0192),
+         q(0),
+         ],
+      q(som) => [
+         q(0203),
+         q(0),
+         ],
+      q(spm) => [
+         q(0189),
+         q(0),
+         ],
+      q(srb) => [
+         q(0196),
+         q(0),
+         ],
+      q(stp) => [
+         q(0193),
+         q(0),
+         ],
+      q(sur) => [
+         q(0209),
+         q(0),
+         ],
+      q(svk) => [
+         q(0200),
+         q(0),
+         ],
+      q(svn) => [
+         q(0201),
+         q(0),
+         ],
+      q(swe) => [
+         q(0212),
+         q(0),
+         ],
+      q(swz) => [
+         q(0211),
+         q(0),
+         ],
+      q(syc) => [
+         q(0197),
+         q(0),
+         ],
+      q(syr) => [
+         q(0214),
+         q(0),
+         ],
+      q(tca) => [
+         q(0227),
+         q(0),
+         ],
+      q(tcd) => [
+         q(0043),
+         q(0),
+         ],
+      q(tgo) => [
+         q(0220),
+         q(0),
+         ],
+      q(tha) => [
+         q(0218),
+         q(0),
+         ],
+      q(tjk) => [
+         q(0216),
+         q(0),
+         ],
+      q(tkl) => [
+         q(0221),
+         q(0),
+         ],
+      q(tkm) => [
+         q(0226),
+         q(0),
+         ],
+      q(tls) => [
+         q(0219),
+         q(0),
+         ],
+      q(ton) => [
+         q(0222),
+         q(0),
+         ],
+      q(tto) => [
+         q(0223),
+         q(0),
+         ],
+      q(tun) => [
+         q(0224),
+         q(0),
+         ],
+      q(tur) => [
+         q(0225),
+         q(0),
+         ],
+      q(tuv) => [
+         q(0228),
+         q(0),
+         ],
+      q(twn) => [
+         q(0215),
+         q(1),
+         ],
+      q(tza) => [
+         q(0217),
+         q(1),
+         ],
+      q(uga) => [
+         q(0229),
+         q(0),
+         ],
+      q(ukr) => [
+         q(0230),
+         q(0),
+         ],
+      q(umi) => [
+         q(0234),
+         q(0),
+         ],
+      q(ury) => [
+         q(0235),
+         q(0),
+         ],
+      q(usa) => [
+         q(0233),
+         q(1),
+         ],
+      q(uzb) => [
+         q(0236),
+         q(0),
+         ],
+      q(vat) => [
+         q(0096),
+         q(1),
+         ],
+      q(vct) => [
+         q(0190),
+         q(0),
+         ],
+      q(ven) => [
+         q(0238),
+         q(1),
+         ],
+      q(vgb) => [
+         q(0240),
+         q(1),
+         ],
+      q(vir) => [
+         q(0241),
+         q(1),
+         ],
+      q(vnm) => [
+         q(0239),
+         q(0),
+         ],
+      q(vut) => [
+         q(0237),
+         q(0),
+         ],
+      q(wlf) => [
+         q(0242),
+         q(1),
+         ],
+      q(wsm) => [
+         q(0191),
+         q(0),
+         ],
+      q(yem) => [
+         q(0244),
+         q(0),
+         ],
+      q(zaf) => [
+         q(0204),
+         q(0),
+         ],
+      q(zmb) => [
+         q(0245),
+         q(0),
+         ],
+      q(zwe) => [
+         q(0246),
+         q(0),
+         ],
+      },
+   q(dom) => {
+      q(AC) => [
+         q(0272),
+         q(0),
+         ],
+      q(AD) => [
+         q(0006),
+         q(0),
+         ],
+      q(AE) => [
+         q(0231),
+         q(0),
+         ],
+      q(AF) => [
+         q(0001),
+         q(0),
+         ],
+      q(AG) => [
+         q(0010),
+         q(0),
+         ],
+      q(AI) => [
+         q(0008),
+         q(0),
+         ],
+      q(AL) => [
+         q(0003),
+         q(0),
+         ],
+      q(AM) => [
+         q(0012),
+         q(0),
+         ],
+      q(AN) => [
+         q(0156),
+         q(0),
+         ],
+      q(AO) => [
+         q(0007),
+         q(0),
+         ],
+      q(AQ) => [
+         q(0009),
+         q(0),
+         ],
+      q(AR) => [
+         q(0011),
+         q(0),
+         ],
+      q(AS) => [
+         q(0005),
+         q(0),
+         ],
+      q(AT) => [
+         q(0015),
+         q(0),
+         ],
+      q(AU) => [
+         q(0014),
+         q(0),
+         ],
+      q(AW) => [
+         q(0013),
+         q(0),
+         ],
+      q(AX) => [
+         q(0002),
+         q(0),
+         ],
+      q(AZ) => [
+         q(0016),
+         q(0),
+         ],
+      q(BA) => [
+         q(0028),
+         q(0),
+         ],
+      q(BB) => [
+         q(0020),
+         q(0),
+         ],
+      q(BD) => [
+         q(0019),
+         q(0),
+         ],
+      q(BE) => [
+         q(0022),
+         q(0),
+         ],
+      q(BF) => [
+         q(0035),
+         q(0),
+         ],
+      q(BG) => [
+         q(0034),
+         q(0),
+         ],
+      q(BH) => [
+         q(0018),
+         q(0),
+         ],
+      q(BI) => [
+         q(0036),
+         q(0),
+         ],
+      q(BJ) => [
+         q(0024),
+         q(0),
+         ],
+      q(BL) => [
+         q(0184),
+         q(0),
+         ],
+      q(BM) => [
+         q(0025),
+         q(0),
+         ],
+      q(BN) => [
+         q(0033),
+         q(0),
+         ],
+      q(BO) => [
+         q(0027),
+         q(2),
+         ],
+      q(BR) => [
+         q(0031),
+         q(0),
+         ],
+      q(BS) => [
+         q(0017),
+         q(0),
+         ],
+      q(BT) => [
+         q(0026),
+         q(0),
+         ],
+      q(BV) => [
+         q(0030),
+         q(0),
+         ],
+      q(BW) => [
+         q(0029),
+         q(0),
+         ],
+      q(BY) => [
+         q(0021),
+         q(0),
+         ],
+      q(BZ) => [
+         q(0023),
+         q(0),
+         ],
+      q(CA) => [
+         q(0039),
+         q(0),
+         ],
+      q(CC) => [
+         q(0047),
+         q(0),
+         ],
+      q(CD) => [
+         q(0051),
+         q(0),
+         ],
+      q(CF) => [
+         q(0042),
+         q(0),
+         ],
+      q(CG) => [
+         q(0050),
+         q(0),
+         ],
+      q(CH) => [
+         q(0213),
+         q(0),
+         ],
+      q(CI) => [
+         q(0054),
+         q(0),
+         ],
+      q(CK) => [
+         q(0052),
+         q(0),
+         ],
+      q(CL) => [
+         q(0044),
+         q(0),
+         ],
+      q(CM) => [
+         q(0038),
+         q(0),
+         ],
+      q(CN) => [
+         q(0045),
+         q(0),
+         ],
+      q(CO) => [
+         q(0048),
+         q(0),
+         ],
+      q(CR) => [
+         q(0053),
+         q(0),
+         ],
+      q(CU) => [
+         q(0056),
+         q(0),
+         ],
+      q(CV) => [
+         q(0040),
+         q(0),
+         ],
+      q(CX) => [
+         q(0046),
+         q(0),
+         ],
+      q(CY) => [
+         q(0057),
+         q(0),
+         ],
+      q(CZ) => [
+         q(0058),
+         q(0),
+         ],
+      q(DE) => [
+         q(0081),
+         q(0),
+         ],
+      q(DJ) => [
+         q(0060),
+         q(0),
+         ],
+      q(DK) => [
+         q(0059),
+         q(0),
+         ],
+      q(DM) => [
+         q(0061),
+         q(0),
+         ],
+      q(DO) => [
+         q(0062),
+         q(0),
+         ],
+      q(DZ) => [
+         q(0004),
+         q(0),
+         ],
+      q(EC) => [
+         q(0063),
+         q(0),
+         ],
+      q(EE) => [
+         q(0068),
+         q(0),
+         ],
+      q(EG) => [
+         q(0064),
+         q(0),
+         ],
+      q(EH) => [
+         q(0243),
+         q(0),
+         ],
+      q(ER) => [
+         q(0067),
+         q(0),
+         ],
+      q(ES) => [
+         q(0206),
+         q(0),
+         ],
+      q(ET) => [
+         q(0069),
+         q(0),
+         ],
+      q(EU) => [
+         q(0273),
+         q(0),
+         ],
+      q(FI) => [
+         q(0073),
+         q(0),
+         ],
+      q(FJ) => [
+         q(0072),
+         q(0),
+         ],
+      q(FK) => [
+         q(0070),
+         q(0),
+         ],
+      q(FM) => [
+         q(0143),
+         q(0),
+         ],
+      q(FO) => [
+         q(0071),
+         q(0),
+         ],
+      q(FR) => [
+         q(0074),
+         q(0),
+         ],
+      q(FX) => [
+         q(0276),
+         q(0),
+         ],
+      q(GA) => [
+         q(0078),
+         q(0),
+         ],
+      q(GB) => [
+         q(0232),
+         q(0),
+         ],
+      q(GD) => [
+         q(0086),
+         q(0),
+         ],
+      q(GE) => [
+         q(0080),
+         q(0),
+         ],
+      q(GF) => [
+         q(0075),
+         q(0),
+         ],
+      q(GG) => [
+         q(0090),
+         q(0),
+         ],
+      q(GH) => [
+         q(0082),
+         q(0),
+         ],
+      q(GI) => [
+         q(0083),
+         q(0),
+         ],
+      q(GL) => [
+         q(0085),
+         q(0),
+         ],
+      q(GM) => [
+         q(0079),
+         q(0),
+         ],
+      q(GN) => [
+         q(0091),
+         q(0),
+         ],
+      q(GP) => [
+         q(0087),
+         q(0),
+         ],
+      q(GQ) => [
+         q(0066),
+         q(0),
+         ],
+      q(GR) => [
+         q(0084),
+         q(0),
+         ],
+      q(GS) => [
+         q(0205),
+         q(0),
+         ],
+      q(GT) => [
+         q(0089),
+         q(0),
+         ],
+      q(GU) => [
+         q(0088),
+         q(0),
+         ],
+      q(GW) => [
+         q(0092),
+         q(0),
+         ],
+      q(GY) => [
+         q(0093),
+         q(0),
+         ],
+      q(HK) => [
+         q(0098),
+         q(0),
+         ],
+      q(HM) => [
+         q(0095),
+         q(0),
+         ],
+      q(HN) => [
+         q(0097),
+         q(0),
+         ],
+      q(HR) => [
+         q(0055),
+         q(0),
+         ],
+      q(HT) => [
+         q(0094),
+         q(0),
+         ],
+      q(HU) => [
+         q(0099),
+         q(0),
+         ],
+      q(ID) => [
+         q(0102),
+         q(0),
+         ],
+      q(IE) => [
+         q(0105),
+         q(0),
+         ],
+      q(IL) => [
+         q(0107),
+         q(0),
+         ],
+      q(IM) => [
+         q(0106),
+         q(0),
+         ],
+      q(IN) => [
+         q(0101),
+         q(0),
+         ],
+      q(IO) => [
+         q(0032),
+         q(0),
+         ],
+      q(IQ) => [
+         q(0104),
+         q(0),
+         ],
+      q(IR) => [
+         q(0103),
+         q(0),
+         ],
+      q(IS) => [
+         q(0100),
+         q(0),
+         ],
+      q(IT) => [
+         q(0108),
+         q(0),
+         ],
+      q(JE) => [
+         q(0111),
+         q(0),
+         ],
+      q(JM) => [
+         q(0109),
+         q(0),
+         ],
+      q(JO) => [
+         q(0112),
+         q(0),
+         ],
+      q(JP) => [
+         q(0110),
+         q(0),
+         ],
+      q(KE) => [
+         q(0114),
+         q(0),
+         ],
+      q(KG) => [
+         q(0119),
+         q(0),
+         ],
+      q(KH) => [
+         q(0037),
+         q(0),
+         ],
+      q(KI) => [
+         q(0115),
+         q(0),
+         ],
+      q(KM) => [
+         q(0049),
+         q(0),
+         ],
+      q(KN) => [
+         q(0186),
+         q(0),
+         ],
+      q(KP) => [
+         q(0116),
+         q(0),
+         ],
+      q(KR) => [
+         q(0117),
+         q(0),
+         ],
+      q(KW) => [
+         q(0118),
+         q(0),
+         ],
+      q(KY) => [
+         q(0041),
+         q(0),
+         ],
+      q(KZ) => [
+         q(0113),
+         q(0),
+         ],
+      q(LA) => [
+         q(0120),
+         q(0),
+         ],
+      q(LB) => [
+         q(0122),
+         q(0),
+         ],
+      q(LC) => [
+         q(0187),
+         q(0),
+         ],
+      q(LI) => [
+         q(0126),
+         q(0),
+         ],
+      q(LK) => [
+         q(0207),
+         q(0),
+         ],
+      q(LR) => [
+         q(0124),
+         q(0),
+         ],
+      q(LS) => [
+         q(0123),
+         q(0),
+         ],
+      q(LT) => [
+         q(0127),
+         q(0),
+         ],
+      q(LU) => [
+         q(0128),
+         q(0),
+         ],
+      q(LV) => [
+         q(0121),
+         q(0),
+         ],
+      q(LY) => [
+         q(0125),
+         q(0),
+         ],
+      q(MA) => [
+         q(0149),
+         q(0),
+         ],
+      q(MC) => [
+         q(0145),
+         q(0),
+         ],
+      q(MD) => [
+         q(0144),
+         q(0),
+         ],
+      q(ME) => [
+         q(0147),
+         q(0),
+         ],
+      q(MF) => [
+         q(0188),
+         q(0),
+         ],
+      q(MG) => [
+         q(0131),
+         q(0),
+         ],
+      q(MH) => [
+         q(0137),
+         q(0),
+         ],
+      q(MK) => [
+         q(0130),
+         q(0),
+         ],
+      q(ML) => [
+         q(0135),
+         q(0),
+         ],
+      q(MM) => [
+         q(0151),
+         q(0),
+         ],
+      q(MN) => [
+         q(0146),
+         q(0),
+         ],
+      q(MO) => [
+         q(0129),
+         q(0),
+         ],
+      q(MP) => [
+         q(0164),
+         q(0),
+         ],
+      q(MQ) => [
+         q(0138),
+         q(0),
+         ],
+      q(MR) => [
+         q(0139),
+         q(0),
+         ],
+      q(MS) => [
+         q(0148),
+         q(0),
+         ],
+      q(MT) => [
+         q(0136),
+         q(0),
+         ],
+      q(MU) => [
+         q(0140),
+         q(0),
+         ],
+      q(MV) => [
+         q(0134),
+         q(0),
+         ],
+      q(MW) => [
+         q(0132),
+         q(0),
+         ],
+      q(MX) => [
+         q(0142),
+         q(0),
+         ],
+      q(MY) => [
+         q(0133),
+         q(0),
+         ],
+      q(MZ) => [
+         q(0150),
+         q(0),
+         ],
+      q(NA) => [
+         q(0152),
+         q(0),
+         ],
+      q(NC) => [
+         q(0157),
+         q(0),
+         ],
+      q(NE) => [
+         q(0160),
+         q(0),
+         ],
+      q(NF) => [
+         q(0163),
+         q(0),
+         ],
+      q(NG) => [
+         q(0161),
+         q(0),
+         ],
+      q(NI) => [
+         q(0159),
+         q(0),
+         ],
+      q(NL) => [
+         q(0155),
+         q(0),
+         ],
+      q(NO) => [
+         q(0165),
+         q(0),
+         ],
+      q(NP) => [
+         q(0154),
+         q(0),
+         ],
+      q(NR) => [
+         q(0153),
+         q(0),
+         ],
+      q(NU) => [
+         q(0162),
+         q(0),
+         ],
+      q(NZ) => [
+         q(0158),
+         q(0),
+         ],
+      q(OM) => [
+         q(0166),
+         q(0),
+         ],
+      q(PA) => [
+         q(0170),
+         q(0),
+         ],
+      q(PE) => [
+         q(0173),
+         q(0),
+         ],
+      q(PF) => [
+         q(0076),
+         q(0),
+         ],
+      q(PG) => [
+         q(0171),
+         q(0),
+         ],
+      q(PH) => [
+         q(0174),
+         q(0),
+         ],
+      q(PK) => [
+         q(0167),
+         q(0),
+         ],
+      q(PL) => [
+         q(0176),
+         q(0),
+         ],
+      q(PM) => [
+         q(0189),
+         q(0),
+         ],
+      q(PN) => [
+         q(0175),
+         q(0),
+         ],
+      q(PR) => [
+         q(0178),
+         q(0),
+         ],
+      q(PS) => [
+         q(0169),
+         q(0),
+         ],
+      q(PT) => [
+         q(0177),
+         q(0),
+         ],
+      q(PW) => [
+         q(0168),
+         q(0),
+         ],
+      q(PY) => [
+         q(0172),
+         q(0),
+         ],
+      q(QA) => [
+         q(0179),
+         q(0),
+         ],
+      q(RE) => [
+         q(0180),
+         q(0),
+         ],
+      q(RO) => [
+         q(0181),
+         q(0),
+         ],
+      q(RS) => [
+         q(0196),
+         q(0),
+         ],
+      q(RU) => [
+         q(0182),
+         q(0),
+         ],
+      q(RW) => [
+         q(0183),
+         q(0),
+         ],
+      q(SA) => [
+         q(0194),
+         q(0),
+         ],
+      q(SB) => [
+         q(0202),
+         q(0),
+         ],
+      q(SC) => [
+         q(0197),
+         q(0),
+         ],
+      q(SD) => [
+         q(0208),
+         q(0),
+         ],
+      q(SE) => [
+         q(0212),
+         q(0),
+         ],
+      q(SG) => [
+         q(0199),
+         q(0),
+         ],
+      q(SH) => [
+         q(0185),
+         q(0),
+         ],
+      q(SI) => [
+         q(0201),
+         q(0),
+         ],
+      q(SJ) => [
+         q(0210),
+         q(0),
+         ],
+      q(SK) => [
+         q(0200),
+         q(0),
+         ],
+      q(SL) => [
+         q(0198),
+         q(0),
+         ],
+      q(SM) => [
+         q(0192),
+         q(0),
+         ],
+      q(SN) => [
+         q(0195),
+         q(0),
+         ],
+      q(SO) => [
+         q(0203),
+         q(0),
+         ],
+      q(SR) => [
+         q(0209),
+         q(0),
+         ],
+      q(ST) => [
+         q(0193),
+         q(0),
+         ],
+      q(SU) => [
+         q(0274),
+         q(0),
+         ],
+      q(SV) => [
+         q(0065),
+         q(0),
+         ],
+      q(SY) => [
+         q(0214),
+         q(0),
+         ],
+      q(SZ) => [
+         q(0211),
+         q(0),
+         ],
+      q(TC) => [
+         q(0227),
+         q(0),
+         ],
+      q(TD) => [
+         q(0043),
+         q(0),
+         ],
+      q(TF) => [
+         q(0077),
+         q(0),
+         ],
+      q(TG) => [
+         q(0220),
+         q(0),
+         ],
+      q(TH) => [
+         q(0218),
+         q(0),
+         ],
+      q(TJ) => [
+         q(0216),
+         q(0),
+         ],
+      q(TK) => [
+         q(0221),
+         q(0),
+         ],
+      q(TL) => [
+         q(0219),
+         q(0),
+         ],
+      q(TM) => [
+         q(0226),
+         q(0),
+         ],
+      q(TN) => [
+         q(0224),
+         q(0),
+         ],
+      q(TO) => [
+         q(0222),
+         q(0),
+         ],
+      q(TP) => [
+         q(0275),
+         q(0),
+         ],
+      q(TR) => [
+         q(0225),
+         q(0),
+         ],
+      q(TT) => [
+         q(0223),
+         q(0),
+         ],
+      q(TV) => [
+         q(0228),
+         q(0),
+         ],
+      q(TW) => [
+         q(0215),
+         q(1),
+         ],
+      q(TZ) => [
+         q(0217),
+         q(0),
+         ],
+      q(UA) => [
+         q(0230),
+         q(0),
+         ],
+      q(UG) => [
+         q(0229),
+         q(0),
+         ],
+      q(UK) => [
+         q(0232),
+         q(0),
+         ],
+      q(UM) => [
+         q(0234),
+         q(0),
+         ],
+      q(US) => [
+         q(0233),
+         q(0),
+         ],
+      q(UY) => [
+         q(0235),
+         q(0),
+         ],
+      q(UZ) => [
+         q(0236),
+         q(0),
+         ],
+      q(VA) => [
+         q(0096),
+         q(0),
+         ],
+      q(VC) => [
+         q(0190),
+         q(0),
+         ],
+      q(VE) => [
+         q(0238),
+         q(0),
+         ],
+      q(VG) => [
+         q(0240),
+         q(0),
+         ],
+      q(VI) => [
+         q(0241),
+         q(0),
+         ],
+      q(VN) => [
+         q(0239),
+         q(0),
+         ],
+      q(VU) => [
+         q(0237),
+         q(0),
+         ],
+      q(WF) => [
+         q(0242),
+         q(0),
+         ],
+      q(WS) => [
+         q(0191),
+         q(0),
+         ],
+      q(YE) => [
+         q(0244),
+         q(0),
+         ],
+      q(YT) => [
+         q(0141),
+         q(0),
+         ],
+      q(ZA) => [
+         q(0204),
+         q(0),
+         ],
+      q(ZM) => [
+         q(0245),
+         q(0),
+         ],
+      q(ZW) => [
+         q(0246),
+         q(0),
+         ],
+      },
+   q(fips) => {
+      q(AA) => [
+         q(0013),
+         q(0),
+         ],
+      q(AC) => [
+         q(0010),
+         q(0),
+         ],
+      q(AE) => [
+         q(0231),
+         q(0),
+         ],
+      q(AF) => [
+         q(0001),
+         q(1),
+         ],
+      q(AG) => [
+         q(0004),
+         q(1),
+         ],
+      q(AJ) => [
+         q(0016),
+         q(1),
+         ],
+      q(AL) => [
+         q(0003),
+         q(1),
+         ],
+      q(AM) => [
+         q(0012),
+         q(1),
+         ],
+      q(AN) => [
+         q(0006),
+         q(1),
+         ],
+      q(AO) => [
+         q(0007),
+         q(1),
+         ],
+      q(AQ) => [
+         q(0005),
+         q(1),
+         ],
+      q(AR) => [
+         q(0011),
+         q(1),
+         ],
+      q(AS) => [
+         q(0014),
+         q(1),
+         ],
+      q(AT) => [
+         q(0249),
+         q(1),
+         ],
+      q(AU) => [
+         q(0015),
+         q(1),
+         ],
+      q(AV) => [
+         q(0008),
+         q(0),
+         ],
+      q(AY) => [
+         q(0009),
+         q(0),
+         ],
+      q(BA) => [
+         q(0018),
+         q(1),
+         ],
+      q(BB) => [
+         q(0020),
+         q(0),
+         ],
+      q(BC) => [
+         q(0029),
+         q(1),
+         ],
+      q(BD) => [
+         q(0025),
+         q(0),
+         ],
+      q(BE) => [
+         q(0022),
+         q(1),
+         ],
+      q(BF) => [
+         q(0017),
+         q(2),
+         ],
+      q(BG) => [
+         q(0019),
+         q(1),
+         ],
+      q(BH) => [
+         q(0023),
+         q(0),
+         ],
+      q(BK) => [
+         q(0028),
+         q(0),
+         ],
+      q(BL) => [
+         q(0027),
+         q(3),
+         ],
+      q(BM) => [
+         q(0151),
+         q(2),
+         ],
+      q(BN) => [
+         q(0024),
+         q(1),
+         ],
+      q(BO) => [
+         q(0021),
+         q(1),
+         ],
+      q(BP) => [
+         q(0202),
+         q(0),
+         ],
+      q(BQ) => [
+         q(0264),
+         q(0),
+         ],
+      q(BR) => [
+         q(0031),
+         q(1),
+         ],
+      q(BS) => [
+         q(0251),
+         q(0),
+         ],
+      q(BT) => [
+         q(0026),
+         q(1),
+         ],
+      q(BU) => [
+         q(0034),
+         q(0),
+         ],
+      q(BV) => [
+         q(0030),
+         q(0),
+         ],
+      q(BX) => [
+         q(0033),
+         q(2),
+         ],
+      q(BY) => [
+         q(0036),
+         q(1),
+         ],
+      q(CA) => [
+         q(0039),
+         q(0),
+         ],
+      q(CB) => [
+         q(0037),
+         q(1),
+         ],
+      q(CD) => [
+         q(0043),
+         q(1),
+         ],
+      q(CE) => [
+         q(0207),
+         q(1),
+         ],
+      q(CF) => [
+         q(0050),
+         q(2),
+         ],
+      q(CG) => [
+         q(0051),
+         q(2),
+         ],
+      q(CH) => [
+         q(0045),
+         q(1),
+         ],
+      q(CI) => [
+         q(0044),
+         q(1),
+         ],
+      q(CJ) => [
+         q(0041),
+         q(0),
+         ],
+      q(CK) => [
+         q(0047),
+         q(1),
+         ],
+      q(CM) => [
+         q(0038),
+         q(1),
+         ],
+      q(CN) => [
+         q(0049),
+         q(1),
+         ],
+      q(CO) => [
+         q(0048),
+         q(1),
+         ],
+      q(CQ) => [
+         q(0164),
+         q(1),
+         ],
+      q(CR) => [
+         q(0253),
+         q(1),
+         ],
+      q(CS) => [
+         q(0053),
+         q(1),
+         ],
+      q(CT) => [
+         q(0042),
+         q(0),
+         ],
+      q(CU) => [
+         q(0056),
+         q(1),
+         ],
+      q(CV) => [
+         q(0040),
+         q(1),
+         ],
+      q(CW) => [
+         q(0052),
+         q(0),
+         ],
+      q(CY) => [
+         q(0057),
+         q(1),
+         ],
+      q(DA) => [
+         q(0059),
+         q(1),
+         ],
+      q(DJ) => [
+         q(0060),
+         q(1),
+         ],
+      q(DO) => [
+         q(0061),
+         q(1),
+         ],
+      q(DQ) => [
+         q(0259),
+         q(0),
+         ],
+      q(DR) => [
+         q(0062),
+         q(0),
+         ],
+      q(EC) => [
+         q(0063),
+         q(1),
+         ],
+      q(EG) => [
+         q(0064),
+         q(1),
+         ],
+      q(EI) => [
+         q(0105),
+         q(0),
+         ],
+      q(EK) => [
+         q(0066),
+         q(1),
+         ],
+      q(EN) => [
+         q(0068),
+         q(1),
+         ],
+      q(ER) => [
+         q(0067),
+         q(1),
+         ],
+      q(ES) => [
+         q(0065),
+         q(1),
+         ],
+      q(ET) => [
+         q(0069),
+         q(1),
+         ],
+      q(EU) => [
+         q(0254),
+         q(0),
+         ],
+      q(EZ) => [
+         q(0058),
+         q(0),
+         ],
+      q(FG) => [
+         q(0075),
+         q(1),
+         ],
+      q(FI) => [
+         q(0073),
+         q(1),
+         ],
+      q(FJ) => [
+         q(0072),
+         q(1),
+         ],
+      q(FK) => [
+         q(0070),
+         q(1),
+         ],
+      q(FM) => [
+         q(0143),
+         q(2),
+         ],
+      q(FO) => [
+         q(0071),
+         q(0),
+         ],
+      q(FP) => [
+         q(0076),
+         q(1),
+         ],
+      q(FQ) => [
+         q(0250),
+         q(0),
+         ],
+      q(FR) => [
+         q(0074),
+         q(1),
+         ],
+      q(FS) => [
+         q(0077),
+         q(2),
+         ],
+      q(GA) => [
+         q(0079),
+         q(2),
+         ],
+      q(GB) => [
+         q(0078),
+         q(1),
+         ],
+      q(GG) => [
+         q(0080),
+         q(0),
+         ],
+      q(GH) => [
+         q(0082),
+         q(1),
+         ],
+      q(GI) => [
+         q(0083),
+         q(0),
+         ],
+      q(GJ) => [
+         q(0086),
+         q(0),
+         ],
+      q(GK) => [
+         q(0090),
+         q(1),
+         ],
+      q(GL) => [
+         q(0085),
+         q(0),
+         ],
+      q(GM) => [
+         q(0081),
+         q(1),
+         ],
+      q(GO) => [
+         q(0256),
+         q(0),
+         ],
+      q(GP) => [
+         q(0087),
+         q(1),
+         ],
+      q(GQ) => [
+         q(0088),
+         q(1),
+         ],
+      q(GR) => [
+         q(0084),
+         q(1),
+         ],
+      q(GT) => [
+         q(0089),
+         q(1),
+         ],
+      q(GV) => [
+         q(0091),
+         q(1),
+         ],
+      q(GY) => [
+         q(0093),
+         q(1),
+         ],
+      q(GZ) => [
+         q(0255),
+         q(0),
+         ],
+      q(HA) => [
+         q(0094),
+         q(1),
+         ],
+      q(HK) => [
+         q(0098),
+         q(3),
+         ],
+      q(HM) => [
+         q(0095),
+         q(1),
+         ],
+      q(HO) => [
+         q(0097),
+         q(1),
+         ],
+      q(HQ) => [
+         q(0257),
+         q(0),
+         ],
+      q(HR) => [
+         q(0055),
+         q(1),
+         ],
+      q(HU) => [
+         q(0099),
+         q(1),
+         ],
+      q(IC) => [
+         q(0100),
+         q(1),
+         ],
+      q(ID) => [
+         q(0102),
+         q(1),
+         ],
+      q(IM) => [
+         q(0106),
+         q(0),
+         ],
+      q(IN) => [
+         q(0101),
+         q(1),
+         ],
+      q(IO) => [
+         q(0032),
+         q(0),
+         ],
+      q(IP) => [
+         q(0252),
+         q(0),
+         ],
+      q(IR) => [
+         q(0103),
+         q(3),
+         ],
+      q(IS) => [
+         q(0107),
+         q(1),
+         ],
+      q(IT) => [
+         q(0108),
+         q(1),
+         ],
+      q(IV) => [
+         q(0054),
+         q(1),
+         ],
+      q(IZ) => [
+         q(0104),
+         q(1),
+         ],
+      q(JA) => [
+         q(0110),
+         q(0),
+         ],
+      q(JE) => [
+         q(0111),
+         q(1),
+         ],
+      q(JM) => [
+         q(0109),
+         q(0),
+         ],
+      q(JN) => [
+         q(0258),
+         q(0),
+         ],
+      q(JO) => [
+         q(0112),
+         q(1),
+         ],
+      q(JQ) => [
+         q(0260),
+         q(0),
+         ],
+      q(JU) => [
+         q(0261),
+         q(0),
+         ],
+      q(KE) => [
+         q(0114),
+         q(1),
+         ],
+      q(KG) => [
+         q(0119),
+         q(1),
+         ],
+      q(KN) => [
+         q(0116),
+         q(2),
+         ],
+      q(KQ) => [
+         q(0262),
+         q(0),
+         ],
+      q(KR) => [
+         q(0115),
+         q(1),
+         ],
+      q(KS) => [
+         q(0117),
+         q(2),
+         ],
+      q(KT) => [
+         q(0046),
+         q(1),
+         ],
+      q(KU) => [
+         q(0118),
+         q(1),
+         ],
+      q(KV) => [
+         q(0277),
+         q(0),
+         ],
+      q(KZ) => [
+         q(0113),
+         q(1),
+         ],
+      q(LA) => [
+         q(0120),
+         q(1),
+         ],
+      q(LE) => [
+         q(0122),
+         q(1),
+         ],
+      q(LG) => [
+         q(0121),
+         q(1),
+         ],
+      q(LH) => [
+         q(0127),
+         q(1),
+         ],
+      q(LI) => [
+         q(0124),
+         q(1),
+         ],
+      q(LO) => [
+         q(0200),
+         q(1),
+         ],
+      q(LQ) => [
+         q(0265),
+         q(0),
+         ],
+      q(LS) => [
+         q(0126),
+         q(1),
+         ],
+      q(LT) => [
+         q(0123),
+         q(1),
+         ],
+      q(LU) => [
+         q(0128),
+         q(1),
+         ],
+      q(LY) => [
+         q(0125),
+         q(2),
+         ],
+      q(MA) => [
+         q(0131),
+         q(1),
+         ],
+      q(MB) => [
+         q(0138),
+         q(1),
+         ],
+      q(MC) => [
+         q(0129),
+         q(3),
+         ],
+      q(MD) => [
+         q(0144),
+         q(2),
+         ],
+      q(MF) => [
+         q(0141),
+         q(1),
+         ],
+      q(MG) => [
+         q(0146),
+         q(0),
+         ],
+      q(MH) => [
+         q(0148),
+         q(0),
+         ],
+      q(MI) => [
+         q(0132),
+         q(1),
+         ],
+      q(MJ) => [
+         q(0147),
+         q(0),
+         ],
+      q(MK) => [
+         q(0130),
+         q(3),
+         ],
+      q(ML) => [
+         q(0135),
+         q(1),
+         ],
+      q(MN) => [
+         q(0145),
+         q(1),
+         ],
+      q(MO) => [
+         q(0149),
+         q(1),
+         ],
+      q(MP) => [
+         q(0140),
+         q(1),
+         ],
+      q(MQ) => [
+         q(0263),
+         q(0),
+         ],
+      q(MR) => [
+         q(0139),
+         q(1),
+         ],
+      q(MT) => [
+         q(0136),
+         q(1),
+         ],
+      q(MU) => [
+         q(0166),
+         q(1),
+         ],
+      q(MV) => [
+         q(0134),
+         q(1),
+         ],
+      q(MX) => [
+         q(0142),
+         q(1),
+         ],
+      q(MY) => [
+         q(0133),
+         q(0),
+         ],
+      q(MZ) => [
+         q(0150),
+         q(1),
+         ],
+      q(NC) => [
+         q(0157),
+         q(1),
+         ],
+      q(NE) => [
+         q(0162),
+         q(0),
+         ],
+      q(NF) => [
+         q(0163),
+         q(1),
+         ],
+      q(NG) => [
+         q(0160),
+         q(1),
+         ],
+      q(NH) => [
+         q(0237),
+         q(1),
+         ],
+      q(NI) => [
+         q(0161),
+         q(1),
+         ],
+      q(NL) => [
+         q(0155),
+         q(1),
+         ],
+      q(NO) => [
+         q(0165),
+         q(1),
+         ],
+      q(NP) => [
+         q(0154),
+         q(1),
+         ],
+      q(NR) => [
+         q(0153),
+         q(1),
+         ],
+      q(NS) => [
+         q(0209),
+         q(1),
+         ],
+      q(NT) => [
+         q(0156),
+         q(0),
+         ],
+      q(NU) => [
+         q(0159),
+         q(1),
+         ],
+      q(NZ) => [
+         q(0158),
+         q(0),
+         ],
+      q(PA) => [
+         q(0172),
+         q(1),
+         ],
+      q(PC) => [
+         q(0175),
+         q(2),
+         ],
+      q(PE) => [
+         q(0173),
+         q(1),
+         ],
+      q(PF) => [
+         q(0266),
+         q(0),
+         ],
+      q(PG) => [
+         q(0267),
+         q(0),
+         ],
+      q(PK) => [
+         q(0167),
+         q(1),
+         ],
+      q(PL) => [
+         q(0176),
+         q(1),
+         ],
+      q(PM) => [
+         q(0170),
+         q(1),
+         ],
+      q(PO) => [
+         q(0177),
+         q(1),
+         ],
+      q(PP) => [
+         q(0171),
+         q(1),
+         ],
+      q(PS) => [
+         q(0168),
+         q(1),
+         ],
+      q(PU) => [
+         q(0092),
+         q(1),
+         ],
+      q(QA) => [
+         q(0179),
+         q(1),
+         ],
+      q(RE) => [
+         q(0180),
+         q(1),
+         ],
+      q(RI) => [
+         q(0196),
+         q(0),
+         ],
+      q(RM) => [
+         q(0137),
+         q(1),
+         ],
+      q(RN) => [
+         q(0188),
+         q(0),
+         ],
+      q(RO) => [
+         q(0181),
+         q(0),
+         ],
+      q(RP) => [
+         q(0174),
+         q(1),
+         ],
+      q(RQ) => [
+         q(0178),
+         q(1),
+         ],
+      q(RS) => [
+         q(0182),
+         q(1),
+         ],
+      q(RW) => [
+         q(0183),
+         q(1),
+         ],
+      q(SA) => [
+         q(0194),
+         q(1),
+         ],
+      q(SB) => [
+         q(0189),
+         q(1),
+         ],
+      q(SC) => [
+         q(0186),
+         q(1),
+         ],
+      q(SE) => [
+         q(0197),
+         q(1),
+         ],
+      q(SF) => [
+         q(0204),
+         q(1),
+         ],
+      q(SG) => [
+         q(0195),
+         q(1),
+         ],
+      q(SH) => [
+         q(0185),
+         q(1),
+         ],
+      q(SI) => [
+         q(0201),
+         q(1),
+         ],
+      q(SL) => [
+         q(0198),
+         q(1),
+         ],
+      q(SM) => [
+         q(0192),
+         q(1),
+         ],
+      q(SN) => [
+         q(0199),
+         q(1),
+         ],
+      q(SO) => [
+         q(0203),
+         q(0),
+         ],
+      q(SP) => [
+         q(0206),
+         q(1),
+         ],
+      q(ST) => [
+         q(0187),
+         q(0),
+         ],
+      q(SU) => [
+         q(0208),
+         q(1),
+         ],
+      q(SV) => [
+         q(0268),
+         q(0),
+         ],
+      q(SW) => [
+         q(0212),
+         q(1),
+         ],
+      q(SX) => [
+         q(0205),
+         q(0),
+         ],
+      q(SY) => [
+         q(0214),
+         q(1),
+         ],
+      q(SZ) => [
+         q(0213),
+         q(1),
+         ],
+      q(TB) => [
+         q(0184),
+         q(0),
+         ],
+      q(TD) => [
+         q(0223),
+         q(1),
+         ],
+      q(TE) => [
+         q(0269),
+         q(0),
+         ],
+      q(TH) => [
+         q(0218),
+         q(1),
+         ],
+      q(TI) => [
+         q(0216),
+         q(1),
+         ],
+      q(TK) => [
+         q(0227),
+         q(0),
+         ],
+      q(TL) => [
+         q(0221),
+         q(0),
+         ],
+      q(TN) => [
+         q(0222),
+         q(1),
+         ],
+      q(TO) => [
+         q(0220),
+         q(1),
+         ],
+      q(TP) => [
+         q(0193),
+         q(1),
+         ],
+      q(TS) => [
+         q(0224),
+         q(1),
+         ],
+      q(TT) => [
+         q(0219),
+         q(1),
+         ],
+      q(TU) => [
+         q(0225),
+         q(1),
+         ],
+      q(TV) => [
+         q(0228),
+         q(0),
+         ],
+      q(TW) => [
+         q(0215),
+         q(1),
+         ],
+      q(TX) => [
+         q(0226),
+         q(0),
+         ],
+      q(TZ) => [
+         q(0217),
+         q(2),
+         ],
+      q(UG) => [
+         q(0229),
+         q(0),
+         ],
+      q(UK) => [
+         q(0232),
+         q(0),
+         ],
+      q(UP) => [
+         q(0230),
+         q(0),
+         ],
+      q(US) => [
+         q(0233),
+         q(0),
+         ],
+      q(UV) => [
+         q(0035),
+         q(0),
+         ],
+      q(UY) => [
+         q(0235),
+         q(1),
+         ],
+      q(UZ) => [
+         q(0236),
+         q(1),
+         ],
+      q(VC) => [
+         q(0190),
+         q(0),
+         ],
+      q(VE) => [
+         q(0238),
+         q(3),
+         ],
+      q(VI) => [
+         q(0240),
+         q(1),
+         ],
+      q(VM) => [
+         q(0239),
+         q(2),
+         ],
+      q(VQ) => [
+         q(0241),
+         q(3),
+         ],
+      q(VT) => [
+         q(0096),
+         q(3),
+         ],
+      q(WA) => [
+         q(0152),
+         q(1),
+         ],
+      q(WE) => [
+         q(0271),
+         q(0),
+         ],
+      q(WF) => [
+         q(0242),
+         q(2),
+         ],
+      q(WI) => [
+         q(0243),
+         q(0),
+         ],
+      q(WQ) => [
+         q(0270),
+         q(0),
+         ],
+      q(WS) => [
+         q(0191),
+         q(1),
+         ],
+      q(WZ) => [
+         q(0211),
+         q(1),
+         ],
+      q(YI) => [
+         q(0248),
+         q(0),
+         ],
+      q(YM) => [
+         q(0244),
+         q(1),
+         ],
+      q(ZA) => [
+         q(0245),
+         q(1),
+         ],
+      q(ZI) => [
+         q(0246),
+         q(1),
+         ],
+      },
+   q(num) => {
+      q(004) => [
+         q(0001),
+         q(0),
+         ],
+      q(008) => [
+         q(0003),
+         q(0),
+         ],
+      q(010) => [
+         q(0009),
+         q(0),
+         ],
+      q(012) => [
+         q(0004),
+         q(0),
+         ],
+      q(016) => [
+         q(0005),
+         q(0),
+         ],
+      q(020) => [
+         q(0006),
+         q(0),
+         ],
+      q(024) => [
+         q(0007),
+         q(0),
+         ],
+      q(028) => [
+         q(0010),
+         q(0),
+         ],
+      q(031) => [
+         q(0016),
+         q(0),
+         ],
+      q(032) => [
+         q(0011),
+         q(0),
+         ],
+      q(036) => [
+         q(0014),
+         q(0),
+         ],
+      q(040) => [
+         q(0015),
+         q(0),
+         ],
+      q(044) => [
+         q(0017),
+         q(0),
+         ],
+      q(048) => [
+         q(0018),
+         q(0),
+         ],
+      q(050) => [
+         q(0019),
+         q(0),
+         ],
+      q(051) => [
+         q(0012),
+         q(0),
+         ],
+      q(052) => [
+         q(0020),
+         q(0),
+         ],
+      q(056) => [
+         q(0022),
+         q(0),
+         ],
+      q(060) => [
+         q(0025),
+         q(0),
+         ],
+      q(064) => [
+         q(0026),
+         q(0),
+         ],
+      q(068) => [
+         q(0027),
+         q(1),
+         ],
+      q(070) => [
+         q(0028),
+         q(0),
+         ],
+      q(072) => [
+         q(0029),
+         q(0),
+         ],
+      q(074) => [
+         q(0030),
+         q(0),
+         ],
+      q(076) => [
+         q(0031),
+         q(0),
+         ],
+      q(084) => [
+         q(0023),
+         q(0),
+         ],
+      q(086) => [
+         q(0032),
+         q(0),
+         ],
+      q(090) => [
+         q(0202),
+         q(0),
+         ],
+      q(092) => [
+         q(0240),
+         q(1),
+         ],
+      q(096) => [
+         q(0033),
+         q(0),
+         ],
+      q(100) => [
+         q(0034),
+         q(0),
+         ],
+      q(104) => [
+         q(0151),
+         q(0),
+         ],
+      q(108) => [
+         q(0036),
+         q(0),
+         ],
+      q(112) => [
+         q(0021),
+         q(0),
+         ],
+      q(116) => [
+         q(0037),
+         q(0),
+         ],
+      q(120) => [
+         q(0038),
+         q(0),
+         ],
+      q(124) => [
+         q(0039),
+         q(0),
+         ],
+      q(132) => [
+         q(0040),
+         q(0),
+         ],
+      q(136) => [
+         q(0041),
+         q(0),
+         ],
+      q(140) => [
+         q(0042),
+         q(0),
+         ],
+      q(144) => [
+         q(0207),
+         q(0),
+         ],
+      q(148) => [
+         q(0043),
+         q(0),
+         ],
+      q(152) => [
+         q(0044),
+         q(0),
+         ],
+      q(156) => [
+         q(0045),
+         q(0),
+         ],
+      q(158) => [
+         q(0215),
+         q(1),
+         ],
+      q(162) => [
+         q(0046),
+         q(0),
+         ],
+      q(166) => [
+         q(0047),
+         q(0),
+         ],
+      q(170) => [
+         q(0048),
+         q(0),
+         ],
+      q(174) => [
+         q(0049),
+         q(0),
+         ],
+      q(175) => [
+         q(0141),
+         q(0),
+         ],
+      q(178) => [
+         q(0050),
+         q(0),
+         ],
+      q(180) => [
+         q(0051),
+         q(1),
+         ],
+      q(184) => [
+         q(0052),
+         q(0),
+         ],
+      q(188) => [
+         q(0053),
+         q(0),
+         ],
+      q(191) => [
+         q(0055),
+         q(0),
+         ],
+      q(192) => [
+         q(0056),
+         q(0),
+         ],
+      q(196) => [
+         q(0057),
+         q(0),
+         ],
+      q(203) => [
+         q(0058),
+         q(0),
+         ],
+      q(204) => [
+         q(0024),
+         q(0),
+         ],
+      q(208) => [
+         q(0059),
+         q(0),
+         ],
+      q(212) => [
+         q(0061),
+         q(0),
+         ],
+      q(214) => [
+         q(0062),
+         q(0),
+         ],
+      q(218) => [
+         q(0063),
+         q(0),
+         ],
+      q(222) => [
+         q(0065),
+         q(0),
+         ],
+      q(226) => [
+         q(0066),
+         q(0),
+         ],
+      q(231) => [
+         q(0069),
+         q(0),
+         ],
+      q(232) => [
+         q(0067),
+         q(0),
+         ],
+      q(233) => [
+         q(0068),
+         q(0),
+         ],
+      q(234) => [
+         q(0071),
+         q(1),
+         ],
+      q(238) => [
+         q(0070),
+         q(0),
+         ],
+      q(242) => [
+         q(0072),
+         q(0),
+         ],
+      q(246) => [
+         q(0073),
+         q(0),
+         ],
+      q(248) => [
+         q(0002),
+         q(0),
+         ],
+      q(249) => [
+         q(0276),
+         q(0),
+         ],
+      q(250) => [
+         q(0074),
+         q(0),
+         ],
+      q(254) => [
+         q(0075),
+         q(0),
+         ],
+      q(258) => [
+         q(0076),
+         q(0),
+         ],
+      q(260) => [
+         q(0077),
+         q(1),
+         ],
+      q(262) => [
+         q(0060),
+         q(0),
+         ],
+      q(266) => [
+         q(0078),
+         q(0),
+         ],
+      q(268) => [
+         q(0080),
+         q(0),
+         ],
+      q(270) => [
+         q(0079),
+         q(0),
+         ],
+      q(275) => [
+         q(0169),
+         q(1),
+         ],
+      q(276) => [
+         q(0081),
+         q(0),
+         ],
+      q(288) => [
+         q(0082),
+         q(0),
+         ],
+      q(292) => [
+         q(0083),
+         q(0),
+         ],
+      q(296) => [
+         q(0115),
+         q(0),
+         ],
+      q(300) => [
+         q(0084),
+         q(0),
+         ],
+      q(304) => [
+         q(0085),
+         q(0),
+         ],
+      q(308) => [
+         q(0086),
+         q(0),
+         ],
+      q(312) => [
+         q(0087),
+         q(0),
+         ],
+      q(316) => [
+         q(0088),
+         q(0),
+         ],
+      q(320) => [
+         q(0089),
+         q(0),
+         ],
+      q(324) => [
+         q(0091),
+         q(0),
+         ],
+      q(328) => [
+         q(0093),
+         q(0),
+         ],
+      q(332) => [
+         q(0094),
+         q(0),
+         ],
+      q(334) => [
+         q(0095),
+         q(0),
+         ],
+      q(336) => [
+         q(0096),
+         q(1),
+         ],
+      q(340) => [
+         q(0097),
+         q(0),
+         ],
+      q(344) => [
+         q(0098),
+         q(1),
+         ],
+      q(348) => [
+         q(0099),
+         q(0),
+         ],
+      q(352) => [
+         q(0100),
+         q(0),
+         ],
+      q(356) => [
+         q(0101),
+         q(0),
+         ],
+      q(360) => [
+         q(0102),
+         q(0),
+         ],
+      q(364) => [
+         q(0103),
+         q(1),
+         ],
+      q(368) => [
+         q(0104),
+         q(0),
+         ],
+      q(372) => [
+         q(0105),
+         q(0),
+         ],
+      q(376) => [
+         q(0107),
+         q(0),
+         ],
+      q(380) => [
+         q(0108),
+         q(0),
+         ],
+      q(384) => [
+         q(0054),
+         q(0),
+         ],
+      q(388) => [
+         q(0109),
+         q(0),
+         ],
+      q(392) => [
+         q(0110),
+         q(0),
+         ],
+      q(398) => [
+         q(0113),
+         q(0),
+         ],
+      q(400) => [
+         q(0112),
+         q(0),
+         ],
+      q(404) => [
+         q(0114),
+         q(0),
+         ],
+      q(408) => [
+         q(0116),
+         q(1),
+         ],
+      q(410) => [
+         q(0117),
+         q(1),
+         ],
+      q(414) => [
+         q(0118),
+         q(0),
+         ],
+      q(417) => [
+         q(0119),
+         q(0),
+         ],
+      q(418) => [
+         q(0120),
+         q(0),
+         ],
+      q(422) => [
+         q(0122),
+         q(0),
+         ],
+      q(426) => [
+         q(0123),
+         q(0),
+         ],
+      q(428) => [
+         q(0121),
+         q(0),
+         ],
+      q(430) => [
+         q(0124),
+         q(0),
+         ],
+      q(434) => [
+         q(0125),
+         q(0),
+         ],
+      q(438) => [
+         q(0126),
+         q(0),
+         ],
+      q(440) => [
+         q(0127),
+         q(0),
+         ],
+      q(442) => [
+         q(0128),
+         q(0),
+         ],
+      q(446) => [
+         q(0129),
+         q(1),
+         ],
+      q(450) => [
+         q(0131),
+         q(0),
+         ],
+      q(454) => [
+         q(0132),
+         q(0),
+         ],
+      q(458) => [
+         q(0133),
+         q(0),
+         ],
+      q(462) => [
+         q(0134),
+         q(0),
+         ],
+      q(466) => [
+         q(0135),
+         q(0),
+         ],
+      q(470) => [
+         q(0136),
+         q(0),
+         ],
+      q(474) => [
+         q(0138),
+         q(0),
+         ],
+      q(478) => [
+         q(0139),
+         q(0),
+         ],
+      q(480) => [
+         q(0140),
+         q(0),
+         ],
+      q(484) => [
+         q(0142),
+         q(0),
+         ],
+      q(492) => [
+         q(0145),
+         q(0),
+         ],
+      q(496) => [
+         q(0146),
+         q(0),
+         ],
+      q(498) => [
+         q(0144),
+         q(1),
+         ],
+      q(499) => [
+         q(0147),
+         q(0),
+         ],
+      q(500) => [
+         q(0148),
+         q(0),
+         ],
+      q(504) => [
+         q(0149),
+         q(0),
+         ],
+      q(508) => [
+         q(0150),
+         q(0),
+         ],
+      q(512) => [
+         q(0166),
+         q(0),
+         ],
+      q(516) => [
+         q(0152),
+         q(0),
+         ],
+      q(520) => [
+         q(0153),
+         q(0),
+         ],
+      q(524) => [
+         q(0154),
+         q(0),
+         ],
+      q(528) => [
+         q(0155),
+         q(0),
+         ],
+      q(530) => [
+         q(0156),
+         q(0),
+         ],
+      q(533) => [
+         q(0013),
+         q(0),
+         ],
+      q(540) => [
+         q(0157),
+         q(0),
+         ],
+      q(548) => [
+         q(0237),
+         q(0),
+         ],
+      q(554) => [
+         q(0158),
+         q(0),
+         ],
+      q(558) => [
+         q(0159),
+         q(0),
+         ],
+      q(562) => [
+         q(0160),
+         q(0),
+         ],
+      q(566) => [
+         q(0161),
+         q(0),
+         ],
+      q(570) => [
+         q(0162),
+         q(0),
+         ],
+      q(574) => [
+         q(0163),
+         q(0),
+         ],
+      q(578) => [
+         q(0165),
+         q(0),
+         ],
+      q(580) => [
+         q(0164),
+         q(0),
+         ],
+      q(581) => [
+         q(0234),
+         q(0),
+         ],
+      q(583) => [
+         q(0143),
+         q(1),
+         ],
+      q(584) => [
+         q(0137),
+         q(0),
+         ],
+      q(585) => [
+         q(0168),
+         q(0),
+         ],
+      q(586) => [
+         q(0167),
+         q(0),
+         ],
+      q(591) => [
+         q(0170),
+         q(0),
+         ],
+      q(598) => [
+         q(0171),
+         q(0),
+         ],
+      q(600) => [
+         q(0172),
+         q(0),
+         ],
+      q(604) => [
+         q(0173),
+         q(0),
+         ],
+      q(608) => [
+         q(0174),
+         q(0),
+         ],
+      q(612) => [
+         q(0175),
+         q(0),
+         ],
+      q(616) => [
+         q(0176),
+         q(0),
+         ],
+      q(620) => [
+         q(0177),
+         q(0),
+         ],
+      q(624) => [
+         q(0092),
+         q(0),
+         ],
+      q(626) => [
+         q(0219),
+         q(0),
+         ],
+      q(630) => [
+         q(0178),
+         q(0),
+         ],
+      q(634) => [
+         q(0179),
+         q(0),
+         ],
+      q(638) => [
+         q(0180),
+         q(0),
+         ],
+      q(642) => [
+         q(0181),
+         q(0),
+         ],
+      q(643) => [
+         q(0182),
+         q(0),
+         ],
+      q(646) => [
+         q(0183),
+         q(0),
+         ],
+      q(652) => [
+         q(0184),
+         q(1),
+         ],
+      q(654) => [
+         q(0185),
+         q(1),
+         ],
+      q(659) => [
+         q(0186),
+         q(0),
+         ],
+      q(660) => [
+         q(0008),
+         q(0),
+         ],
+      q(662) => [
+         q(0187),
+         q(0),
+         ],
+      q(663) => [
+         q(0188),
+         q(1),
+         ],
+      q(666) => [
+         q(0189),
+         q(0),
+         ],
+      q(670) => [
+         q(0190),
+         q(0),
+         ],
+      q(674) => [
+         q(0192),
+         q(0),
+         ],
+      q(678) => [
+         q(0193),
+         q(0),
+         ],
+      q(682) => [
+         q(0194),
+         q(0),
+         ],
+      q(686) => [
+         q(0195),
+         q(0),
+         ],
+      q(688) => [
+         q(0196),
+         q(0),
+         ],
+      q(690) => [
+         q(0197),
+         q(0),
+         ],
+      q(694) => [
+         q(0198),
+         q(0),
+         ],
+      q(702) => [
+         q(0199),
+         q(0),
+         ],
+      q(703) => [
+         q(0200),
+         q(0),
+         ],
+      q(704) => [
+         q(0239),
+         q(0),
+         ],
+      q(705) => [
+         q(0201),
+         q(0),
+         ],
+      q(706) => [
+         q(0203),
+         q(0),
+         ],
+      q(710) => [
+         q(0204),
+         q(0),
+         ],
+      q(716) => [
+         q(0246),
+         q(0),
+         ],
+      q(724) => [
+         q(0206),
+         q(0),
+         ],
+      q(732) => [
+         q(0243),
+         q(0),
+         ],
+      q(736) => [
+         q(0208),
+         q(0),
+         ],
+      q(740) => [
+         q(0209),
+         q(0),
+         ],
+      q(744) => [
+         q(0210),
+         q(1),
+         ],
+      q(748) => [
+         q(0211),
+         q(0),
+         ],
+      q(752) => [
+         q(0212),
+         q(0),
+         ],
+      q(756) => [
+         q(0213),
+         q(0),
+         ],
+      q(760) => [
+         q(0214),
+         q(0),
+         ],
+      q(762) => [
+         q(0216),
+         q(0),
+         ],
+      q(764) => [
+         q(0218),
+         q(0),
+         ],
+      q(768) => [
+         q(0220),
+         q(0),
+         ],
+      q(772) => [
+         q(0221),
+         q(0),
+         ],
+      q(776) => [
+         q(0222),
+         q(0),
+         ],
+      q(780) => [
+         q(0223),
+         q(0),
+         ],
+      q(784) => [
+         q(0231),
+         q(0),
+         ],
+      q(788) => [
+         q(0224),
+         q(0),
+         ],
+      q(792) => [
+         q(0225),
+         q(0),
+         ],
+      q(795) => [
+         q(0226),
+         q(0),
+         ],
+      q(796) => [
+         q(0227),
+         q(0),
+         ],
+      q(798) => [
+         q(0228),
+         q(0),
+         ],
+      q(800) => [
+         q(0229),
+         q(0),
+         ],
+      q(804) => [
+         q(0230),
+         q(0),
+         ],
+      q(807) => [
+         q(0130),
+         q(1),
+         ],
+      q(818) => [
+         q(0064),
+         q(0),
+         ],
+      q(826) => [
+         q(0232),
+         q(1),
+         ],
+      q(830) => [
+         q(0247),
+         q(0),
+         ],
+      q(831) => [
+         q(0090),
+         q(0),
+         ],
+      q(832) => [
+         q(0111),
+         q(0),
+         ],
+      q(833) => [
+         q(0106),
+         q(0),
+         ],
+      q(834) => [
+         q(0217),
+         q(1),
+         ],
+      q(840) => [
+         q(0233),
+         q(1),
+         ],
+      q(850) => [
+         q(0241),
+         q(1),
+         ],
+      q(854) => [
+         q(0035),
+         q(0),
+         ],
+      q(858) => [
+         q(0235),
+         q(0),
+         ],
+      q(860) => [
+         q(0236),
+         q(0),
+         ],
+      q(862) => [
+         q(0238),
+         q(1),
+         ],
+      q(876) => [
+         q(0242),
+         q(1),
+         ],
+      q(882) => [
+         q(0191),
+         q(0),
+         ],
+      q(887) => [
+         q(0244),
+         q(0),
+         ],
+      q(894) => [
+         q(0245),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'country'}{'id2code'} = {
+   q(alpha2) => {
+      q(0001) => q(af),
+      q(0002) => q(ax),
+      q(0003) => q(al),
+      q(0004) => q(dz),
+      q(0005) => q(as),
+      q(0006) => q(ad),
+      q(0007) => q(ao),
+      q(0008) => q(ai),
+      q(0009) => q(aq),
+      q(0010) => q(ag),
+      q(0011) => q(ar),
+      q(0012) => q(am),
+      q(0013) => q(aw),
+      q(0014) => q(au),
+      q(0015) => q(at),
+      q(0016) => q(az),
+      q(0017) => q(bs),
+      q(0018) => q(bh),
+      q(0019) => q(bd),
+      q(0020) => q(bb),
+      q(0021) => q(by),
+      q(0022) => q(be),
+      q(0023) => q(bz),
+      q(0024) => q(bj),
+      q(0025) => q(bm),
+      q(0026) => q(bt),
+      q(0027) => q(bo),
+      q(0028) => q(ba),
+      q(0029) => q(bw),
+      q(0030) => q(bv),
+      q(0031) => q(br),
+      q(0032) => q(io),
+      q(0033) => q(bn),
+      q(0034) => q(bg),
+      q(0035) => q(bf),
+      q(0036) => q(bi),
+      q(0037) => q(kh),
+      q(0038) => q(cm),
+      q(0039) => q(ca),
+      q(0040) => q(cv),
+      q(0041) => q(ky),
+      q(0042) => q(cf),
+      q(0043) => q(td),
+      q(0044) => q(cl),
+      q(0045) => q(cn),
+      q(0046) => q(cx),
+      q(0047) => q(cc),
+      q(0048) => q(co),
+      q(0049) => q(km),
+      q(0050) => q(cg),
+      q(0051) => q(cd),
+      q(0052) => q(ck),
+      q(0053) => q(cr),
+      q(0054) => q(ci),
+      q(0055) => q(hr),
+      q(0056) => q(cu),
+      q(0057) => q(cy),
+      q(0058) => q(cz),
+      q(0059) => q(dk),
+      q(0060) => q(dj),
+      q(0061) => q(dm),
+      q(0062) => q(do),
+      q(0063) => q(ec),
+      q(0064) => q(eg),
+      q(0065) => q(sv),
+      q(0066) => q(gq),
+      q(0067) => q(er),
+      q(0068) => q(ee),
+      q(0069) => q(et),
+      q(0070) => q(fk),
+      q(0071) => q(fo),
+      q(0072) => q(fj),
+      q(0073) => q(fi),
+      q(0074) => q(fr),
+      q(0075) => q(gf),
+      q(0076) => q(pf),
+      q(0077) => q(tf),
+      q(0078) => q(ga),
+      q(0079) => q(gm),
+      q(0080) => q(ge),
+      q(0081) => q(de),
+      q(0082) => q(gh),
+      q(0083) => q(gi),
+      q(0084) => q(gr),
+      q(0085) => q(gl),
+      q(0086) => q(gd),
+      q(0087) => q(gp),
+      q(0088) => q(gu),
+      q(0089) => q(gt),
+      q(0090) => q(gg),
+      q(0091) => q(gn),
+      q(0092) => q(gw),
+      q(0093) => q(gy),
+      q(0094) => q(ht),
+      q(0095) => q(hm),
+      q(0096) => q(va),
+      q(0097) => q(hn),
+      q(0098) => q(hk),
+      q(0099) => q(hu),
+      q(0100) => q(is),
+      q(0101) => q(in),
+      q(0102) => q(id),
+      q(0103) => q(ir),
+      q(0104) => q(iq),
+      q(0105) => q(ie),
+      q(0106) => q(im),
+      q(0107) => q(il),
+      q(0108) => q(it),
+      q(0109) => q(jm),
+      q(0110) => q(jp),
+      q(0111) => q(je),
+      q(0112) => q(jo),
+      q(0113) => q(kz),
+      q(0114) => q(ke),
+      q(0115) => q(ki),
+      q(0116) => q(kp),
+      q(0117) => q(kr),
+      q(0118) => q(kw),
+      q(0119) => q(kg),
+      q(0120) => q(la),
+      q(0121) => q(lv),
+      q(0122) => q(lb),
+      q(0123) => q(ls),
+      q(0124) => q(lr),
+      q(0125) => q(ly),
+      q(0126) => q(li),
+      q(0127) => q(lt),
+      q(0128) => q(lu),
+      q(0129) => q(mo),
+      q(0130) => q(mk),
+      q(0131) => q(mg),
+      q(0132) => q(mw),
+      q(0133) => q(my),
+      q(0134) => q(mv),
+      q(0135) => q(ml),
+      q(0136) => q(mt),
+      q(0137) => q(mh),
+      q(0138) => q(mq),
+      q(0139) => q(mr),
+      q(0140) => q(mu),
+      q(0141) => q(yt),
+      q(0142) => q(mx),
+      q(0143) => q(fm),
+      q(0144) => q(md),
+      q(0145) => q(mc),
+      q(0146) => q(mn),
+      q(0147) => q(me),
+      q(0148) => q(ms),
+      q(0149) => q(ma),
+      q(0150) => q(mz),
+      q(0151) => q(mm),
+      q(0152) => q(na),
+      q(0153) => q(nr),
+      q(0154) => q(np),
+      q(0155) => q(nl),
+      q(0156) => q(an),
+      q(0157) => q(nc),
+      q(0158) => q(nz),
+      q(0159) => q(ni),
+      q(0160) => q(ne),
+      q(0161) => q(ng),
+      q(0162) => q(nu),
+      q(0163) => q(nf),
+      q(0164) => q(mp),
+      q(0165) => q(no),
+      q(0166) => q(om),
+      q(0167) => q(pk),
+      q(0168) => q(pw),
+      q(0169) => q(ps),
+      q(0170) => q(pa),
+      q(0171) => q(pg),
+      q(0172) => q(py),
+      q(0173) => q(pe),
+      q(0174) => q(ph),
+      q(0175) => q(pn),
+      q(0176) => q(pl),
+      q(0177) => q(pt),
+      q(0178) => q(pr),
+      q(0179) => q(qa),
+      q(0180) => q(re),
+      q(0181) => q(ro),
+      q(0182) => q(ru),
+      q(0183) => q(rw),
+      q(0184) => q(bl),
+      q(0185) => q(sh),
+      q(0186) => q(kn),
+      q(0187) => q(lc),
+      q(0188) => q(mf),
+      q(0189) => q(pm),
+      q(0190) => q(vc),
+      q(0191) => q(ws),
+      q(0192) => q(sm),
+      q(0193) => q(st),
+      q(0194) => q(sa),
+      q(0195) => q(sn),
+      q(0196) => q(rs),
+      q(0197) => q(sc),
+      q(0198) => q(sl),
+      q(0199) => q(sg),
+      q(0200) => q(sk),
+      q(0201) => q(si),
+      q(0202) => q(sb),
+      q(0203) => q(so),
+      q(0204) => q(za),
+      q(0205) => q(gs),
+      q(0206) => q(es),
+      q(0207) => q(lk),
+      q(0208) => q(sd),
+      q(0209) => q(sr),
+      q(0210) => q(sj),
+      q(0211) => q(sz),
+      q(0212) => q(se),
+      q(0213) => q(ch),
+      q(0214) => q(sy),
+      q(0215) => q(tw),
+      q(0216) => q(tj),
+      q(0217) => q(tz),
+      q(0218) => q(th),
+      q(0219) => q(tl),
+      q(0220) => q(tg),
+      q(0221) => q(tk),
+      q(0222) => q(to),
+      q(0223) => q(tt),
+      q(0224) => q(tn),
+      q(0225) => q(tr),
+      q(0226) => q(tm),
+      q(0227) => q(tc),
+      q(0228) => q(tv),
+      q(0229) => q(ug),
+      q(0230) => q(ua),
+      q(0231) => q(ae),
+      q(0232) => q(gb),
+      q(0233) => q(us),
+      q(0234) => q(um),
+      q(0235) => q(uy),
+      q(0236) => q(uz),
+      q(0237) => q(vu),
+      q(0238) => q(ve),
+      q(0239) => q(vn),
+      q(0240) => q(vg),
+      q(0241) => q(vi),
+      q(0242) => q(wf),
+      q(0243) => q(eh),
+      q(0244) => q(ye),
+      q(0245) => q(zm),
+      q(0246) => q(zw),
+      q(0276) => q(fx),
+      },
+   q(alpha3) => {
+      q(0001) => q(afg),
+      q(0002) => q(ala),
+      q(0003) => q(alb),
+      q(0004) => q(dza),
+      q(0005) => q(asm),
+      q(0006) => q(and),
+      q(0007) => q(ago),
+      q(0008) => q(aia),
+      q(0009) => q(ata),
+      q(0010) => q(atg),
+      q(0011) => q(arg),
+      q(0012) => q(arm),
+      q(0013) => q(abw),
+      q(0014) => q(aus),
+      q(0015) => q(aut),
+      q(0016) => q(aze),
+      q(0017) => q(bhs),
+      q(0018) => q(bhr),
+      q(0019) => q(bgd),
+      q(0020) => q(brb),
+      q(0021) => q(blr),
+      q(0022) => q(bel),
+      q(0023) => q(blz),
+      q(0024) => q(ben),
+      q(0025) => q(bmu),
+      q(0026) => q(btn),
+      q(0027) => q(bol),
+      q(0028) => q(bih),
+      q(0029) => q(bwa),
+      q(0030) => q(bvt),
+      q(0031) => q(bra),
+      q(0032) => q(iot),
+      q(0033) => q(brn),
+      q(0034) => q(bgr),
+      q(0035) => q(bfa),
+      q(0036) => q(bdi),
+      q(0037) => q(khm),
+      q(0038) => q(cmr),
+      q(0039) => q(can),
+      q(0040) => q(cpv),
+      q(0041) => q(cym),
+      q(0042) => q(caf),
+      q(0043) => q(tcd),
+      q(0044) => q(chl),
+      q(0045) => q(chn),
+      q(0046) => q(cxr),
+      q(0047) => q(cck),
+      q(0048) => q(col),
+      q(0049) => q(com),
+      q(0050) => q(cog),
+      q(0051) => q(cod),
+      q(0052) => q(cok),
+      q(0053) => q(cri),
+      q(0054) => q(civ),
+      q(0055) => q(hrv),
+      q(0056) => q(cub),
+      q(0057) => q(cyp),
+      q(0058) => q(cze),
+      q(0059) => q(dnk),
+      q(0060) => q(dji),
+      q(0061) => q(dma),
+      q(0062) => q(dom),
+      q(0063) => q(ecu),
+      q(0064) => q(egy),
+      q(0065) => q(slv),
+      q(0066) => q(gnq),
+      q(0067) => q(eri),
+      q(0068) => q(est),
+      q(0069) => q(eth),
+      q(0070) => q(flk),
+      q(0071) => q(fro),
+      q(0072) => q(fji),
+      q(0073) => q(fin),
+      q(0074) => q(fra),
+      q(0075) => q(guf),
+      q(0076) => q(pyf),
+      q(0077) => q(atf),
+      q(0078) => q(gab),
+      q(0079) => q(gmb),
+      q(0080) => q(geo),
+      q(0081) => q(deu),
+      q(0082) => q(gha),
+      q(0083) => q(gib),
+      q(0084) => q(grc),
+      q(0085) => q(grl),
+      q(0086) => q(grd),
+      q(0087) => q(glp),
+      q(0088) => q(gum),
+      q(0089) => q(gtm),
+      q(0090) => q(ggy),
+      q(0091) => q(gin),
+      q(0092) => q(gnb),
+      q(0093) => q(guy),
+      q(0094) => q(hti),
+      q(0095) => q(hmd),
+      q(0096) => q(vat),
+      q(0097) => q(hnd),
+      q(0098) => q(hkg),
+      q(0099) => q(hun),
+      q(0100) => q(isl),
+      q(0101) => q(ind),
+      q(0102) => q(idn),
+      q(0103) => q(irn),
+      q(0104) => q(irq),
+      q(0105) => q(irl),
+      q(0106) => q(imn),
+      q(0107) => q(isr),
+      q(0108) => q(ita),
+      q(0109) => q(jam),
+      q(0110) => q(jpn),
+      q(0111) => q(jey),
+      q(0112) => q(jor),
+      q(0113) => q(kaz),
+      q(0114) => q(ken),
+      q(0115) => q(kir),
+      q(0116) => q(prk),
+      q(0117) => q(kor),
+      q(0118) => q(kwt),
+      q(0119) => q(kgz),
+      q(0120) => q(lao),
+      q(0121) => q(lva),
+      q(0122) => q(lbn),
+      q(0123) => q(lso),
+      q(0124) => q(lbr),
+      q(0125) => q(lby),
+      q(0126) => q(lie),
+      q(0127) => q(ltu),
+      q(0128) => q(lux),
+      q(0129) => q(mac),
+      q(0130) => q(mkd),
+      q(0131) => q(mdg),
+      q(0132) => q(mwi),
+      q(0133) => q(mys),
+      q(0134) => q(mdv),
+      q(0135) => q(mli),
+      q(0136) => q(mlt),
+      q(0137) => q(mhl),
+      q(0138) => q(mtq),
+      q(0139) => q(mrt),
+      q(0140) => q(mus),
+      q(0141) => q(myt),
+      q(0142) => q(mex),
+      q(0143) => q(fsm),
+      q(0144) => q(mda),
+      q(0145) => q(mco),
+      q(0146) => q(mng),
+      q(0147) => q(mne),
+      q(0148) => q(msr),
+      q(0149) => q(mar),
+      q(0150) => q(moz),
+      q(0151) => q(mmr),
+      q(0152) => q(nam),
+      q(0153) => q(nru),
+      q(0154) => q(npl),
+      q(0155) => q(nld),
+      q(0156) => q(ant),
+      q(0157) => q(ncl),
+      q(0158) => q(nzl),
+      q(0159) => q(nic),
+      q(0160) => q(ner),
+      q(0161) => q(nga),
+      q(0162) => q(niu),
+      q(0163) => q(nfk),
+      q(0164) => q(mnp),
+      q(0165) => q(nor),
+      q(0166) => q(omn),
+      q(0167) => q(pak),
+      q(0168) => q(plw),
+      q(0169) => q(pse),
+      q(0170) => q(pan),
+      q(0171) => q(png),
+      q(0172) => q(pry),
+      q(0173) => q(per),
+      q(0174) => q(phl),
+      q(0175) => q(pcn),
+      q(0176) => q(pol),
+      q(0177) => q(prt),
+      q(0178) => q(pri),
+      q(0179) => q(qat),
+      q(0180) => q(reu),
+      q(0181) => q(rou),
+      q(0182) => q(rus),
+      q(0183) => q(rwa),
+      q(0184) => q(blm),
+      q(0185) => q(shn),
+      q(0186) => q(kna),
+      q(0187) => q(lca),
+      q(0188) => q(maf),
+      q(0189) => q(spm),
+      q(0190) => q(vct),
+      q(0191) => q(wsm),
+      q(0192) => q(smr),
+      q(0193) => q(stp),
+      q(0194) => q(sau),
+      q(0195) => q(sen),
+      q(0196) => q(srb),
+      q(0197) => q(syc),
+      q(0198) => q(sle),
+      q(0199) => q(sgp),
+      q(0200) => q(svk),
+      q(0201) => q(svn),
+      q(0202) => q(slb),
+      q(0203) => q(som),
+      q(0204) => q(zaf),
+      q(0206) => q(esp),
+      q(0207) => q(lka),
+      q(0208) => q(sdn),
+      q(0209) => q(sur),
+      q(0210) => q(sjm),
+      q(0211) => q(swz),
+      q(0212) => q(swe),
+      q(0213) => q(che),
+      q(0214) => q(syr),
+      q(0215) => q(twn),
+      q(0216) => q(tjk),
+      q(0217) => q(tza),
+      q(0218) => q(tha),
+      q(0219) => q(tls),
+      q(0220) => q(tgo),
+      q(0221) => q(tkl),
+      q(0222) => q(ton),
+      q(0223) => q(tto),
+      q(0224) => q(tun),
+      q(0225) => q(tur),
+      q(0226) => q(tkm),
+      q(0227) => q(tca),
+      q(0228) => q(tuv),
+      q(0229) => q(uga),
+      q(0230) => q(ukr),
+      q(0231) => q(are),
+      q(0232) => q(gbr),
+      q(0233) => q(usa),
+      q(0234) => q(umi),
+      q(0235) => q(ury),
+      q(0236) => q(uzb),
+      q(0237) => q(vut),
+      q(0238) => q(ven),
+      q(0239) => q(vnm),
+      q(0240) => q(vgb),
+      q(0241) => q(vir),
+      q(0242) => q(wlf),
+      q(0243) => q(esh),
+      q(0244) => q(yem),
+      q(0245) => q(zmb),
+      q(0246) => q(zwe),
+      q(0276) => q(fxx),
+      },
+   q(dom) => {
+      q(0001) => q(AF),
+      q(0002) => q(AX),
+      q(0003) => q(AL),
+      q(0004) => q(DZ),
+      q(0005) => q(AS),
+      q(0006) => q(AD),
+      q(0007) => q(AO),
+      q(0008) => q(AI),
+      q(0009) => q(AQ),
+      q(0010) => q(AG),
+      q(0011) => q(AR),
+      q(0012) => q(AM),
+      q(0013) => q(AW),
+      q(0014) => q(AU),
+      q(0015) => q(AT),
+      q(0016) => q(AZ),
+      q(0017) => q(BS),
+      q(0018) => q(BH),
+      q(0019) => q(BD),
+      q(0020) => q(BB),
+      q(0021) => q(BY),
+      q(0022) => q(BE),
+      q(0023) => q(BZ),
+      q(0024) => q(BJ),
+      q(0025) => q(BM),
+      q(0026) => q(BT),
+      q(0027) => q(BO),
+      q(0028) => q(BA),
+      q(0029) => q(BW),
+      q(0030) => q(BV),
+      q(0031) => q(BR),
+      q(0032) => q(IO),
+      q(0033) => q(BN),
+      q(0034) => q(BG),
+      q(0035) => q(BF),
+      q(0036) => q(BI),
+      q(0037) => q(KH),
+      q(0038) => q(CM),
+      q(0039) => q(CA),
+      q(0040) => q(CV),
+      q(0041) => q(KY),
+      q(0042) => q(CF),
+      q(0043) => q(TD),
+      q(0044) => q(CL),
+      q(0045) => q(CN),
+      q(0046) => q(CX),
+      q(0047) => q(CC),
+      q(0048) => q(CO),
+      q(0049) => q(KM),
+      q(0050) => q(CG),
+      q(0051) => q(CD),
+      q(0052) => q(CK),
+      q(0053) => q(CR),
+      q(0054) => q(CI),
+      q(0055) => q(HR),
+      q(0056) => q(CU),
+      q(0057) => q(CY),
+      q(0058) => q(CZ),
+      q(0059) => q(DK),
+      q(0060) => q(DJ),
+      q(0061) => q(DM),
+      q(0062) => q(DO),
+      q(0063) => q(EC),
+      q(0064) => q(EG),
+      q(0065) => q(SV),
+      q(0066) => q(GQ),
+      q(0067) => q(ER),
+      q(0068) => q(EE),
+      q(0069) => q(ET),
+      q(0070) => q(FK),
+      q(0071) => q(FO),
+      q(0072) => q(FJ),
+      q(0073) => q(FI),
+      q(0074) => q(FR),
+      q(0075) => q(GF),
+      q(0076) => q(PF),
+      q(0077) => q(TF),
+      q(0078) => q(GA),
+      q(0079) => q(GM),
+      q(0080) => q(GE),
+      q(0081) => q(DE),
+      q(0082) => q(GH),
+      q(0083) => q(GI),
+      q(0084) => q(GR),
+      q(0085) => q(GL),
+      q(0086) => q(GD),
+      q(0087) => q(GP),
+      q(0088) => q(GU),
+      q(0089) => q(GT),
+      q(0090) => q(GG),
+      q(0091) => q(GN),
+      q(0092) => q(GW),
+      q(0093) => q(GY),
+      q(0094) => q(HT),
+      q(0095) => q(HM),
+      q(0096) => q(VA),
+      q(0097) => q(HN),
+      q(0098) => q(HK),
+      q(0099) => q(HU),
+      q(0100) => q(IS),
+      q(0101) => q(IN),
+      q(0102) => q(ID),
+      q(0103) => q(IR),
+      q(0104) => q(IQ),
+      q(0105) => q(IE),
+      q(0106) => q(IM),
+      q(0107) => q(IL),
+      q(0108) => q(IT),
+      q(0109) => q(JM),
+      q(0110) => q(JP),
+      q(0111) => q(JE),
+      q(0112) => q(JO),
+      q(0113) => q(KZ),
+      q(0114) => q(KE),
+      q(0115) => q(KI),
+      q(0116) => q(KP),
+      q(0117) => q(KR),
+      q(0118) => q(KW),
+      q(0119) => q(KG),
+      q(0120) => q(LA),
+      q(0121) => q(LV),
+      q(0122) => q(LB),
+      q(0123) => q(LS),
+      q(0124) => q(LR),
+      q(0125) => q(LY),
+      q(0126) => q(LI),
+      q(0127) => q(LT),
+      q(0128) => q(LU),
+      q(0129) => q(MO),
+      q(0130) => q(MK),
+      q(0131) => q(MG),
+      q(0132) => q(MW),
+      q(0133) => q(MY),
+      q(0134) => q(MV),
+      q(0135) => q(ML),
+      q(0136) => q(MT),
+      q(0137) => q(MH),
+      q(0138) => q(MQ),
+      q(0139) => q(MR),
+      q(0140) => q(MU),
+      q(0141) => q(YT),
+      q(0142) => q(MX),
+      q(0143) => q(FM),
+      q(0144) => q(MD),
+      q(0145) => q(MC),
+      q(0146) => q(MN),
+      q(0147) => q(ME),
+      q(0148) => q(MS),
+      q(0149) => q(MA),
+      q(0150) => q(MZ),
+      q(0151) => q(MM),
+      q(0152) => q(NA),
+      q(0153) => q(NR),
+      q(0154) => q(NP),
+      q(0155) => q(NL),
+      q(0156) => q(AN),
+      q(0157) => q(NC),
+      q(0158) => q(NZ),
+      q(0159) => q(NI),
+      q(0160) => q(NE),
+      q(0161) => q(NG),
+      q(0162) => q(NU),
+      q(0163) => q(NF),
+      q(0164) => q(MP),
+      q(0165) => q(NO),
+      q(0166) => q(OM),
+      q(0167) => q(PK),
+      q(0168) => q(PW),
+      q(0169) => q(PS),
+      q(0170) => q(PA),
+      q(0171) => q(PG),
+      q(0172) => q(PY),
+      q(0173) => q(PE),
+      q(0174) => q(PH),
+      q(0175) => q(PN),
+      q(0176) => q(PL),
+      q(0177) => q(PT),
+      q(0178) => q(PR),
+      q(0179) => q(QA),
+      q(0180) => q(RE),
+      q(0181) => q(RO),
+      q(0182) => q(RU),
+      q(0183) => q(RW),
+      q(0184) => q(BL),
+      q(0185) => q(SH),
+      q(0186) => q(KN),
+      q(0187) => q(LC),
+      q(0188) => q(MF),
+      q(0189) => q(PM),
+      q(0190) => q(VC),
+      q(0191) => q(WS),
+      q(0192) => q(SM),
+      q(0193) => q(ST),
+      q(0194) => q(SA),
+      q(0195) => q(SN),
+      q(0196) => q(RS),
+      q(0197) => q(SC),
+      q(0198) => q(SL),
+      q(0199) => q(SG),
+      q(0200) => q(SK),
+      q(0201) => q(SI),
+      q(0202) => q(SB),
+      q(0203) => q(SO),
+      q(0204) => q(ZA),
+      q(0205) => q(GS),
+      q(0206) => q(ES),
+      q(0207) => q(LK),
+      q(0208) => q(SD),
+      q(0209) => q(SR),
+      q(0210) => q(SJ),
+      q(0211) => q(SZ),
+      q(0212) => q(SE),
+      q(0213) => q(CH),
+      q(0214) => q(SY),
+      q(0215) => q(TW),
+      q(0216) => q(TJ),
+      q(0217) => q(TZ),
+      q(0218) => q(TH),
+      q(0219) => q(TL),
+      q(0220) => q(TG),
+      q(0221) => q(TK),
+      q(0222) => q(TO),
+      q(0223) => q(TT),
+      q(0224) => q(TN),
+      q(0225) => q(TR),
+      q(0226) => q(TM),
+      q(0227) => q(TC),
+      q(0228) => q(TV),
+      q(0229) => q(UG),
+      q(0230) => q(UA),
+      q(0231) => q(AE),
+      q(0232) => q(UK),
+      q(0233) => q(US),
+      q(0234) => q(UM),
+      q(0235) => q(UY),
+      q(0236) => q(UZ),
+      q(0237) => q(VU),
+      q(0238) => q(VE),
+      q(0239) => q(VN),
+      q(0240) => q(VG),
+      q(0241) => q(VI),
+      q(0242) => q(WF),
+      q(0243) => q(EH),
+      q(0244) => q(YE),
+      q(0245) => q(ZM),
+      q(0246) => q(ZW),
+      q(0272) => q(AC),
+      q(0273) => q(EU),
+      q(0274) => q(SU),
+      q(0275) => q(TP),
+      q(0276) => q(FX),
+      },
+   q(fips) => {
+      q(0001) => q(AF),
+      q(0003) => q(AL),
+      q(0004) => q(AG),
+      q(0005) => q(AQ),
+      q(0006) => q(AN),
+      q(0007) => q(AO),
+      q(0008) => q(AV),
+      q(0009) => q(AY),
+      q(0010) => q(AC),
+      q(0011) => q(AR),
+      q(0012) => q(AM),
+      q(0013) => q(AA),
+      q(0014) => q(AS),
+      q(0015) => q(AU),
+      q(0016) => q(AJ),
+      q(0017) => q(BF),
+      q(0018) => q(BA),
+      q(0019) => q(BG),
+      q(0020) => q(BB),
+      q(0021) => q(BO),
+      q(0022) => q(BE),
+      q(0023) => q(BH),
+      q(0024) => q(BN),
+      q(0025) => q(BD),
+      q(0026) => q(BT),
+      q(0027) => q(BL),
+      q(0028) => q(BK),
+      q(0029) => q(BC),
+      q(0030) => q(BV),
+      q(0031) => q(BR),
+      q(0032) => q(IO),
+      q(0033) => q(BX),
+      q(0034) => q(BU),
+      q(0035) => q(UV),
+      q(0036) => q(BY),
+      q(0037) => q(CB),
+      q(0038) => q(CM),
+      q(0039) => q(CA),
+      q(0040) => q(CV),
+      q(0041) => q(CJ),
+      q(0042) => q(CT),
+      q(0043) => q(CD),
+      q(0044) => q(CI),
+      q(0045) => q(CH),
+      q(0046) => q(KT),
+      q(0047) => q(CK),
+      q(0048) => q(CO),
+      q(0049) => q(CN),
+      q(0050) => q(CF),
+      q(0051) => q(CG),
+      q(0052) => q(CW),
+      q(0053) => q(CS),
+      q(0054) => q(IV),
+      q(0055) => q(HR),
+      q(0056) => q(CU),
+      q(0057) => q(CY),
+      q(0058) => q(EZ),
+      q(0059) => q(DA),
+      q(0060) => q(DJ),
+      q(0061) => q(DO),
+      q(0062) => q(DR),
+      q(0063) => q(EC),
+      q(0064) => q(EG),
+      q(0065) => q(ES),
+      q(0066) => q(EK),
+      q(0067) => q(ER),
+      q(0068) => q(EN),
+      q(0069) => q(ET),
+      q(0070) => q(FK),
+      q(0071) => q(FO),
+      q(0072) => q(FJ),
+      q(0073) => q(FI),
+      q(0074) => q(FR),
+      q(0075) => q(FG),
+      q(0076) => q(FP),
+      q(0077) => q(FS),
+      q(0078) => q(GB),
+      q(0079) => q(GA),
+      q(0080) => q(GG),
+      q(0081) => q(GM),
+      q(0082) => q(GH),
+      q(0083) => q(GI),
+      q(0084) => q(GR),
+      q(0085) => q(GL),
+      q(0086) => q(GJ),
+      q(0087) => q(GP),
+      q(0088) => q(GQ),
+      q(0089) => q(GT),
+      q(0090) => q(GK),
+      q(0091) => q(GV),
+      q(0092) => q(PU),
+      q(0093) => q(GY),
+      q(0094) => q(HA),
+      q(0095) => q(HM),
+      q(0096) => q(VT),
+      q(0097) => q(HO),
+      q(0098) => q(HK),
+      q(0099) => q(HU),
+      q(0100) => q(IC),
+      q(0101) => q(IN),
+      q(0102) => q(ID),
+      q(0103) => q(IR),
+      q(0104) => q(IZ),
+      q(0105) => q(EI),
+      q(0106) => q(IM),
+      q(0107) => q(IS),
+      q(0108) => q(IT),
+      q(0109) => q(JM),
+      q(0110) => q(JA),
+      q(0111) => q(JE),
+      q(0112) => q(JO),
+      q(0113) => q(KZ),
+      q(0114) => q(KE),
+      q(0115) => q(KR),
+      q(0116) => q(KN),
+      q(0117) => q(KS),
+      q(0118) => q(KU),
+      q(0119) => q(KG),
+      q(0120) => q(LA),
+      q(0121) => q(LG),
+      q(0122) => q(LE),
+      q(0123) => q(LT),
+      q(0124) => q(LI),
+      q(0125) => q(LY),
+      q(0126) => q(LS),
+      q(0127) => q(LH),
+      q(0128) => q(LU),
+      q(0129) => q(MC),
+      q(0130) => q(MK),
+      q(0131) => q(MA),
+      q(0132) => q(MI),
+      q(0133) => q(MY),
+      q(0134) => q(MV),
+      q(0135) => q(ML),
+      q(0136) => q(MT),
+      q(0137) => q(RM),
+      q(0138) => q(MB),
+      q(0139) => q(MR),
+      q(0140) => q(MP),
+      q(0141) => q(MF),
+      q(0142) => q(MX),
+      q(0143) => q(FM),
+      q(0144) => q(MD),
+      q(0145) => q(MN),
+      q(0146) => q(MG),
+      q(0147) => q(MJ),
+      q(0148) => q(MH),
+      q(0149) => q(MO),
+      q(0150) => q(MZ),
+      q(0151) => q(BM),
+      q(0152) => q(WA),
+      q(0153) => q(NR),
+      q(0154) => q(NP),
+      q(0155) => q(NL),
+      q(0156) => q(NT),
+      q(0157) => q(NC),
+      q(0158) => q(NZ),
+      q(0159) => q(NU),
+      q(0160) => q(NG),
+      q(0161) => q(NI),
+      q(0162) => q(NE),
+      q(0163) => q(NF),
+      q(0164) => q(CQ),
+      q(0165) => q(NO),
+      q(0166) => q(MU),
+      q(0167) => q(PK),
+      q(0168) => q(PS),
+      q(0170) => q(PM),
+      q(0171) => q(PP),
+      q(0172) => q(PA),
+      q(0173) => q(PE),
+      q(0174) => q(RP),
+      q(0175) => q(PC),
+      q(0176) => q(PL),
+      q(0177) => q(PO),
+      q(0178) => q(RQ),
+      q(0179) => q(QA),
+      q(0180) => q(RE),
+      q(0181) => q(RO),
+      q(0182) => q(RS),
+      q(0183) => q(RW),
+      q(0184) => q(TB),
+      q(0185) => q(SH),
+      q(0186) => q(SC),
+      q(0187) => q(ST),
+      q(0188) => q(RN),
+      q(0189) => q(SB),
+      q(0190) => q(VC),
+      q(0191) => q(WS),
+      q(0192) => q(SM),
+      q(0193) => q(TP),
+      q(0194) => q(SA),
+      q(0195) => q(SG),
+      q(0196) => q(RI),
+      q(0197) => q(SE),
+      q(0198) => q(SL),
+      q(0199) => q(SN),
+      q(0200) => q(LO),
+      q(0201) => q(SI),
+      q(0202) => q(BP),
+      q(0203) => q(SO),
+      q(0204) => q(SF),
+      q(0205) => q(SX),
+      q(0206) => q(SP),
+      q(0207) => q(CE),
+      q(0208) => q(SU),
+      q(0209) => q(NS),
+      q(0211) => q(WZ),
+      q(0212) => q(SW),
+      q(0213) => q(SZ),
+      q(0214) => q(SY),
+      q(0215) => q(TW),
+      q(0216) => q(TI),
+      q(0217) => q(TZ),
+      q(0218) => q(TH),
+      q(0219) => q(TT),
+      q(0220) => q(TO),
+      q(0221) => q(TL),
+      q(0222) => q(TN),
+      q(0223) => q(TD),
+      q(0224) => q(TS),
+      q(0225) => q(TU),
+      q(0226) => q(TX),
+      q(0227) => q(TK),
+      q(0228) => q(TV),
+      q(0229) => q(UG),
+      q(0230) => q(UP),
+      q(0231) => q(AE),
+      q(0232) => q(UK),
+      q(0233) => q(US),
+      q(0235) => q(UY),
+      q(0236) => q(UZ),
+      q(0237) => q(NH),
+      q(0238) => q(VE),
+      q(0239) => q(VM),
+      q(0240) => q(VI),
+      q(0241) => q(VQ),
+      q(0242) => q(WF),
+      q(0243) => q(WI),
+      q(0244) => q(YM),
+      q(0245) => q(ZA),
+      q(0246) => q(ZI),
+      q(0248) => q(YI),
+      q(0249) => q(AT),
+      q(0250) => q(FQ),
+      q(0251) => q(BS),
+      q(0252) => q(IP),
+      q(0253) => q(CR),
+      q(0254) => q(EU),
+      q(0255) => q(GZ),
+      q(0256) => q(GO),
+      q(0257) => q(HQ),
+      q(0258) => q(JN),
+      q(0259) => q(DQ),
+      q(0260) => q(JQ),
+      q(0261) => q(JU),
+      q(0262) => q(KQ),
+      q(0263) => q(MQ),
+      q(0264) => q(BQ),
+      q(0265) => q(LQ),
+      q(0266) => q(PF),
+      q(0267) => q(PG),
+      q(0268) => q(SV),
+      q(0269) => q(TE),
+      q(0270) => q(WQ),
+      q(0271) => q(WE),
+      q(0277) => q(KV),
+      },
+   q(num) => {
+      q(0001) => q(004),
+      q(0002) => q(248),
+      q(0003) => q(008),
+      q(0004) => q(012),
+      q(0005) => q(016),
+      q(0006) => q(020),
+      q(0007) => q(024),
+      q(0008) => q(660),
+      q(0009) => q(010),
+      q(0010) => q(028),
+      q(0011) => q(032),
+      q(0012) => q(051),
+      q(0013) => q(533),
+      q(0014) => q(036),
+      q(0015) => q(040),
+      q(0016) => q(031),
+      q(0017) => q(044),
+      q(0018) => q(048),
+      q(0019) => q(050),
+      q(0020) => q(052),
+      q(0021) => q(112),
+      q(0022) => q(056),
+      q(0023) => q(084),
+      q(0024) => q(204),
+      q(0025) => q(060),
+      q(0026) => q(064),
+      q(0027) => q(068),
+      q(0028) => q(070),
+      q(0029) => q(072),
+      q(0030) => q(074),
+      q(0031) => q(076),
+      q(0032) => q(086),
+      q(0033) => q(096),
+      q(0034) => q(100),
+      q(0035) => q(854),
+      q(0036) => q(108),
+      q(0037) => q(116),
+      q(0038) => q(120),
+      q(0039) => q(124),
+      q(0040) => q(132),
+      q(0041) => q(136),
+      q(0042) => q(140),
+      q(0043) => q(148),
+      q(0044) => q(152),
+      q(0045) => q(156),
+      q(0046) => q(162),
+      q(0047) => q(166),
+      q(0048) => q(170),
+      q(0049) => q(174),
+      q(0050) => q(178),
+      q(0051) => q(180),
+      q(0052) => q(184),
+      q(0053) => q(188),
+      q(0054) => q(384),
+      q(0055) => q(191),
+      q(0056) => q(192),
+      q(0057) => q(196),
+      q(0058) => q(203),
+      q(0059) => q(208),
+      q(0060) => q(262),
+      q(0061) => q(212),
+      q(0062) => q(214),
+      q(0063) => q(218),
+      q(0064) => q(818),
+      q(0065) => q(222),
+      q(0066) => q(226),
+      q(0067) => q(232),
+      q(0068) => q(233),
+      q(0069) => q(231),
+      q(0070) => q(238),
+      q(0071) => q(234),
+      q(0072) => q(242),
+      q(0073) => q(246),
+      q(0074) => q(250),
+      q(0075) => q(254),
+      q(0076) => q(258),
+      q(0077) => q(260),
+      q(0078) => q(266),
+      q(0079) => q(270),
+      q(0080) => q(268),
+      q(0081) => q(276),
+      q(0082) => q(288),
+      q(0083) => q(292),
+      q(0084) => q(300),
+      q(0085) => q(304),
+      q(0086) => q(308),
+      q(0087) => q(312),
+      q(0088) => q(316),
+      q(0089) => q(320),
+      q(0090) => q(831),
+      q(0091) => q(324),
+      q(0092) => q(624),
+      q(0093) => q(328),
+      q(0094) => q(332),
+      q(0095) => q(334),
+      q(0096) => q(336),
+      q(0097) => q(340),
+      q(0098) => q(344),
+      q(0099) => q(348),
+      q(0100) => q(352),
+      q(0101) => q(356),
+      q(0102) => q(360),
+      q(0103) => q(364),
+      q(0104) => q(368),
+      q(0105) => q(372),
+      q(0106) => q(833),
+      q(0107) => q(376),
+      q(0108) => q(380),
+      q(0109) => q(388),
+      q(0110) => q(392),
+      q(0111) => q(832),
+      q(0112) => q(400),
+      q(0113) => q(398),
+      q(0114) => q(404),
+      q(0115) => q(296),
+      q(0116) => q(408),
+      q(0117) => q(410),
+      q(0118) => q(414),
+      q(0119) => q(417),
+      q(0120) => q(418),
+      q(0121) => q(428),
+      q(0122) => q(422),
+      q(0123) => q(426),
+      q(0124) => q(430),
+      q(0125) => q(434),
+      q(0126) => q(438),
+      q(0127) => q(440),
+      q(0128) => q(442),
+      q(0129) => q(446),
+      q(0130) => q(807),
+      q(0131) => q(450),
+      q(0132) => q(454),
+      q(0133) => q(458),
+      q(0134) => q(462),
+      q(0135) => q(466),
+      q(0136) => q(470),
+      q(0137) => q(584),
+      q(0138) => q(474),
+      q(0139) => q(478),
+      q(0140) => q(480),
+      q(0141) => q(175),
+      q(0142) => q(484),
+      q(0143) => q(583),
+      q(0144) => q(498),
+      q(0145) => q(492),
+      q(0146) => q(496),
+      q(0147) => q(499),
+      q(0148) => q(500),
+      q(0149) => q(504),
+      q(0150) => q(508),
+      q(0151) => q(104),
+      q(0152) => q(516),
+      q(0153) => q(520),
+      q(0154) => q(524),
+      q(0155) => q(528),
+      q(0156) => q(530),
+      q(0157) => q(540),
+      q(0158) => q(554),
+      q(0159) => q(558),
+      q(0160) => q(562),
+      q(0161) => q(566),
+      q(0162) => q(570),
+      q(0163) => q(574),
+      q(0164) => q(580),
+      q(0165) => q(578),
+      q(0166) => q(512),
+      q(0167) => q(586),
+      q(0168) => q(585),
+      q(0169) => q(275),
+      q(0170) => q(591),
+      q(0171) => q(598),
+      q(0172) => q(600),
+      q(0173) => q(604),
+      q(0174) => q(608),
+      q(0175) => q(612),
+      q(0176) => q(616),
+      q(0177) => q(620),
+      q(0178) => q(630),
+      q(0179) => q(634),
+      q(0180) => q(638),
+      q(0181) => q(642),
+      q(0182) => q(643),
+      q(0183) => q(646),
+      q(0184) => q(652),
+      q(0185) => q(654),
+      q(0186) => q(659),
+      q(0187) => q(662),
+      q(0188) => q(663),
+      q(0189) => q(666),
+      q(0190) => q(670),
+      q(0191) => q(882),
+      q(0192) => q(674),
+      q(0193) => q(678),
+      q(0194) => q(682),
+      q(0195) => q(686),
+      q(0196) => q(688),
+      q(0197) => q(690),
+      q(0198) => q(694),
+      q(0199) => q(702),
+      q(0200) => q(703),
+      q(0201) => q(705),
+      q(0202) => q(090),
+      q(0203) => q(706),
+      q(0204) => q(710),
+      q(0206) => q(724),
+      q(0207) => q(144),
+      q(0208) => q(736),
+      q(0209) => q(740),
+      q(0210) => q(744),
+      q(0211) => q(748),
+      q(0212) => q(752),
+      q(0213) => q(756),
+      q(0214) => q(760),
+      q(0215) => q(158),
+      q(0216) => q(762),
+      q(0217) => q(834),
+      q(0218) => q(764),
+      q(0219) => q(626),
+      q(0220) => q(768),
+      q(0221) => q(772),
+      q(0222) => q(776),
+      q(0223) => q(780),
+      q(0224) => q(788),
+      q(0225) => q(792),
+      q(0226) => q(795),
+      q(0227) => q(796),
+      q(0228) => q(798),
+      q(0229) => q(800),
+      q(0230) => q(804),
+      q(0231) => q(784),
+      q(0232) => q(826),
+      q(0233) => q(840),
+      q(0234) => q(581),
+      q(0235) => q(858),
+      q(0236) => q(860),
+      q(0237) => q(548),
+      q(0238) => q(862),
+      q(0239) => q(704),
+      q(0240) => q(092),
+      q(0241) => q(850),
+      q(0242) => q(876),
+      q(0243) => q(732),
+      q(0244) => q(887),
+      q(0245) => q(894),
+      q(0246) => q(716),
+      q(0247) => q(830),
+      q(0276) => q(249),
+      },
+};
+
+1;
diff --git a/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm b/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm
new file mode 100644 (file)
index 0000000..c8c9c69
--- /dev/null
@@ -0,0 +1,3102 @@
+package Locale::Codes::Currency;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Mon Apr  5 15:43:34 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Currency - currency codes for the Locale::Currency module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Currency module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'currency'}{'id'} = '0180';
+
+$Locale::Codes::Data{'currency'}{'id2names'} = {
+   q(0001) => [
+      q(Afghani),
+      ],
+   q(0002) => [
+      q(Euro),
+      ],
+   q(0003) => [
+      q(Lek),
+      ],
+   q(0004) => [
+      q(Algerian Dinar),
+      ],
+   q(0005) => [
+      q(US Dollar),
+      ],
+   q(0006) => [
+      q(Kwanza),
+      ],
+   q(0007) => [
+      q(East Caribbean Dollar),
+      ],
+   q(0008) => [
+      q(Argentine Peso),
+      ],
+   q(0009) => [
+      q(Armenian Dram),
+      ],
+   q(0010) => [
+      q(Aruban Guilder),
+      ],
+   q(0011) => [
+      q(Australian Dollar),
+      ],
+   q(0012) => [
+      q(Azerbaijanian Manat),
+      ],
+   q(0013) => [
+      q(Bahamian Dollar),
+      ],
+   q(0014) => [
+      q(Bahraini Dinar),
+      ],
+   q(0015) => [
+      q(Taka),
+      ],
+   q(0016) => [
+      q(Barbados Dollar),
+      ],
+   q(0017) => [
+      q(Belarussian Ruble),
+      ],
+   q(0018) => [
+      q(Belize Dollar),
+      ],
+   q(0019) => [
+      q(CFA Franc BCEAO),
+      ],
+   q(0020) => [
+      q(Bermudian Dollar (customarily known as Bermuda Dollar)),
+      ],
+   q(0021) => [
+      q(Indian Rupee),
+      ],
+   q(0022) => [
+      q(Ngultrum),
+      ],
+   q(0023) => [
+      q(Boliviano),
+      ],
+   q(0024) => [
+      q(Mvdol),
+      ],
+   q(0025) => [
+      q(Convertible Marks),
+      ],
+   q(0026) => [
+      q(Pula),
+      ],
+   q(0027) => [
+      q(Norwegian Krone),
+      ],
+   q(0028) => [
+      q(Brazilian Real),
+      ],
+   q(0029) => [
+      q(Brunei Dollar),
+      ],
+   q(0030) => [
+      q(Bulgarian Lev),
+      ],
+   q(0031) => [
+      q(Burundi Franc),
+      ],
+   q(0032) => [
+      q(Riel),
+      ],
+   q(0033) => [
+      q(CFA Franc BEAC),
+      ],
+   q(0034) => [
+      q(Canadian Dollar),
+      ],
+   q(0035) => [
+      q(Cape Verde Escudo),
+      ],
+   q(0036) => [
+      q(Cayman Islands Dollar),
+      ],
+   q(0037) => [
+      q(Chilean Peso),
+      ],
+   q(0038) => [
+      q(Unidades de fomento),
+      ],
+   q(0039) => [
+      q(Yuan Renminbi),
+      ],
+   q(0040) => [
+      q(Colombian Peso),
+      ],
+   q(0041) => [
+      q(Unidad de Valor Real),
+      ],
+   q(0042) => [
+      q(Comoro Franc),
+      ],
+   q(0043) => [
+      q(Congolese Franc),
+      ],
+   q(0044) => [
+      q(New Zealand Dollar),
+      ],
+   q(0045) => [
+      q(Costa Rican Colon),
+      ],
+   q(0046) => [
+      q(Croatian Kuna),
+      ],
+   q(0047) => [
+      q(Cuban Peso),
+      ],
+   q(0048) => [
+      q(Peso Convertible),
+      ],
+   q(0049) => [
+      q(Czech Koruna),
+      ],
+   q(0050) => [
+      q(Danish Krone),
+      ],
+   q(0051) => [
+      q(Djibouti Franc),
+      ],
+   q(0052) => [
+      q(Dominican Peso),
+      ],
+   q(0053) => [
+      q(Egyptian Pound),
+      ],
+   q(0054) => [
+      q(El Salvador Colon),
+      ],
+   q(0055) => [
+      q(Nakfa),
+      ],
+   q(0056) => [
+      q(Kroon),
+      ],
+   q(0057) => [
+      q(Ethiopian Birr),
+      ],
+   q(0058) => [
+      q(Falkland Islands Pound),
+      ],
+   q(0059) => [
+      q(Fiji Dollar),
+      ],
+   q(0060) => [
+      q(CFP Franc),
+      ],
+   q(0061) => [
+      q(Dalasi),
+      ],
+   q(0062) => [
+      q(Lari),
+      ],
+   q(0063) => [
+      q(Cedi),
+      ],
+   q(0064) => [
+      q(Gibraltar Pound),
+      ],
+   q(0065) => [
+      q(Quetzal),
+      ],
+   q(0066) => [
+      q(Pound Sterling),
+      ],
+   q(0067) => [
+      q(Guinea Franc),
+      ],
+   q(0068) => [
+      q(Guinea-Bissau Peso),
+      ],
+   q(0069) => [
+      q(Guyana Dollar),
+      ],
+   q(0070) => [
+      q(Gourde),
+      ],
+   q(0071) => [
+      q(Lempira),
+      ],
+   q(0072) => [
+      q(Hong Kong Dollar),
+      ],
+   q(0073) => [
+      q(Forint),
+      ],
+   q(0074) => [
+      q(Iceland Krona),
+      ],
+   q(0075) => [
+      q(Rupiah),
+      ],
+   q(0076) => [
+      q(Iranian Rial),
+      ],
+   q(0077) => [
+      q(Iraqi Dinar),
+      ],
+   q(0078) => [
+      q(New Israeli Sheqel),
+      ],
+   q(0079) => [
+      q(Jamaican Dollar),
+      ],
+   q(0080) => [
+      q(Yen),
+      ],
+   q(0081) => [
+      q(Jordanian Dinar),
+      ],
+   q(0082) => [
+      q(Tenge),
+      ],
+   q(0083) => [
+      q(Kenyan Shilling),
+      ],
+   q(0084) => [
+      q(North Korean Won),
+      ],
+   q(0085) => [
+      q(Won),
+      ],
+   q(0086) => [
+      q(Kuwaiti Dinar),
+      ],
+   q(0087) => [
+      q(Som),
+      ],
+   q(0088) => [
+      q(Kip),
+      ],
+   q(0089) => [
+      q(Latvian Lats),
+      ],
+   q(0090) => [
+      q(Lebanese Pound),
+      ],
+   q(0091) => [
+      q(Rand),
+      ],
+   q(0092) => [
+      q(Loti),
+      ],
+   q(0093) => [
+      q(Liberian Dollar),
+      ],
+   q(0094) => [
+      q(Libyan Dinar),
+      ],
+   q(0095) => [
+      q(Swiss Franc),
+      ],
+   q(0096) => [
+      q(Lithuanian Litas),
+      ],
+   q(0097) => [
+      q(Pataca),
+      ],
+   q(0098) => [
+      q(Denar),
+      ],
+   q(0099) => [
+      q(Malagasy Ariary),
+      ],
+   q(0100) => [
+      q(Kwacha),
+      ],
+   q(0101) => [
+      q(Malaysian Ringgit),
+      ],
+   q(0102) => [
+      q(Rufiyaa),
+      ],
+   q(0103) => [
+      q(Ouguiya),
+      ],
+   q(0104) => [
+      q(Mauritius Rupee),
+      ],
+   q(0105) => [
+      q(Mexican Peso),
+      ],
+   q(0106) => [
+      q(Mexican Unidad de Inversion (UDI)),
+      ],
+   q(0107) => [
+      q(Moldovan Leu),
+      ],
+   q(0108) => [
+      q(Tugrik),
+      ],
+   q(0109) => [
+      q(Moroccan Dirham),
+      ],
+   q(0110) => [
+      q(Metical),
+      ],
+   q(0111) => [
+      q(Kyat),
+      ],
+   q(0112) => [
+      q(Namibia Dollar),
+      ],
+   q(0113) => [
+      q(Nepalese Rupee),
+      ],
+   q(0114) => [
+      q(Netherlands Antillian Guilder),
+      ],
+   q(0115) => [
+      q(Cordoba Oro),
+      ],
+   q(0116) => [
+      q(Naira),
+      ],
+   q(0117) => [
+      q(Rial Omani),
+      ],
+   q(0118) => [
+      q(Pakistan Rupee),
+      ],
+   q(0119) => [
+      q(Balboa),
+      ],
+   q(0120) => [
+      q(Kina),
+      ],
+   q(0121) => [
+      q(Guarani),
+      ],
+   q(0122) => [
+      q(Nuevo Sol),
+      ],
+   q(0123) => [
+      q(Philippine Peso),
+      ],
+   q(0124) => [
+      q(Zloty),
+      ],
+   q(0125) => [
+      q(Qatari Rial),
+      ],
+   q(0126) => [
+      q(New Leu),
+      ],
+   q(0127) => [
+      q(Russian Ruble),
+      ],
+   q(0128) => [
+      q(Rwanda Franc),
+      ],
+   q(0129) => [
+      q(Saint Helena Pound),
+      ],
+   q(0130) => [
+      q(Tala),
+      ],
+   q(0131) => [
+      q(Dobra),
+      ],
+   q(0132) => [
+      q(Saudi Riyal),
+      ],
+   q(0133) => [
+      q(Serbian Dinar),
+      ],
+   q(0134) => [
+      q(Seychelles Rupee),
+      ],
+   q(0135) => [
+      q(Leone),
+      ],
+   q(0136) => [
+      q(Singapore Dollar),
+      ],
+   q(0137) => [
+      q(Solomon Islands Dollar),
+      ],
+   q(0138) => [
+      q(Somali Shilling),
+      ],
+   q(0139) => [
+      q(Sri Lanka Rupee),
+      ],
+   q(0140) => [
+      q(Sudanese Pound),
+      ],
+   q(0141) => [
+      q(Surinam Dollar),
+      ],
+   q(0142) => [
+      q(Lilangeni),
+      ],
+   q(0143) => [
+      q(Swedish Krona),
+      ],
+   q(0144) => [
+      q(WIR Franc),
+      ],
+   q(0145) => [
+      q(WIR Euro),
+      ],
+   q(0146) => [
+      q(Syrian Pound),
+      ],
+   q(0147) => [
+      q(New Taiwan Dollar),
+      ],
+   q(0148) => [
+      q(Somoni),
+      ],
+   q(0149) => [
+      q(Tanzanian Shilling),
+      ],
+   q(0150) => [
+      q(Baht),
+      ],
+   q(0151) => [
+      q(Pa'anga),
+      ],
+   q(0152) => [
+      q(Trinidad and Tobago Dollar),
+      ],
+   q(0153) => [
+      q(Tunisian Dinar),
+      ],
+   q(0154) => [
+      q(Turkish Lira),
+      ],
+   q(0155) => [
+      q(Manat),
+      ],
+   q(0156) => [
+      q(Uganda Shilling),
+      ],
+   q(0157) => [
+      q(Hryvnia),
+      ],
+   q(0158) => [
+      q(UAE Dirham),
+      ],
+   q(0159) => [
+      q(US Dollar (Same day)),
+      ],
+   q(0160) => [
+      q(US Dollar (Next day)),
+      ],
+   q(0161) => [
+      q(Peso Uruguayo),
+      ],
+   q(0162) => [
+      q(Uruguay Peso en Unidades Indexadas),
+      ],
+   q(0163) => [
+      q(Uzbekistan Sum),
+      ],
+   q(0164) => [
+      q(Vatu),
+      ],
+   q(0165) => [
+      q(Bolivar Fuerte),
+      ],
+   q(0166) => [
+      q(Dong),
+      ],
+   q(0167) => [
+      q(Yemeni Rial),
+      ],
+   q(0168) => [
+      q(Zambian Kwacha),
+      ],
+   q(0169) => [
+      q(Zimbabwe Dollar),
+      ],
+   q(0170) => [
+      q(Gold),
+      ],
+   q(0171) => [
+      q(Bond Markets Units European Composite Unit (EURCO)),
+      ],
+   q(0172) => [
+      q(European Monetary Unit (E.M.U.-6)),
+      ],
+   q(0173) => [
+      q(European Unit of Account 9(E.U.A.-9)),
+      ],
+   q(0174) => [
+      q(European Unit of Account 17(E.U.A.-17)),
+      ],
+   q(0175) => [
+      q(SDR),
+      ],
+   q(0176) => [
+      q(Palladium),
+      ],
+   q(0177) => [
+      q(Platinum),
+      ],
+   q(0178) => [
+      q(Silver),
+      ],
+   q(0179) => [
+      q(UIC-Franc),
+      ],
+};
+
+$Locale::Codes::Data{'currency'}{'alias2id'} = {
+   q(afghani) => [
+      q(0001),
+      q(0),
+      ],
+   q(algerian dinar) => [
+      q(0004),
+      q(0),
+      ],
+   q(argentine peso) => [
+      q(0008),
+      q(0),
+      ],
+   q(armenian dram) => [
+      q(0009),
+      q(0),
+      ],
+   q(aruban guilder) => [
+      q(0010),
+      q(0),
+      ],
+   q(australian dollar) => [
+      q(0011),
+      q(0),
+      ],
+   q(azerbaijanian manat) => [
+      q(0012),
+      q(0),
+      ],
+   q(bahamian dollar) => [
+      q(0013),
+      q(0),
+      ],
+   q(bahraini dinar) => [
+      q(0014),
+      q(0),
+      ],
+   q(baht) => [
+      q(0150),
+      q(0),
+      ],
+   q(balboa) => [
+      q(0119),
+      q(0),
+      ],
+   q(barbados dollar) => [
+      q(0016),
+      q(0),
+      ],
+   q(belarussian ruble) => [
+      q(0017),
+      q(0),
+      ],
+   q(belize dollar) => [
+      q(0018),
+      q(0),
+      ],
+   q(bermudian dollar (customarily known as bermuda dollar)) => [
+      q(0020),
+      q(0),
+      ],
+   q(bolivar fuerte) => [
+      q(0165),
+      q(0),
+      ],
+   q(boliviano) => [
+      q(0023),
+      q(0),
+      ],
+   q(bond markets units european composite unit (eurco)) => [
+      q(0171),
+      q(0),
+      ],
+   q(brazilian real) => [
+      q(0028),
+      q(0),
+      ],
+   q(brunei dollar) => [
+      q(0029),
+      q(0),
+      ],
+   q(bulgarian lev) => [
+      q(0030),
+      q(0),
+      ],
+   q(burundi franc) => [
+      q(0031),
+      q(0),
+      ],
+   q(canadian dollar) => [
+      q(0034),
+      q(0),
+      ],
+   q(cape verde escudo) => [
+      q(0035),
+      q(0),
+      ],
+   q(cayman islands dollar) => [
+      q(0036),
+      q(0),
+      ],
+   q(cedi) => [
+      q(0063),
+      q(0),
+      ],
+   q(cfa franc bceao) => [
+      q(0019),
+      q(0),
+      ],
+   q(cfa franc beac) => [
+      q(0033),
+      q(0),
+      ],
+   q(cfp franc) => [
+      q(0060),
+      q(0),
+      ],
+   q(chilean peso) => [
+      q(0037),
+      q(0),
+      ],
+   q(colombian peso) => [
+      q(0040),
+      q(0),
+      ],
+   q(comoro franc) => [
+      q(0042),
+      q(0),
+      ],
+   q(congolese franc) => [
+      q(0043),
+      q(0),
+      ],
+   q(convertible marks) => [
+      q(0025),
+      q(0),
+      ],
+   q(cordoba oro) => [
+      q(0115),
+      q(0),
+      ],
+   q(costa rican colon) => [
+      q(0045),
+      q(0),
+      ],
+   q(croatian kuna) => [
+      q(0046),
+      q(0),
+      ],
+   q(cuban peso) => [
+      q(0047),
+      q(0),
+      ],
+   q(czech koruna) => [
+      q(0049),
+      q(0),
+      ],
+   q(dalasi) => [
+      q(0061),
+      q(0),
+      ],
+   q(danish krone) => [
+      q(0050),
+      q(0),
+      ],
+   q(denar) => [
+      q(0098),
+      q(0),
+      ],
+   q(djibouti franc) => [
+      q(0051),
+      q(0),
+      ],
+   q(dobra) => [
+      q(0131),
+      q(0),
+      ],
+   q(dominican peso) => [
+      q(0052),
+      q(0),
+      ],
+   q(dong) => [
+      q(0166),
+      q(0),
+      ],
+   q(east caribbean dollar) => [
+      q(0007),
+      q(0),
+      ],
+   q(egyptian pound) => [
+      q(0053),
+      q(0),
+      ],
+   q(el salvador colon) => [
+      q(0054),
+      q(0),
+      ],
+   q(ethiopian birr) => [
+      q(0057),
+      q(0),
+      ],
+   q(euro) => [
+      q(0002),
+      q(0),
+      ],
+   q(european monetary unit (e.m.u.-6)) => [
+      q(0172),
+      q(0),
+      ],
+   q(european unit of account 17(e.u.a.-17)) => [
+      q(0174),
+      q(0),
+      ],
+   q(european unit of account 9(e.u.a.-9)) => [
+      q(0173),
+      q(0),
+      ],
+   q(falkland islands pound) => [
+      q(0058),
+      q(0),
+      ],
+   q(fiji dollar) => [
+      q(0059),
+      q(0),
+      ],
+   q(forint) => [
+      q(0073),
+      q(0),
+      ],
+   q(gibraltar pound) => [
+      q(0064),
+      q(0),
+      ],
+   q(gold) => [
+      q(0170),
+      q(0),
+      ],
+   q(gourde) => [
+      q(0070),
+      q(0),
+      ],
+   q(guarani) => [
+      q(0121),
+      q(0),
+      ],
+   q(guinea franc) => [
+      q(0067),
+      q(0),
+      ],
+   q(guinea-bissau peso) => [
+      q(0068),
+      q(0),
+      ],
+   q(guyana dollar) => [
+      q(0069),
+      q(0),
+      ],
+   q(hong kong dollar) => [
+      q(0072),
+      q(0),
+      ],
+   q(hryvnia) => [
+      q(0157),
+      q(0),
+      ],
+   q(iceland krona) => [
+      q(0074),
+      q(0),
+      ],
+   q(indian rupee) => [
+      q(0021),
+      q(0),
+      ],
+   q(iranian rial) => [
+      q(0076),
+      q(0),
+      ],
+   q(iraqi dinar) => [
+      q(0077),
+      q(0),
+      ],
+   q(jamaican dollar) => [
+      q(0079),
+      q(0),
+      ],
+   q(jordanian dinar) => [
+      q(0081),
+      q(0),
+      ],
+   q(kenyan shilling) => [
+      q(0083),
+      q(0),
+      ],
+   q(kina) => [
+      q(0120),
+      q(0),
+      ],
+   q(kip) => [
+      q(0088),
+      q(0),
+      ],
+   q(kroon) => [
+      q(0056),
+      q(0),
+      ],
+   q(kuwaiti dinar) => [
+      q(0086),
+      q(0),
+      ],
+   q(kwacha) => [
+      q(0100),
+      q(0),
+      ],
+   q(kwanza) => [
+      q(0006),
+      q(0),
+      ],
+   q(kyat) => [
+      q(0111),
+      q(0),
+      ],
+   q(lari) => [
+      q(0062),
+      q(0),
+      ],
+   q(latvian lats) => [
+      q(0089),
+      q(0),
+      ],
+   q(lebanese pound) => [
+      q(0090),
+      q(0),
+      ],
+   q(lek) => [
+      q(0003),
+      q(0),
+      ],
+   q(lempira) => [
+      q(0071),
+      q(0),
+      ],
+   q(leone) => [
+      q(0135),
+      q(0),
+      ],
+   q(liberian dollar) => [
+      q(0093),
+      q(0),
+      ],
+   q(libyan dinar) => [
+      q(0094),
+      q(0),
+      ],
+   q(lilangeni) => [
+      q(0142),
+      q(0),
+      ],
+   q(lithuanian litas) => [
+      q(0096),
+      q(0),
+      ],
+   q(loti) => [
+      q(0092),
+      q(0),
+      ],
+   q(malagasy ariary) => [
+      q(0099),
+      q(0),
+      ],
+   q(malaysian ringgit) => [
+      q(0101),
+      q(0),
+      ],
+   q(manat) => [
+      q(0155),
+      q(0),
+      ],
+   q(mauritius rupee) => [
+      q(0104),
+      q(0),
+      ],
+   q(metical) => [
+      q(0110),
+      q(0),
+      ],
+   q(mexican peso) => [
+      q(0105),
+      q(0),
+      ],
+   q(mexican unidad de inversion (udi)) => [
+      q(0106),
+      q(0),
+      ],
+   q(moldovan leu) => [
+      q(0107),
+      q(0),
+      ],
+   q(moroccan dirham) => [
+      q(0109),
+      q(0),
+      ],
+   q(mvdol) => [
+      q(0024),
+      q(0),
+      ],
+   q(naira) => [
+      q(0116),
+      q(0),
+      ],
+   q(nakfa) => [
+      q(0055),
+      q(0),
+      ],
+   q(namibia dollar) => [
+      q(0112),
+      q(0),
+      ],
+   q(nepalese rupee) => [
+      q(0113),
+      q(0),
+      ],
+   q(netherlands antillian guilder) => [
+      q(0114),
+      q(0),
+      ],
+   q(new israeli sheqel) => [
+      q(0078),
+      q(0),
+      ],
+   q(new leu) => [
+      q(0126),
+      q(0),
+      ],
+   q(new taiwan dollar) => [
+      q(0147),
+      q(0),
+      ],
+   q(new zealand dollar) => [
+      q(0044),
+      q(0),
+      ],
+   q(ngultrum) => [
+      q(0022),
+      q(0),
+      ],
+   q(north korean won) => [
+      q(0084),
+      q(0),
+      ],
+   q(norwegian krone) => [
+      q(0027),
+      q(0),
+      ],
+   q(nuevo sol) => [
+      q(0122),
+      q(0),
+      ],
+   q(ouguiya) => [
+      q(0103),
+      q(0),
+      ],
+   q(pa'anga) => [
+      q(0151),
+      q(0),
+      ],
+   q(pakistan rupee) => [
+      q(0118),
+      q(0),
+      ],
+   q(palladium) => [
+      q(0176),
+      q(0),
+      ],
+   q(pataca) => [
+      q(0097),
+      q(0),
+      ],
+   q(peso convertible) => [
+      q(0048),
+      q(0),
+      ],
+   q(peso uruguayo) => [
+      q(0161),
+      q(0),
+      ],
+   q(philippine peso) => [
+      q(0123),
+      q(0),
+      ],
+   q(platinum) => [
+      q(0177),
+      q(0),
+      ],
+   q(pound sterling) => [
+      q(0066),
+      q(0),
+      ],
+   q(pula) => [
+      q(0026),
+      q(0),
+      ],
+   q(qatari rial) => [
+      q(0125),
+      q(0),
+      ],
+   q(quetzal) => [
+      q(0065),
+      q(0),
+      ],
+   q(rand) => [
+      q(0091),
+      q(0),
+      ],
+   q(rial omani) => [
+      q(0117),
+      q(0),
+      ],
+   q(riel) => [
+      q(0032),
+      q(0),
+      ],
+   q(rufiyaa) => [
+      q(0102),
+      q(0),
+      ],
+   q(rupiah) => [
+      q(0075),
+      q(0),
+      ],
+   q(russian ruble) => [
+      q(0127),
+      q(0),
+      ],
+   q(rwanda franc) => [
+      q(0128),
+      q(0),
+      ],
+   q(saint helena pound) => [
+      q(0129),
+      q(0),
+      ],
+   q(saudi riyal) => [
+      q(0132),
+      q(0),
+      ],
+   q(sdr) => [
+      q(0175),
+      q(0),
+      ],
+   q(serbian dinar) => [
+      q(0133),
+      q(0),
+      ],
+   q(seychelles rupee) => [
+      q(0134),
+      q(0),
+      ],
+   q(silver) => [
+      q(0178),
+      q(0),
+      ],
+   q(singapore dollar) => [
+      q(0136),
+      q(0),
+      ],
+   q(solomon islands dollar) => [
+      q(0137),
+      q(0),
+      ],
+   q(som) => [
+      q(0087),
+      q(0),
+      ],
+   q(somali shilling) => [
+      q(0138),
+      q(0),
+      ],
+   q(somoni) => [
+      q(0148),
+      q(0),
+      ],
+   q(sri lanka rupee) => [
+      q(0139),
+      q(0),
+      ],
+   q(sudanese pound) => [
+      q(0140),
+      q(0),
+      ],
+   q(surinam dollar) => [
+      q(0141),
+      q(0),
+      ],
+   q(swedish krona) => [
+      q(0143),
+      q(0),
+      ],
+   q(swiss franc) => [
+      q(0095),
+      q(0),
+      ],
+   q(syrian pound) => [
+      q(0146),
+      q(0),
+      ],
+   q(taka) => [
+      q(0015),
+      q(0),
+      ],
+   q(tala) => [
+      q(0130),
+      q(0),
+      ],
+   q(tanzanian shilling) => [
+      q(0149),
+      q(0),
+      ],
+   q(tenge) => [
+      q(0082),
+      q(0),
+      ],
+   q(trinidad and tobago dollar) => [
+      q(0152),
+      q(0),
+      ],
+   q(tugrik) => [
+      q(0108),
+      q(0),
+      ],
+   q(tunisian dinar) => [
+      q(0153),
+      q(0),
+      ],
+   q(turkish lira) => [
+      q(0154),
+      q(0),
+      ],
+   q(uae dirham) => [
+      q(0158),
+      q(0),
+      ],
+   q(uganda shilling) => [
+      q(0156),
+      q(0),
+      ],
+   q(uic-franc) => [
+      q(0179),
+      q(0),
+      ],
+   q(unidad de valor real) => [
+      q(0041),
+      q(0),
+      ],
+   q(unidades de fomento) => [
+      q(0038),
+      q(0),
+      ],
+   q(uruguay peso en unidades indexadas) => [
+      q(0162),
+      q(0),
+      ],
+   q(us dollar) => [
+      q(0005),
+      q(0),
+      ],
+   q(us dollar (next day)) => [
+      q(0160),
+      q(0),
+      ],
+   q(us dollar (same day)) => [
+      q(0159),
+      q(0),
+      ],
+   q(uzbekistan sum) => [
+      q(0163),
+      q(0),
+      ],
+   q(vatu) => [
+      q(0164),
+      q(0),
+      ],
+   q(wir euro) => [
+      q(0145),
+      q(0),
+      ],
+   q(wir franc) => [
+      q(0144),
+      q(0),
+      ],
+   q(won) => [
+      q(0085),
+      q(0),
+      ],
+   q(yemeni rial) => [
+      q(0167),
+      q(0),
+      ],
+   q(yen) => [
+      q(0080),
+      q(0),
+      ],
+   q(yuan renminbi) => [
+      q(0039),
+      q(0),
+      ],
+   q(zambian kwacha) => [
+      q(0168),
+      q(0),
+      ],
+   q(zimbabwe dollar) => [
+      q(0169),
+      q(0),
+      ],
+   q(zloty) => [
+      q(0124),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'currency'}{'code2id'} = {
+   q(alpha) => {
+      q(AED) => [
+         q(0158),
+         q(0),
+         ],
+      q(AFN) => [
+         q(0001),
+         q(0),
+         ],
+      q(ALL) => [
+         q(0003),
+         q(0),
+         ],
+      q(AMD) => [
+         q(0009),
+         q(0),
+         ],
+      q(ANG) => [
+         q(0114),
+         q(0),
+         ],
+      q(AOA) => [
+         q(0006),
+         q(0),
+         ],
+      q(ARS) => [
+         q(0008),
+         q(0),
+         ],
+      q(AUD) => [
+         q(0011),
+         q(0),
+         ],
+      q(AWG) => [
+         q(0010),
+         q(0),
+         ],
+      q(AZN) => [
+         q(0012),
+         q(0),
+         ],
+      q(BAM) => [
+         q(0025),
+         q(0),
+         ],
+      q(BBD) => [
+         q(0016),
+         q(0),
+         ],
+      q(BDT) => [
+         q(0015),
+         q(0),
+         ],
+      q(BGN) => [
+         q(0030),
+         q(0),
+         ],
+      q(BHD) => [
+         q(0014),
+         q(0),
+         ],
+      q(BIF) => [
+         q(0031),
+         q(0),
+         ],
+      q(BMD) => [
+         q(0020),
+         q(0),
+         ],
+      q(BND) => [
+         q(0029),
+         q(0),
+         ],
+      q(BOB) => [
+         q(0023),
+         q(0),
+         ],
+      q(BOV) => [
+         q(0024),
+         q(0),
+         ],
+      q(BRL) => [
+         q(0028),
+         q(0),
+         ],
+      q(BSD) => [
+         q(0013),
+         q(0),
+         ],
+      q(BTN) => [
+         q(0022),
+         q(0),
+         ],
+      q(BWP) => [
+         q(0026),
+         q(0),
+         ],
+      q(BYR) => [
+         q(0017),
+         q(0),
+         ],
+      q(BZD) => [
+         q(0018),
+         q(0),
+         ],
+      q(CAD) => [
+         q(0034),
+         q(0),
+         ],
+      q(CDF) => [
+         q(0043),
+         q(0),
+         ],
+      q(CHE) => [
+         q(0145),
+         q(0),
+         ],
+      q(CHF) => [
+         q(0095),
+         q(0),
+         ],
+      q(CHW) => [
+         q(0144),
+         q(0),
+         ],
+      q(CLF) => [
+         q(0038),
+         q(0),
+         ],
+      q(CLP) => [
+         q(0037),
+         q(0),
+         ],
+      q(CNY) => [
+         q(0039),
+         q(0),
+         ],
+      q(COP) => [
+         q(0040),
+         q(0),
+         ],
+      q(COU) => [
+         q(0041),
+         q(0),
+         ],
+      q(CRC) => [
+         q(0045),
+         q(0),
+         ],
+      q(CUC) => [
+         q(0048),
+         q(0),
+         ],
+      q(CUP) => [
+         q(0047),
+         q(0),
+         ],
+      q(CVE) => [
+         q(0035),
+         q(0),
+         ],
+      q(CZK) => [
+         q(0049),
+         q(0),
+         ],
+      q(DJF) => [
+         q(0051),
+         q(0),
+         ],
+      q(DKK) => [
+         q(0050),
+         q(0),
+         ],
+      q(DOP) => [
+         q(0052),
+         q(0),
+         ],
+      q(DZD) => [
+         q(0004),
+         q(0),
+         ],
+      q(EEK) => [
+         q(0056),
+         q(0),
+         ],
+      q(EGP) => [
+         q(0053),
+         q(0),
+         ],
+      q(ERN) => [
+         q(0055),
+         q(0),
+         ],
+      q(ETB) => [
+         q(0057),
+         q(0),
+         ],
+      q(EUR) => [
+         q(0002),
+         q(0),
+         ],
+      q(FJD) => [
+         q(0059),
+         q(0),
+         ],
+      q(FKP) => [
+         q(0058),
+         q(0),
+         ],
+      q(GBP) => [
+         q(0066),
+         q(0),
+         ],
+      q(GEL) => [
+         q(0062),
+         q(0),
+         ],
+      q(GHS) => [
+         q(0063),
+         q(0),
+         ],
+      q(GIP) => [
+         q(0064),
+         q(0),
+         ],
+      q(GMD) => [
+         q(0061),
+         q(0),
+         ],
+      q(GNF) => [
+         q(0067),
+         q(0),
+         ],
+      q(GTQ) => [
+         q(0065),
+         q(0),
+         ],
+      q(GWP) => [
+         q(0068),
+         q(0),
+         ],
+      q(GYD) => [
+         q(0069),
+         q(0),
+         ],
+      q(HKD) => [
+         q(0072),
+         q(0),
+         ],
+      q(HNL) => [
+         q(0071),
+         q(0),
+         ],
+      q(HRK) => [
+         q(0046),
+         q(0),
+         ],
+      q(HTG) => [
+         q(0070),
+         q(0),
+         ],
+      q(HUF) => [
+         q(0073),
+         q(0),
+         ],
+      q(IDR) => [
+         q(0075),
+         q(0),
+         ],
+      q(ILS) => [
+         q(0078),
+         q(0),
+         ],
+      q(INR) => [
+         q(0021),
+         q(0),
+         ],
+      q(IQD) => [
+         q(0077),
+         q(0),
+         ],
+      q(IRR) => [
+         q(0076),
+         q(0),
+         ],
+      q(ISK) => [
+         q(0074),
+         q(0),
+         ],
+      q(JMD) => [
+         q(0079),
+         q(0),
+         ],
+      q(JOD) => [
+         q(0081),
+         q(0),
+         ],
+      q(JPY) => [
+         q(0080),
+         q(0),
+         ],
+      q(KES) => [
+         q(0083),
+         q(0),
+         ],
+      q(KGS) => [
+         q(0087),
+         q(0),
+         ],
+      q(KHR) => [
+         q(0032),
+         q(0),
+         ],
+      q(KMF) => [
+         q(0042),
+         q(0),
+         ],
+      q(KPW) => [
+         q(0084),
+         q(0),
+         ],
+      q(KRW) => [
+         q(0085),
+         q(0),
+         ],
+      q(KWD) => [
+         q(0086),
+         q(0),
+         ],
+      q(KYD) => [
+         q(0036),
+         q(0),
+         ],
+      q(KZT) => [
+         q(0082),
+         q(0),
+         ],
+      q(LAK) => [
+         q(0088),
+         q(0),
+         ],
+      q(LBP) => [
+         q(0090),
+         q(0),
+         ],
+      q(LKR) => [
+         q(0139),
+         q(0),
+         ],
+      q(LRD) => [
+         q(0093),
+         q(0),
+         ],
+      q(LSL) => [
+         q(0092),
+         q(0),
+         ],
+      q(LTL) => [
+         q(0096),
+         q(0),
+         ],
+      q(LVL) => [
+         q(0089),
+         q(0),
+         ],
+      q(LYD) => [
+         q(0094),
+         q(0),
+         ],
+      q(MAD) => [
+         q(0109),
+         q(0),
+         ],
+      q(MDL) => [
+         q(0107),
+         q(0),
+         ],
+      q(MGA) => [
+         q(0099),
+         q(0),
+         ],
+      q(MKD) => [
+         q(0098),
+         q(0),
+         ],
+      q(MMK) => [
+         q(0111),
+         q(0),
+         ],
+      q(MNT) => [
+         q(0108),
+         q(0),
+         ],
+      q(MOP) => [
+         q(0097),
+         q(0),
+         ],
+      q(MRO) => [
+         q(0103),
+         q(0),
+         ],
+      q(MUR) => [
+         q(0104),
+         q(0),
+         ],
+      q(MVR) => [
+         q(0102),
+         q(0),
+         ],
+      q(MWK) => [
+         q(0100),
+         q(0),
+         ],
+      q(MXN) => [
+         q(0105),
+         q(0),
+         ],
+      q(MXV) => [
+         q(0106),
+         q(0),
+         ],
+      q(MYR) => [
+         q(0101),
+         q(0),
+         ],
+      q(MZN) => [
+         q(0110),
+         q(0),
+         ],
+      q(NAD) => [
+         q(0112),
+         q(0),
+         ],
+      q(NGN) => [
+         q(0116),
+         q(0),
+         ],
+      q(NIO) => [
+         q(0115),
+         q(0),
+         ],
+      q(NOK) => [
+         q(0027),
+         q(0),
+         ],
+      q(NPR) => [
+         q(0113),
+         q(0),
+         ],
+      q(NZD) => [
+         q(0044),
+         q(0),
+         ],
+      q(OMR) => [
+         q(0117),
+         q(0),
+         ],
+      q(PAB) => [
+         q(0119),
+         q(0),
+         ],
+      q(PEN) => [
+         q(0122),
+         q(0),
+         ],
+      q(PGK) => [
+         q(0120),
+         q(0),
+         ],
+      q(PHP) => [
+         q(0123),
+         q(0),
+         ],
+      q(PKR) => [
+         q(0118),
+         q(0),
+         ],
+      q(PLN) => [
+         q(0124),
+         q(0),
+         ],
+      q(PYG) => [
+         q(0121),
+         q(0),
+         ],
+      q(QAR) => [
+         q(0125),
+         q(0),
+         ],
+      q(RON) => [
+         q(0126),
+         q(0),
+         ],
+      q(RSD) => [
+         q(0133),
+         q(0),
+         ],
+      q(RUB) => [
+         q(0127),
+         q(0),
+         ],
+      q(RWF) => [
+         q(0128),
+         q(0),
+         ],
+      q(SAR) => [
+         q(0132),
+         q(0),
+         ],
+      q(SBD) => [
+         q(0137),
+         q(0),
+         ],
+      q(SCR) => [
+         q(0134),
+         q(0),
+         ],
+      q(SDG) => [
+         q(0140),
+         q(0),
+         ],
+      q(SEK) => [
+         q(0143),
+         q(0),
+         ],
+      q(SGD) => [
+         q(0136),
+         q(0),
+         ],
+      q(SHP) => [
+         q(0129),
+         q(0),
+         ],
+      q(SLL) => [
+         q(0135),
+         q(0),
+         ],
+      q(SOS) => [
+         q(0138),
+         q(0),
+         ],
+      q(SRD) => [
+         q(0141),
+         q(0),
+         ],
+      q(STD) => [
+         q(0131),
+         q(0),
+         ],
+      q(SVC) => [
+         q(0054),
+         q(0),
+         ],
+      q(SYP) => [
+         q(0146),
+         q(0),
+         ],
+      q(SZL) => [
+         q(0142),
+         q(0),
+         ],
+      q(THB) => [
+         q(0150),
+         q(0),
+         ],
+      q(TJS) => [
+         q(0148),
+         q(0),
+         ],
+      q(TMT) => [
+         q(0155),
+         q(0),
+         ],
+      q(TND) => [
+         q(0153),
+         q(0),
+         ],
+      q(TOP) => [
+         q(0151),
+         q(0),
+         ],
+      q(TRY) => [
+         q(0154),
+         q(0),
+         ],
+      q(TTD) => [
+         q(0152),
+         q(0),
+         ],
+      q(TWD) => [
+         q(0147),
+         q(0),
+         ],
+      q(TZS) => [
+         q(0149),
+         q(0),
+         ],
+      q(UAH) => [
+         q(0157),
+         q(0),
+         ],
+      q(UGX) => [
+         q(0156),
+         q(0),
+         ],
+      q(USD) => [
+         q(0005),
+         q(0),
+         ],
+      q(USN) => [
+         q(0160),
+         q(0),
+         ],
+      q(USS) => [
+         q(0159),
+         q(0),
+         ],
+      q(UYI) => [
+         q(0162),
+         q(0),
+         ],
+      q(UYU) => [
+         q(0161),
+         q(0),
+         ],
+      q(UZS) => [
+         q(0163),
+         q(0),
+         ],
+      q(VEF) => [
+         q(0165),
+         q(0),
+         ],
+      q(VND) => [
+         q(0166),
+         q(0),
+         ],
+      q(VUV) => [
+         q(0164),
+         q(0),
+         ],
+      q(WST) => [
+         q(0130),
+         q(0),
+         ],
+      q(XAF) => [
+         q(0033),
+         q(0),
+         ],
+      q(XAG) => [
+         q(0178),
+         q(0),
+         ],
+      q(XAU) => [
+         q(0170),
+         q(0),
+         ],
+      q(XBA) => [
+         q(0171),
+         q(0),
+         ],
+      q(XBB) => [
+         q(0172),
+         q(0),
+         ],
+      q(XBC) => [
+         q(0173),
+         q(0),
+         ],
+      q(XBD) => [
+         q(0174),
+         q(0),
+         ],
+      q(XCD) => [
+         q(0007),
+         q(0),
+         ],
+      q(XDR) => [
+         q(0175),
+         q(0),
+         ],
+      q(XFU) => [
+         q(0179),
+         q(0),
+         ],
+      q(XOF) => [
+         q(0019),
+         q(0),
+         ],
+      q(XPD) => [
+         q(0176),
+         q(0),
+         ],
+      q(XPF) => [
+         q(0060),
+         q(0),
+         ],
+      q(XPT) => [
+         q(0177),
+         q(0),
+         ],
+      q(YER) => [
+         q(0167),
+         q(0),
+         ],
+      q(ZAR) => [
+         q(0091),
+         q(0),
+         ],
+      q(ZMK) => [
+         q(0168),
+         q(0),
+         ],
+      q(ZWL) => [
+         q(0169),
+         q(0),
+         ],
+      },
+   q(num) => {
+      q(008) => [
+         q(0003),
+         q(0),
+         ],
+      q(012) => [
+         q(0004),
+         q(0),
+         ],
+      q(032) => [
+         q(0008),
+         q(0),
+         ],
+      q(036) => [
+         q(0011),
+         q(0),
+         ],
+      q(044) => [
+         q(0013),
+         q(0),
+         ],
+      q(048) => [
+         q(0014),
+         q(0),
+         ],
+      q(050) => [
+         q(0015),
+         q(0),
+         ],
+      q(051) => [
+         q(0009),
+         q(0),
+         ],
+      q(052) => [
+         q(0016),
+         q(0),
+         ],
+      q(060) => [
+         q(0020),
+         q(0),
+         ],
+      q(064) => [
+         q(0022),
+         q(0),
+         ],
+      q(068) => [
+         q(0023),
+         q(0),
+         ],
+      q(072) => [
+         q(0026),
+         q(0),
+         ],
+      q(084) => [
+         q(0018),
+         q(0),
+         ],
+      q(090) => [
+         q(0137),
+         q(0),
+         ],
+      q(096) => [
+         q(0029),
+         q(0),
+         ],
+      q(104) => [
+         q(0111),
+         q(0),
+         ],
+      q(108) => [
+         q(0031),
+         q(0),
+         ],
+      q(116) => [
+         q(0032),
+         q(0),
+         ],
+      q(124) => [
+         q(0034),
+         q(0),
+         ],
+      q(132) => [
+         q(0035),
+         q(0),
+         ],
+      q(136) => [
+         q(0036),
+         q(0),
+         ],
+      q(144) => [
+         q(0139),
+         q(0),
+         ],
+      q(152) => [
+         q(0037),
+         q(0),
+         ],
+      q(156) => [
+         q(0039),
+         q(0),
+         ],
+      q(170) => [
+         q(0040),
+         q(0),
+         ],
+      q(174) => [
+         q(0042),
+         q(0),
+         ],
+      q(188) => [
+         q(0045),
+         q(0),
+         ],
+      q(191) => [
+         q(0046),
+         q(0),
+         ],
+      q(192) => [
+         q(0047),
+         q(0),
+         ],
+      q(203) => [
+         q(0049),
+         q(0),
+         ],
+      q(208) => [
+         q(0050),
+         q(0),
+         ],
+      q(214) => [
+         q(0052),
+         q(0),
+         ],
+      q(222) => [
+         q(0054),
+         q(0),
+         ],
+      q(230) => [
+         q(0057),
+         q(0),
+         ],
+      q(232) => [
+         q(0055),
+         q(0),
+         ],
+      q(233) => [
+         q(0056),
+         q(0),
+         ],
+      q(238) => [
+         q(0058),
+         q(0),
+         ],
+      q(242) => [
+         q(0059),
+         q(0),
+         ],
+      q(262) => [
+         q(0051),
+         q(0),
+         ],
+      q(270) => [
+         q(0061),
+         q(0),
+         ],
+      q(292) => [
+         q(0064),
+         q(0),
+         ],
+      q(320) => [
+         q(0065),
+         q(0),
+         ],
+      q(324) => [
+         q(0067),
+         q(0),
+         ],
+      q(328) => [
+         q(0069),
+         q(0),
+         ],
+      q(332) => [
+         q(0070),
+         q(0),
+         ],
+      q(340) => [
+         q(0071),
+         q(0),
+         ],
+      q(344) => [
+         q(0072),
+         q(0),
+         ],
+      q(348) => [
+         q(0073),
+         q(0),
+         ],
+      q(352) => [
+         q(0074),
+         q(0),
+         ],
+      q(356) => [
+         q(0021),
+         q(0),
+         ],
+      q(360) => [
+         q(0075),
+         q(0),
+         ],
+      q(364) => [
+         q(0076),
+         q(0),
+         ],
+      q(368) => [
+         q(0077),
+         q(0),
+         ],
+      q(376) => [
+         q(0078),
+         q(0),
+         ],
+      q(388) => [
+         q(0079),
+         q(0),
+         ],
+      q(392) => [
+         q(0080),
+         q(0),
+         ],
+      q(398) => [
+         q(0082),
+         q(0),
+         ],
+      q(400) => [
+         q(0081),
+         q(0),
+         ],
+      q(404) => [
+         q(0083),
+         q(0),
+         ],
+      q(408) => [
+         q(0084),
+         q(0),
+         ],
+      q(410) => [
+         q(0085),
+         q(0),
+         ],
+      q(414) => [
+         q(0086),
+         q(0),
+         ],
+      q(417) => [
+         q(0087),
+         q(0),
+         ],
+      q(418) => [
+         q(0088),
+         q(0),
+         ],
+      q(422) => [
+         q(0090),
+         q(0),
+         ],
+      q(426) => [
+         q(0092),
+         q(0),
+         ],
+      q(428) => [
+         q(0089),
+         q(0),
+         ],
+      q(430) => [
+         q(0093),
+         q(0),
+         ],
+      q(434) => [
+         q(0094),
+         q(0),
+         ],
+      q(440) => [
+         q(0096),
+         q(0),
+         ],
+      q(446) => [
+         q(0097),
+         q(0),
+         ],
+      q(454) => [
+         q(0100),
+         q(0),
+         ],
+      q(458) => [
+         q(0101),
+         q(0),
+         ],
+      q(462) => [
+         q(0102),
+         q(0),
+         ],
+      q(478) => [
+         q(0103),
+         q(0),
+         ],
+      q(480) => [
+         q(0104),
+         q(0),
+         ],
+      q(484) => [
+         q(0105),
+         q(0),
+         ],
+      q(496) => [
+         q(0108),
+         q(0),
+         ],
+      q(498) => [
+         q(0107),
+         q(0),
+         ],
+      q(504) => [
+         q(0109),
+         q(0),
+         ],
+      q(512) => [
+         q(0117),
+         q(0),
+         ],
+      q(516) => [
+         q(0112),
+         q(0),
+         ],
+      q(524) => [
+         q(0113),
+         q(0),
+         ],
+      q(532) => [
+         q(0114),
+         q(0),
+         ],
+      q(533) => [
+         q(0010),
+         q(0),
+         ],
+      q(548) => [
+         q(0164),
+         q(0),
+         ],
+      q(554) => [
+         q(0044),
+         q(0),
+         ],
+      q(558) => [
+         q(0115),
+         q(0),
+         ],
+      q(566) => [
+         q(0116),
+         q(0),
+         ],
+      q(578) => [
+         q(0027),
+         q(0),
+         ],
+      q(586) => [
+         q(0118),
+         q(0),
+         ],
+      q(590) => [
+         q(0119),
+         q(0),
+         ],
+      q(598) => [
+         q(0120),
+         q(0),
+         ],
+      q(600) => [
+         q(0121),
+         q(0),
+         ],
+      q(604) => [
+         q(0122),
+         q(0),
+         ],
+      q(608) => [
+         q(0123),
+         q(0),
+         ],
+      q(624) => [
+         q(0068),
+         q(0),
+         ],
+      q(634) => [
+         q(0125),
+         q(0),
+         ],
+      q(643) => [
+         q(0127),
+         q(0),
+         ],
+      q(646) => [
+         q(0128),
+         q(0),
+         ],
+      q(654) => [
+         q(0129),
+         q(0),
+         ],
+      q(678) => [
+         q(0131),
+         q(0),
+         ],
+      q(682) => [
+         q(0132),
+         q(0),
+         ],
+      q(690) => [
+         q(0134),
+         q(0),
+         ],
+      q(694) => [
+         q(0135),
+         q(0),
+         ],
+      q(702) => [
+         q(0136),
+         q(0),
+         ],
+      q(704) => [
+         q(0166),
+         q(0),
+         ],
+      q(706) => [
+         q(0138),
+         q(0),
+         ],
+      q(710) => [
+         q(0091),
+         q(0),
+         ],
+      q(748) => [
+         q(0142),
+         q(0),
+         ],
+      q(752) => [
+         q(0143),
+         q(0),
+         ],
+      q(756) => [
+         q(0095),
+         q(0),
+         ],
+      q(760) => [
+         q(0146),
+         q(0),
+         ],
+      q(764) => [
+         q(0150),
+         q(0),
+         ],
+      q(776) => [
+         q(0151),
+         q(0),
+         ],
+      q(780) => [
+         q(0152),
+         q(0),
+         ],
+      q(784) => [
+         q(0158),
+         q(0),
+         ],
+      q(788) => [
+         q(0153),
+         q(0),
+         ],
+      q(800) => [
+         q(0156),
+         q(0),
+         ],
+      q(807) => [
+         q(0098),
+         q(0),
+         ],
+      q(818) => [
+         q(0053),
+         q(0),
+         ],
+      q(826) => [
+         q(0066),
+         q(0),
+         ],
+      q(834) => [
+         q(0149),
+         q(0),
+         ],
+      q(840) => [
+         q(0005),
+         q(0),
+         ],
+      q(858) => [
+         q(0161),
+         q(0),
+         ],
+      q(860) => [
+         q(0163),
+         q(0),
+         ],
+      q(882) => [
+         q(0130),
+         q(0),
+         ],
+      q(886) => [
+         q(0167),
+         q(0),
+         ],
+      q(894) => [
+         q(0168),
+         q(0),
+         ],
+      q(901) => [
+         q(0147),
+         q(0),
+         ],
+      q(931) => [
+         q(0048),
+         q(0),
+         ],
+      q(932) => [
+         q(0169),
+         q(0),
+         ],
+      q(934) => [
+         q(0155),
+         q(0),
+         ],
+      q(936) => [
+         q(0063),
+         q(0),
+         ],
+      q(937) => [
+         q(0165),
+         q(0),
+         ],
+      q(938) => [
+         q(0140),
+         q(0),
+         ],
+      q(940) => [
+         q(0162),
+         q(0),
+         ],
+      q(941) => [
+         q(0133),
+         q(0),
+         ],
+      q(943) => [
+         q(0110),
+         q(0),
+         ],
+      q(944) => [
+         q(0012),
+         q(0),
+         ],
+      q(946) => [
+         q(0126),
+         q(0),
+         ],
+      q(947) => [
+         q(0145),
+         q(0),
+         ],
+      q(948) => [
+         q(0144),
+         q(0),
+         ],
+      q(949) => [
+         q(0154),
+         q(0),
+         ],
+      q(950) => [
+         q(0033),
+         q(0),
+         ],
+      q(951) => [
+         q(0007),
+         q(0),
+         ],
+      q(952) => [
+         q(0019),
+         q(0),
+         ],
+      q(953) => [
+         q(0060),
+         q(0),
+         ],
+      q(955) => [
+         q(0171),
+         q(0),
+         ],
+      q(956) => [
+         q(0172),
+         q(0),
+         ],
+      q(957) => [
+         q(0173),
+         q(0),
+         ],
+      q(958) => [
+         q(0174),
+         q(0),
+         ],
+      q(959) => [
+         q(0170),
+         q(0),
+         ],
+      q(960) => [
+         q(0175),
+         q(0),
+         ],
+      q(961) => [
+         q(0178),
+         q(0),
+         ],
+      q(962) => [
+         q(0177),
+         q(0),
+         ],
+      q(964) => [
+         q(0176),
+         q(0),
+         ],
+      q(968) => [
+         q(0141),
+         q(0),
+         ],
+      q(969) => [
+         q(0099),
+         q(0),
+         ],
+      q(970) => [
+         q(0041),
+         q(0),
+         ],
+      q(971) => [
+         q(0001),
+         q(0),
+         ],
+      q(972) => [
+         q(0148),
+         q(0),
+         ],
+      q(973) => [
+         q(0006),
+         q(0),
+         ],
+      q(974) => [
+         q(0017),
+         q(0),
+         ],
+      q(975) => [
+         q(0030),
+         q(0),
+         ],
+      q(976) => [
+         q(0043),
+         q(0),
+         ],
+      q(977) => [
+         q(0025),
+         q(0),
+         ],
+      q(978) => [
+         q(0002),
+         q(0),
+         ],
+      q(979) => [
+         q(0106),
+         q(0),
+         ],
+      q(980) => [
+         q(0157),
+         q(0),
+         ],
+      q(981) => [
+         q(0062),
+         q(0),
+         ],
+      q(984) => [
+         q(0024),
+         q(0),
+         ],
+      q(985) => [
+         q(0124),
+         q(0),
+         ],
+      q(986) => [
+         q(0028),
+         q(0),
+         ],
+      q(990) => [
+         q(0038),
+         q(0),
+         ],
+      q(997) => [
+         q(0160),
+         q(0),
+         ],
+      q(998) => [
+         q(0159),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'currency'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(AFN),
+      q(0002) => q(EUR),
+      q(0003) => q(ALL),
+      q(0004) => q(DZD),
+      q(0005) => q(USD),
+      q(0006) => q(AOA),
+      q(0007) => q(XCD),
+      q(0008) => q(ARS),
+      q(0009) => q(AMD),
+      q(0010) => q(AWG),
+      q(0011) => q(AUD),
+      q(0012) => q(AZN),
+      q(0013) => q(BSD),
+      q(0014) => q(BHD),
+      q(0015) => q(BDT),
+      q(0016) => q(BBD),
+      q(0017) => q(BYR),
+      q(0018) => q(BZD),
+      q(0019) => q(XOF),
+      q(0020) => q(BMD),
+      q(0021) => q(INR),
+      q(0022) => q(BTN),
+      q(0023) => q(BOB),
+      q(0024) => q(BOV),
+      q(0025) => q(BAM),
+      q(0026) => q(BWP),
+      q(0027) => q(NOK),
+      q(0028) => q(BRL),
+      q(0029) => q(BND),
+      q(0030) => q(BGN),
+      q(0031) => q(BIF),
+      q(0032) => q(KHR),
+      q(0033) => q(XAF),
+      q(0034) => q(CAD),
+      q(0035) => q(CVE),
+      q(0036) => q(KYD),
+      q(0037) => q(CLP),
+      q(0038) => q(CLF),
+      q(0039) => q(CNY),
+      q(0040) => q(COP),
+      q(0041) => q(COU),
+      q(0042) => q(KMF),
+      q(0043) => q(CDF),
+      q(0044) => q(NZD),
+      q(0045) => q(CRC),
+      q(0046) => q(HRK),
+      q(0047) => q(CUP),
+      q(0048) => q(CUC),
+      q(0049) => q(CZK),
+      q(0050) => q(DKK),
+      q(0051) => q(DJF),
+      q(0052) => q(DOP),
+      q(0053) => q(EGP),
+      q(0054) => q(SVC),
+      q(0055) => q(ERN),
+      q(0056) => q(EEK),
+      q(0057) => q(ETB),
+      q(0058) => q(FKP),
+      q(0059) => q(FJD),
+      q(0060) => q(XPF),
+      q(0061) => q(GMD),
+      q(0062) => q(GEL),
+      q(0063) => q(GHS),
+      q(0064) => q(GIP),
+      q(0065) => q(GTQ),
+      q(0066) => q(GBP),
+      q(0067) => q(GNF),
+      q(0068) => q(GWP),
+      q(0069) => q(GYD),
+      q(0070) => q(HTG),
+      q(0071) => q(HNL),
+      q(0072) => q(HKD),
+      q(0073) => q(HUF),
+      q(0074) => q(ISK),
+      q(0075) => q(IDR),
+      q(0076) => q(IRR),
+      q(0077) => q(IQD),
+      q(0078) => q(ILS),
+      q(0079) => q(JMD),
+      q(0080) => q(JPY),
+      q(0081) => q(JOD),
+      q(0082) => q(KZT),
+      q(0083) => q(KES),
+      q(0084) => q(KPW),
+      q(0085) => q(KRW),
+      q(0086) => q(KWD),
+      q(0087) => q(KGS),
+      q(0088) => q(LAK),
+      q(0089) => q(LVL),
+      q(0090) => q(LBP),
+      q(0091) => q(ZAR),
+      q(0092) => q(LSL),
+      q(0093) => q(LRD),
+      q(0094) => q(LYD),
+      q(0095) => q(CHF),
+      q(0096) => q(LTL),
+      q(0097) => q(MOP),
+      q(0098) => q(MKD),
+      q(0099) => q(MGA),
+      q(0100) => q(MWK),
+      q(0101) => q(MYR),
+      q(0102) => q(MVR),
+      q(0103) => q(MRO),
+      q(0104) => q(MUR),
+      q(0105) => q(MXN),
+      q(0106) => q(MXV),
+      q(0107) => q(MDL),
+      q(0108) => q(MNT),
+      q(0109) => q(MAD),
+      q(0110) => q(MZN),
+      q(0111) => q(MMK),
+      q(0112) => q(NAD),
+      q(0113) => q(NPR),
+      q(0114) => q(ANG),
+      q(0115) => q(NIO),
+      q(0116) => q(NGN),
+      q(0117) => q(OMR),
+      q(0118) => q(PKR),
+      q(0119) => q(PAB),
+      q(0120) => q(PGK),
+      q(0121) => q(PYG),
+      q(0122) => q(PEN),
+      q(0123) => q(PHP),
+      q(0124) => q(PLN),
+      q(0125) => q(QAR),
+      q(0126) => q(RON),
+      q(0127) => q(RUB),
+      q(0128) => q(RWF),
+      q(0129) => q(SHP),
+      q(0130) => q(WST),
+      q(0131) => q(STD),
+      q(0132) => q(SAR),
+      q(0133) => q(RSD),
+      q(0134) => q(SCR),
+      q(0135) => q(SLL),
+      q(0136) => q(SGD),
+      q(0137) => q(SBD),
+      q(0138) => q(SOS),
+      q(0139) => q(LKR),
+      q(0140) => q(SDG),
+      q(0141) => q(SRD),
+      q(0142) => q(SZL),
+      q(0143) => q(SEK),
+      q(0144) => q(CHW),
+      q(0145) => q(CHE),
+      q(0146) => q(SYP),
+      q(0147) => q(TWD),
+      q(0148) => q(TJS),
+      q(0149) => q(TZS),
+      q(0150) => q(THB),
+      q(0151) => q(TOP),
+      q(0152) => q(TTD),
+      q(0153) => q(TND),
+      q(0154) => q(TRY),
+      q(0155) => q(TMT),
+      q(0156) => q(UGX),
+      q(0157) => q(UAH),
+      q(0158) => q(AED),
+      q(0159) => q(USS),
+      q(0160) => q(USN),
+      q(0161) => q(UYU),
+      q(0162) => q(UYI),
+      q(0163) => q(UZS),
+      q(0164) => q(VUV),
+      q(0165) => q(VEF),
+      q(0166) => q(VND),
+      q(0167) => q(YER),
+      q(0168) => q(ZMK),
+      q(0169) => q(ZWL),
+      q(0170) => q(XAU),
+      q(0171) => q(XBA),
+      q(0172) => q(XBB),
+      q(0173) => q(XBC),
+      q(0174) => q(XBD),
+      q(0175) => q(XDR),
+      q(0176) => q(XPD),
+      q(0177) => q(XPT),
+      q(0178) => q(XAG),
+      q(0179) => q(XFU),
+      },
+   q(num) => {
+      q(0001) => q(971),
+      q(0002) => q(978),
+      q(0003) => q(008),
+      q(0004) => q(012),
+      q(0005) => q(840),
+      q(0006) => q(973),
+      q(0007) => q(951),
+      q(0008) => q(032),
+      q(0009) => q(051),
+      q(0010) => q(533),
+      q(0011) => q(036),
+      q(0012) => q(944),
+      q(0013) => q(044),
+      q(0014) => q(048),
+      q(0015) => q(050),
+      q(0016) => q(052),
+      q(0017) => q(974),
+      q(0018) => q(084),
+      q(0019) => q(952),
+      q(0020) => q(060),
+      q(0021) => q(356),
+      q(0022) => q(064),
+      q(0023) => q(068),
+      q(0024) => q(984),
+      q(0025) => q(977),
+      q(0026) => q(072),
+      q(0027) => q(578),
+      q(0028) => q(986),
+      q(0029) => q(096),
+      q(0030) => q(975),
+      q(0031) => q(108),
+      q(0032) => q(116),
+      q(0033) => q(950),
+      q(0034) => q(124),
+      q(0035) => q(132),
+      q(0036) => q(136),
+      q(0037) => q(152),
+      q(0038) => q(990),
+      q(0039) => q(156),
+      q(0040) => q(170),
+      q(0041) => q(970),
+      q(0042) => q(174),
+      q(0043) => q(976),
+      q(0044) => q(554),
+      q(0045) => q(188),
+      q(0046) => q(191),
+      q(0047) => q(192),
+      q(0048) => q(931),
+      q(0049) => q(203),
+      q(0050) => q(208),
+      q(0051) => q(262),
+      q(0052) => q(214),
+      q(0053) => q(818),
+      q(0054) => q(222),
+      q(0055) => q(232),
+      q(0056) => q(233),
+      q(0057) => q(230),
+      q(0058) => q(238),
+      q(0059) => q(242),
+      q(0060) => q(953),
+      q(0061) => q(270),
+      q(0062) => q(981),
+      q(0063) => q(936),
+      q(0064) => q(292),
+      q(0065) => q(320),
+      q(0066) => q(826),
+      q(0067) => q(324),
+      q(0068) => q(624),
+      q(0069) => q(328),
+      q(0070) => q(332),
+      q(0071) => q(340),
+      q(0072) => q(344),
+      q(0073) => q(348),
+      q(0074) => q(352),
+      q(0075) => q(360),
+      q(0076) => q(364),
+      q(0077) => q(368),
+      q(0078) => q(376),
+      q(0079) => q(388),
+      q(0080) => q(392),
+      q(0081) => q(400),
+      q(0082) => q(398),
+      q(0083) => q(404),
+      q(0084) => q(408),
+      q(0085) => q(410),
+      q(0086) => q(414),
+      q(0087) => q(417),
+      q(0088) => q(418),
+      q(0089) => q(428),
+      q(0090) => q(422),
+      q(0091) => q(710),
+      q(0092) => q(426),
+      q(0093) => q(430),
+      q(0094) => q(434),
+      q(0095) => q(756),
+      q(0096) => q(440),
+      q(0097) => q(446),
+      q(0098) => q(807),
+      q(0099) => q(969),
+      q(0100) => q(454),
+      q(0101) => q(458),
+      q(0102) => q(462),
+      q(0103) => q(478),
+      q(0104) => q(480),
+      q(0105) => q(484),
+      q(0106) => q(979),
+      q(0107) => q(498),
+      q(0108) => q(496),
+      q(0109) => q(504),
+      q(0110) => q(943),
+      q(0111) => q(104),
+      q(0112) => q(516),
+      q(0113) => q(524),
+      q(0114) => q(532),
+      q(0115) => q(558),
+      q(0116) => q(566),
+      q(0117) => q(512),
+      q(0118) => q(586),
+      q(0119) => q(590),
+      q(0120) => q(598),
+      q(0121) => q(600),
+      q(0122) => q(604),
+      q(0123) => q(608),
+      q(0124) => q(985),
+      q(0125) => q(634),
+      q(0126) => q(946),
+      q(0127) => q(643),
+      q(0128) => q(646),
+      q(0129) => q(654),
+      q(0130) => q(882),
+      q(0131) => q(678),
+      q(0132) => q(682),
+      q(0133) => q(941),
+      q(0134) => q(690),
+      q(0135) => q(694),
+      q(0136) => q(702),
+      q(0137) => q(090),
+      q(0138) => q(706),
+      q(0139) => q(144),
+      q(0140) => q(938),
+      q(0141) => q(968),
+      q(0142) => q(748),
+      q(0143) => q(752),
+      q(0144) => q(948),
+      q(0145) => q(947),
+      q(0146) => q(760),
+      q(0147) => q(901),
+      q(0148) => q(972),
+      q(0149) => q(834),
+      q(0150) => q(764),
+      q(0151) => q(776),
+      q(0152) => q(780),
+      q(0153) => q(788),
+      q(0154) => q(949),
+      q(0155) => q(934),
+      q(0156) => q(800),
+      q(0157) => q(980),
+      q(0158) => q(784),
+      q(0159) => q(998),
+      q(0160) => q(997),
+      q(0161) => q(858),
+      q(0162) => q(940),
+      q(0163) => q(860),
+      q(0164) => q(548),
+      q(0165) => q(937),
+      q(0166) => q(704),
+      q(0167) => q(886),
+      q(0168) => q(894),
+      q(0169) => q(932),
+      q(0170) => q(959),
+      q(0171) => q(955),
+      q(0172) => q(956),
+      q(0173) => q(957),
+      q(0174) => q(958),
+      q(0175) => q(960),
+      q(0176) => q(964),
+      q(0177) => q(962),
+      q(0178) => q(961),
+      },
+};
+
+1;
diff --git a/cpan/Locale-Codes/lib/Locale/Codes/Language.pm b/cpan/Locale-Codes/lib/Locale/Codes/Language.pm
new file mode 100644 (file)
index 0000000..6d247f7
--- /dev/null
@@ -0,0 +1,7303 @@
+package Locale::Codes::Language;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Mon Apr  5 15:43:17 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Language - language codes for the Locale::Language module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Language module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'language'}{'id'} = '0486';
+
+$Locale::Codes::Data{'language'}{'id2names'} = {
+   q(0001) => [
+      q(Afar),
+      ],
+   q(0002) => [
+      q(Abkhazian),
+      ],
+   q(0003) => [
+      q(Achinese),
+      ],
+   q(0004) => [
+      q(Acoli),
+      ],
+   q(0005) => [
+      q(Adangme),
+      ],
+   q(0006) => [
+      q(Adyghe),
+      q(Adygei),
+      ],
+   q(0007) => [
+      q(Afro-Asiatic languages),
+      ],
+   q(0008) => [
+      q(Afrihili),
+      ],
+   q(0009) => [
+      q(Afrikaans),
+      ],
+   q(0010) => [
+      q(Ainu),
+      ],
+   q(0011) => [
+      q(Akan),
+      ],
+   q(0012) => [
+      q(Akkadian),
+      ],
+   q(0013) => [
+      q(Albanian),
+      ],
+   q(0014) => [
+      q(Aleut),
+      ],
+   q(0015) => [
+      q(Algonquian languages),
+      ],
+   q(0016) => [
+      q(Southern Altai),
+      ],
+   q(0017) => [
+      q(Amharic),
+      ],
+   q(0018) => [
+      q(English, Old (ca.450-1100)),
+      ],
+   q(0019) => [
+      q(Angika),
+      ],
+   q(0020) => [
+      q(Apache languages),
+      ],
+   q(0021) => [
+      q(Arabic),
+      ],
+   q(0022) => [
+      q(Official Aramaic (700-300 BCE)),
+      q(Imperial Aramaic (700-300 BCE)),
+      ],
+   q(0023) => [
+      q(Aragonese),
+      ],
+   q(0024) => [
+      q(Armenian),
+      ],
+   q(0025) => [
+      q(Mapudungun),
+      q(Mapuche),
+      ],
+   q(0026) => [
+      q(Arapaho),
+      ],
+   q(0027) => [
+      q(Artificial languages),
+      ],
+   q(0028) => [
+      q(Arawak),
+      ],
+   q(0029) => [
+      q(Assamese),
+      ],
+   q(0030) => [
+      q(Asturian),
+      q(Bable),
+      q(Leonese),
+      q(Asturleonese),
+      ],
+   q(0031) => [
+      q(Athapascan languages),
+      ],
+   q(0032) => [
+      q(Australian languages),
+      ],
+   q(0033) => [
+      q(Avaric),
+      ],
+   q(0034) => [
+      q(Avestan),
+      ],
+   q(0035) => [
+      q(Awadhi),
+      ],
+   q(0036) => [
+      q(Aymara),
+      ],
+   q(0037) => [
+      q(Azerbaijani),
+      ],
+   q(0038) => [
+      q(Banda languages),
+      ],
+   q(0039) => [
+      q(Bamileke languages),
+      ],
+   q(0040) => [
+      q(Bashkir),
+      ],
+   q(0041) => [
+      q(Baluchi),
+      ],
+   q(0042) => [
+      q(Bambara),
+      ],
+   q(0043) => [
+      q(Balinese),
+      ],
+   q(0044) => [
+      q(Basque),
+      ],
+   q(0045) => [
+      q(Basa),
+      ],
+   q(0046) => [
+      q(Baltic languages),
+      ],
+   q(0047) => [
+      q(Beja),
+      q(Bedawiyet),
+      ],
+   q(0048) => [
+      q(Belarusian),
+      ],
+   q(0049) => [
+      q(Bemba),
+      ],
+   q(0050) => [
+      q(Bengali),
+      ],
+   q(0051) => [
+      q(Berber languages),
+      ],
+   q(0052) => [
+      q(Bhojpuri),
+      ],
+   q(0053) => [
+      q(Bihari languages),
+      ],
+   q(0054) => [
+      q(Bikol),
+      ],
+   q(0055) => [
+      q(Bini),
+      q(Edo),
+      ],
+   q(0056) => [
+      q(Bislama),
+      ],
+   q(0057) => [
+      q(Siksika),
+      ],
+   q(0058) => [
+      q(Bantu (Other)),
+      ],
+   q(0059) => [
+      q(Bosnian),
+      ],
+   q(0060) => [
+      q(Braj),
+      ],
+   q(0061) => [
+      q(Breton),
+      ],
+   q(0062) => [
+      q(Batak languages),
+      ],
+   q(0063) => [
+      q(Buriat),
+      ],
+   q(0064) => [
+      q(Buginese),
+      ],
+   q(0065) => [
+      q(Bulgarian),
+      ],
+   q(0066) => [
+      q(Burmese),
+      ],
+   q(0067) => [
+      q(Blin),
+      q(Bilin),
+      ],
+   q(0068) => [
+      q(Caddo),
+      ],
+   q(0069) => [
+      q(Central American Indian languages),
+      ],
+   q(0070) => [
+      q(Galibi Carib),
+      ],
+   q(0071) => [
+      q(Catalan),
+      q(Valencian),
+      ],
+   q(0072) => [
+      q(Caucasian languages),
+      ],
+   q(0073) => [
+      q(Cebuano),
+      ],
+   q(0074) => [
+      q(Celtic languages),
+      ],
+   q(0075) => [
+      q(Chamorro),
+      ],
+   q(0076) => [
+      q(Chibcha),
+      ],
+   q(0077) => [
+      q(Chechen),
+      ],
+   q(0078) => [
+      q(Chagatai),
+      ],
+   q(0079) => [
+      q(Chinese),
+      ],
+   q(0080) => [
+      q(Chuukese),
+      ],
+   q(0081) => [
+      q(Mari),
+      ],
+   q(0082) => [
+      q(Chinook jargon),
+      ],
+   q(0083) => [
+      q(Choctaw),
+      ],
+   q(0084) => [
+      q(Chipewyan),
+      q(Dene Suline),
+      ],
+   q(0085) => [
+      q(Cherokee),
+      ],
+   q(0086) => [
+      q(Church Slavic),
+      q(Old Slavonic),
+      q(Church Slavonic),
+      q(Old Bulgarian),
+      q(Old Church Slavonic),
+      ],
+   q(0087) => [
+      q(Chuvash),
+      ],
+   q(0088) => [
+      q(Cheyenne),
+      ],
+   q(0089) => [
+      q(Chamic languages),
+      ],
+   q(0090) => [
+      q(Coptic),
+      ],
+   q(0091) => [
+      q(Cornish),
+      ],
+   q(0092) => [
+      q(Corsican),
+      ],
+   q(0093) => [
+      q(Creoles and pidgins, English based),
+      ],
+   q(0094) => [
+      q(Creoles and pidgins, French-based ),
+      ],
+   q(0095) => [
+      q(Creoles and pidgins, Portuguese-based ),
+      ],
+   q(0096) => [
+      q(Cree),
+      ],
+   q(0097) => [
+      q(Crimean Tatar),
+      q(Crimean Turkish),
+      ],
+   q(0098) => [
+      q(Creoles and pidgins ),
+      ],
+   q(0099) => [
+      q(Kashubian),
+      ],
+   q(0100) => [
+      q(Cushitic languages),
+      ],
+   q(0101) => [
+      q(Czech),
+      ],
+   q(0102) => [
+      q(Dakota),
+      ],
+   q(0103) => [
+      q(Danish),
+      ],
+   q(0104) => [
+      q(Dargwa),
+      ],
+   q(0105) => [
+      q(Land Dayak languages),
+      ],
+   q(0106) => [
+      q(Delaware),
+      ],
+   q(0107) => [
+      q(Slave (Athapascan)),
+      ],
+   q(0108) => [
+      q(Dogrib),
+      ],
+   q(0109) => [
+      q(Dinka),
+      ],
+   q(0110) => [
+      q(Divehi),
+      q(Dhivehi),
+      q(Maldivian),
+      ],
+   q(0111) => [
+      q(Dogri),
+      ],
+   q(0112) => [
+      q(Dravidian languages),
+      ],
+   q(0113) => [
+      q(Lower Sorbian),
+      ],
+   q(0114) => [
+      q(Duala),
+      ],
+   q(0115) => [
+      q(Dutch, Middle (ca.1050-1350)),
+      ],
+   q(0116) => [
+      q(Dutch),
+      q(Flemish),
+      ],
+   q(0117) => [
+      q(Dyula),
+      ],
+   q(0118) => [
+      q(Dzongkha),
+      ],
+   q(0119) => [
+      q(Efik),
+      ],
+   q(0120) => [
+      q(Egyptian (Ancient)),
+      ],
+   q(0121) => [
+      q(Ekajuk),
+      ],
+   q(0122) => [
+      q(Elamite),
+      ],
+   q(0123) => [
+      q(English),
+      ],
+   q(0124) => [
+      q(English, Middle (1100-1500)),
+      ],
+   q(0125) => [
+      q(Esperanto),
+      ],
+   q(0126) => [
+      q(Estonian),
+      ],
+   q(0127) => [
+      q(Ewe),
+      ],
+   q(0128) => [
+      q(Ewondo),
+      ],
+   q(0129) => [
+      q(Fang),
+      ],
+   q(0130) => [
+      q(Faroese),
+      ],
+   q(0131) => [
+      q(Fanti),
+      ],
+   q(0132) => [
+      q(Fijian),
+      ],
+   q(0133) => [
+      q(Filipino),
+      q(Pilipino),
+      ],
+   q(0134) => [
+      q(Finnish),
+      ],
+   q(0135) => [
+      q(Finno-Ugrian languages),
+      ],
+   q(0136) => [
+      q(Fon),
+      ],
+   q(0137) => [
+      q(French),
+      ],
+   q(0138) => [
+      q(French, Middle (ca.1400-1600)),
+      ],
+   q(0139) => [
+      q(French, Old (842-ca.1400)),
+      ],
+   q(0140) => [
+      q(Northern Frisian),
+      ],
+   q(0141) => [
+      q(Eastern Frisian),
+      ],
+   q(0142) => [
+      q(Western Frisian),
+      ],
+   q(0143) => [
+      q(Fulah),
+      ],
+   q(0144) => [
+      q(Friulian),
+      ],
+   q(0145) => [
+      q(Ga),
+      ],
+   q(0146) => [
+      q(Gayo),
+      ],
+   q(0147) => [
+      q(Gbaya),
+      ],
+   q(0148) => [
+      q(Germanic languages),
+      ],
+   q(0149) => [
+      q(Georgian),
+      ],
+   q(0150) => [
+      q(German),
+      ],
+   q(0151) => [
+      q(Geez),
+      ],
+   q(0152) => [
+      q(Gilbertese),
+      ],
+   q(0153) => [
+      q(Gaelic),
+      q(Scottish Gaelic),
+      ],
+   q(0154) => [
+      q(Irish),
+      ],
+   q(0155) => [
+      q(Galician),
+      ],
+   q(0156) => [
+      q(Manx),
+      ],
+   q(0157) => [
+      q(German, Middle High (ca.1050-1500)),
+      ],
+   q(0158) => [
+      q(German, Old High (ca.750-1050)),
+      ],
+   q(0159) => [
+      q(Gondi),
+      ],
+   q(0160) => [
+      q(Gorontalo),
+      ],
+   q(0161) => [
+      q(Gothic),
+      ],
+   q(0162) => [
+      q(Grebo),
+      ],
+   q(0163) => [
+      q(Greek, Ancient (to 1453)),
+      ],
+   q(0164) => [
+      q(Greek, Modern (1453-)),
+      q(Greek),
+      ],
+   q(0165) => [
+      q(Guarani),
+      ],
+   q(0166) => [
+      q(Swiss German),
+      q(Alemannic),
+      q(Alsatian),
+      ],
+   q(0167) => [
+      q(Gujarati),
+      ],
+   q(0168) => [
+      q(Gwich'in),
+      ],
+   q(0169) => [
+      q(Haida),
+      ],
+   q(0170) => [
+      q(Haitian),
+      q(Haitian Creole),
+      ],
+   q(0171) => [
+      q(Hausa),
+      ],
+   q(0172) => [
+      q(Hawaiian),
+      ],
+   q(0173) => [
+      q(Hebrew),
+      ],
+   q(0174) => [
+      q(Herero),
+      ],
+   q(0175) => [
+      q(Hiligaynon),
+      ],
+   q(0176) => [
+      q(Himachali languages),
+      q(Western Pahari languages),
+      ],
+   q(0177) => [
+      q(Hindi),
+      ],
+   q(0178) => [
+      q(Hittite),
+      ],
+   q(0179) => [
+      q(Hmong),
+      q(Mong),
+      ],
+   q(0180) => [
+      q(Hiri Motu),
+      ],
+   q(0181) => [
+      q(Croatian),
+      ],
+   q(0182) => [
+      q(Upper Sorbian),
+      ],
+   q(0183) => [
+      q(Hungarian),
+      ],
+   q(0184) => [
+      q(Hupa),
+      ],
+   q(0185) => [
+      q(Iban),
+      ],
+   q(0186) => [
+      q(Igbo),
+      ],
+   q(0187) => [
+      q(Icelandic),
+      ],
+   q(0188) => [
+      q(Ido),
+      ],
+   q(0189) => [
+      q(Sichuan Yi),
+      q(Nuosu),
+      ],
+   q(0190) => [
+      q(Ijo languages),
+      ],
+   q(0191) => [
+      q(Inuktitut),
+      ],
+   q(0192) => [
+      q(Interlingue),
+      q(Occidental),
+      ],
+   q(0193) => [
+      q(Iloko),
+      ],
+   q(0194) => [
+      q(Interlingua (International Auxiliary Language Association)),
+      ],
+   q(0195) => [
+      q(Indic languages),
+      ],
+   q(0196) => [
+      q(Indonesian),
+      ],
+   q(0197) => [
+      q(Indo-European languages),
+      ],
+   q(0198) => [
+      q(Ingush),
+      ],
+   q(0199) => [
+      q(Inupiaq),
+      ],
+   q(0200) => [
+      q(Iranian languages),
+      ],
+   q(0201) => [
+      q(Iroquoian languages),
+      ],
+   q(0202) => [
+      q(Italian),
+      ],
+   q(0203) => [
+      q(Javanese),
+      ],
+   q(0204) => [
+      q(Lojban),
+      ],
+   q(0205) => [
+      q(Japanese),
+      ],
+   q(0206) => [
+      q(Judeo-Persian),
+      ],
+   q(0207) => [
+      q(Judeo-Arabic),
+      ],
+   q(0208) => [
+      q(Kara-Kalpak),
+      ],
+   q(0209) => [
+      q(Kabyle),
+      ],
+   q(0210) => [
+      q(Kachin),
+      q(Jingpho),
+      ],
+   q(0211) => [
+      q(Kalaallisut),
+      q(Greenlandic),
+      ],
+   q(0212) => [
+      q(Kamba),
+      ],
+   q(0213) => [
+      q(Kannada),
+      ],
+   q(0214) => [
+      q(Karen languages),
+      ],
+   q(0215) => [
+      q(Kashmiri),
+      ],
+   q(0216) => [
+      q(Kanuri),
+      ],
+   q(0217) => [
+      q(Kawi),
+      ],
+   q(0218) => [
+      q(Kazakh),
+      ],
+   q(0219) => [
+      q(Kabardian),
+      ],
+   q(0220) => [
+      q(Khasi),
+      ],
+   q(0221) => [
+      q(Khoisan languages),
+      ],
+   q(0222) => [
+      q(Central Khmer),
+      ],
+   q(0223) => [
+      q(Khotanese),
+      q(Sakan),
+      ],
+   q(0224) => [
+      q(Kikuyu),
+      q(Gikuyu),
+      ],
+   q(0225) => [
+      q(Kinyarwanda),
+      ],
+   q(0226) => [
+      q(Kirghiz),
+      q(Kyrgyz),
+      ],
+   q(0227) => [
+      q(Kimbundu),
+      ],
+   q(0228) => [
+      q(Konkani),
+      ],
+   q(0229) => [
+      q(Komi),
+      ],
+   q(0230) => [
+      q(Kongo),
+      ],
+   q(0231) => [
+      q(Korean),
+      ],
+   q(0232) => [
+      q(Kosraean),
+      ],
+   q(0233) => [
+      q(Kpelle),
+      ],
+   q(0234) => [
+      q(Karachay-Balkar),
+      ],
+   q(0235) => [
+      q(Karelian),
+      ],
+   q(0236) => [
+      q(Kru languages),
+      ],
+   q(0237) => [
+      q(Kurukh),
+      ],
+   q(0238) => [
+      q(Kuanyama),
+      q(Kwanyama),
+      ],
+   q(0239) => [
+      q(Kumyk),
+      ],
+   q(0240) => [
+      q(Kurdish),
+      ],
+   q(0241) => [
+      q(Kutenai),
+      ],
+   q(0242) => [
+      q(Ladino),
+      ],
+   q(0243) => [
+      q(Lahnda),
+      ],
+   q(0244) => [
+      q(Lamba),
+      ],
+   q(0245) => [
+      q(Lao),
+      ],
+   q(0246) => [
+      q(Latin),
+      ],
+   q(0247) => [
+      q(Latvian),
+      ],
+   q(0248) => [
+      q(Lezghian),
+      ],
+   q(0249) => [
+      q(Limburgan),
+      q(Limburger),
+      q(Limburgish),
+      ],
+   q(0250) => [
+      q(Lingala),
+      ],
+   q(0251) => [
+      q(Lithuanian),
+      ],
+   q(0252) => [
+      q(Mongo),
+      ],
+   q(0253) => [
+      q(Lozi),
+      ],
+   q(0254) => [
+      q(Luxembourgish),
+      q(Letzeburgesch),
+      ],
+   q(0255) => [
+      q(Luba-Lulua),
+      ],
+   q(0256) => [
+      q(Luba-Katanga),
+      ],
+   q(0257) => [
+      q(Ganda),
+      ],
+   q(0258) => [
+      q(Luiseno),
+      ],
+   q(0259) => [
+      q(Lunda),
+      ],
+   q(0260) => [
+      q(Luo (Kenya and Tanzania)),
+      ],
+   q(0261) => [
+      q(Lushai),
+      ],
+   q(0262) => [
+      q(Macedonian),
+      ],
+   q(0263) => [
+      q(Madurese),
+      ],
+   q(0264) => [
+      q(Magahi),
+      ],
+   q(0265) => [
+      q(Marshallese),
+      ],
+   q(0266) => [
+      q(Maithili),
+      ],
+   q(0267) => [
+      q(Makasar),
+      ],
+   q(0268) => [
+      q(Malayalam),
+      ],
+   q(0269) => [
+      q(Mandingo),
+      ],
+   q(0270) => [
+      q(Maori),
+      ],
+   q(0271) => [
+      q(Austronesian languages),
+      ],
+   q(0272) => [
+      q(Marathi),
+      ],
+   q(0273) => [
+      q(Masai),
+      ],
+   q(0274) => [
+      q(Malay),
+      ],
+   q(0275) => [
+      q(Moksha),
+      ],
+   q(0276) => [
+      q(Mandar),
+      ],
+   q(0277) => [
+      q(Mende),
+      ],
+   q(0278) => [
+      q(Irish, Middle (900-1200)),
+      ],
+   q(0279) => [
+      q(Mi'kmaq),
+      q(Micmac),
+      ],
+   q(0280) => [
+      q(Minangkabau),
+      ],
+   q(0281) => [
+      q(Uncoded languages),
+      ],
+   q(0282) => [
+      q(Mon-Khmer languages),
+      ],
+   q(0283) => [
+      q(Malagasy),
+      ],
+   q(0284) => [
+      q(Maltese),
+      ],
+   q(0285) => [
+      q(Manchu),
+      ],
+   q(0286) => [
+      q(Manipuri),
+      ],
+   q(0287) => [
+      q(Manobo languages),
+      ],
+   q(0288) => [
+      q(Mohawk),
+      ],
+   q(0289) => [
+      q(Mongolian),
+      ],
+   q(0290) => [
+      q(Mossi),
+      ],
+   q(0291) => [
+      q(Multiple languages),
+      ],
+   q(0292) => [
+      q(Munda languages),
+      ],
+   q(0293) => [
+      q(Creek),
+      ],
+   q(0294) => [
+      q(Mirandese),
+      ],
+   q(0295) => [
+      q(Marwari),
+      ],
+   q(0296) => [
+      q(Mayan languages),
+      ],
+   q(0297) => [
+      q(Erzya),
+      ],
+   q(0298) => [
+      q(Nahuatl languages),
+      ],
+   q(0299) => [
+      q(North American Indian languages),
+      ],
+   q(0300) => [
+      q(Neapolitan),
+      ],
+   q(0301) => [
+      q(Nauru),
+      ],
+   q(0302) => [
+      q(Navajo),
+      q(Navaho),
+      ],
+   q(0303) => [
+      q(Ndebele, South),
+      q(South Ndebele),
+      ],
+   q(0304) => [
+      q(Ndebele, North),
+      q(North Ndebele),
+      ],
+   q(0305) => [
+      q(Ndonga),
+      ],
+   q(0306) => [
+      q(Low German),
+      q(Low Saxon),
+      q(German, Low),
+      q(Saxon, Low),
+      ],
+   q(0307) => [
+      q(Nepali),
+      ],
+   q(0308) => [
+      q(Nepal Bhasa),
+      q(Newari),
+      ],
+   q(0309) => [
+      q(Nias),
+      ],
+   q(0310) => [
+      q(Niger-Kordofanian languages),
+      ],
+   q(0311) => [
+      q(Niuean),
+      ],
+   q(0312) => [
+      q(Norwegian Nynorsk),
+      q(Nynorsk, Norwegian),
+      ],
+   q(0313) => [
+      q(Bokmal, Norwegian),
+      q(Norwegian Bokmal),
+      ],
+   q(0314) => [
+      q(Nogai),
+      ],
+   q(0315) => [
+      q(Norse, Old),
+      ],
+   q(0316) => [
+      q(Norwegian),
+      ],
+   q(0317) => [
+      q(N'Ko),
+      ],
+   q(0318) => [
+      q(Pedi),
+      q(Sepedi),
+      q(Northern Sotho),
+      ],
+   q(0319) => [
+      q(Nubian languages),
+      ],
+   q(0320) => [
+      q(Classical Newari),
+      q(Old Newari),
+      q(Classical Nepal Bhasa),
+      ],
+   q(0321) => [
+      q(Chichewa),
+      q(Chewa),
+      q(Nyanja),
+      ],
+   q(0322) => [
+      q(Nyamwezi),
+      ],
+   q(0323) => [
+      q(Nyankole),
+      ],
+   q(0324) => [
+      q(Nyoro),
+      ],
+   q(0325) => [
+      q(Nzima),
+      ],
+   q(0326) => [
+      q(Occitan (post 1500)),
+      q(Provencal),
+      ],
+   q(0327) => [
+      q(Ojibwa),
+      ],
+   q(0328) => [
+      q(Oriya),
+      ],
+   q(0329) => [
+      q(Oromo),
+      ],
+   q(0330) => [
+      q(Osage),
+      ],
+   q(0331) => [
+      q(Ossetian),
+      q(Ossetic),
+      ],
+   q(0332) => [
+      q(Turkish, Ottoman (1500-1928)),
+      ],
+   q(0333) => [
+      q(Otomian languages),
+      ],
+   q(0334) => [
+      q(Papuan languages),
+      ],
+   q(0335) => [
+      q(Pangasinan),
+      ],
+   q(0336) => [
+      q(Pahlavi),
+      ],
+   q(0337) => [
+      q(Pampanga),
+      q(Kapampangan),
+      ],
+   q(0338) => [
+      q(Panjabi),
+      q(Punjabi),
+      ],
+   q(0339) => [
+      q(Papiamento),
+      ],
+   q(0340) => [
+      q(Palauan),
+      ],
+   q(0341) => [
+      q(Persian, Old (ca.600-400 B.C.)),
+      ],
+   q(0342) => [
+      q(Persian),
+      ],
+   q(0343) => [
+      q(Philippine languages),
+      ],
+   q(0344) => [
+      q(Phoenician),
+      ],
+   q(0345) => [
+      q(Pali),
+      ],
+   q(0346) => [
+      q(Polish),
+      ],
+   q(0347) => [
+      q(Pohnpeian),
+      ],
+   q(0348) => [
+      q(Portuguese),
+      ],
+   q(0349) => [
+      q(Prakrit languages),
+      ],
+   q(0350) => [
+      q(Provencal, Old (to 1500)),
+      ],
+   q(0351) => [
+      q(Pushto),
+      q(Pashto),
+      ],
+   q(0352) => [
+      q(Reserved for local use),
+      ],
+   q(0353) => [
+      q(Quechua),
+      ],
+   q(0354) => [
+      q(Rajasthani),
+      ],
+   q(0355) => [
+      q(Rapanui),
+      ],
+   q(0356) => [
+      q(Rarotongan),
+      q(Cook Islands Maori),
+      ],
+   q(0357) => [
+      q(Romance languages),
+      ],
+   q(0358) => [
+      q(Romansh),
+      ],
+   q(0359) => [
+      q(Romany),
+      ],
+   q(0360) => [
+      q(Romanian),
+      q(Moldavian),
+      q(Moldovan),
+      ],
+   q(0361) => [
+      q(Rundi),
+      ],
+   q(0362) => [
+      q(Aromanian),
+      q(Arumanian),
+      q(Macedo-Romanian),
+      ],
+   q(0363) => [
+      q(Russian),
+      ],
+   q(0364) => [
+      q(Sandawe),
+      ],
+   q(0365) => [
+      q(Sango),
+      ],
+   q(0366) => [
+      q(Yakut),
+      ],
+   q(0367) => [
+      q(South American Indian (Other)),
+      ],
+   q(0368) => [
+      q(Salishan languages),
+      ],
+   q(0369) => [
+      q(Samaritan Aramaic),
+      ],
+   q(0370) => [
+      q(Sanskrit),
+      ],
+   q(0371) => [
+      q(Sasak),
+      ],
+   q(0372) => [
+      q(Santali),
+      ],
+   q(0373) => [
+      q(Sicilian),
+      ],
+   q(0374) => [
+      q(Scots),
+      ],
+   q(0375) => [
+      q(Selkup),
+      ],
+   q(0376) => [
+      q(Semitic languages),
+      ],
+   q(0377) => [
+      q(Irish, Old (to 900)),
+      ],
+   q(0378) => [
+      q(Sign Languages),
+      ],
+   q(0379) => [
+      q(Shan),
+      ],
+   q(0380) => [
+      q(Sidamo),
+      ],
+   q(0381) => [
+      q(Sinhala),
+      q(Sinhalese),
+      ],
+   q(0382) => [
+      q(Siouan languages),
+      ],
+   q(0383) => [
+      q(Sino-Tibetan languages),
+      ],
+   q(0384) => [
+      q(Slavic languages),
+      ],
+   q(0385) => [
+      q(Slovak),
+      ],
+   q(0386) => [
+      q(Slovenian),
+      ],
+   q(0387) => [
+      q(Southern Sami),
+      ],
+   q(0388) => [
+      q(Northern Sami),
+      ],
+   q(0389) => [
+      q(Sami languages),
+      ],
+   q(0390) => [
+      q(Lule Sami),
+      ],
+   q(0391) => [
+      q(Inari Sami),
+      ],
+   q(0392) => [
+      q(Samoan),
+      ],
+   q(0393) => [
+      q(Skolt Sami),
+      ],
+   q(0394) => [
+      q(Shona),
+      ],
+   q(0395) => [
+      q(Sindhi),
+      ],
+   q(0396) => [
+      q(Soninke),
+      ],
+   q(0397) => [
+      q(Sogdian),
+      ],
+   q(0398) => [
+      q(Somali),
+      ],
+   q(0399) => [
+      q(Songhai languages),
+      ],
+   q(0400) => [
+      q(Sotho, Southern),
+      ],
+   q(0401) => [
+      q(Spanish),
+      q(Castilian),
+      ],
+   q(0402) => [
+      q(Sardinian),
+      ],
+   q(0403) => [
+      q(Sranan Tongo),
+      ],
+   q(0404) => [
+      q(Serbian),
+      ],
+   q(0405) => [
+      q(Serer),
+      ],
+   q(0406) => [
+      q(Nilo-Saharan languages),
+      ],
+   q(0407) => [
+      q(Swati),
+      ],
+   q(0408) => [
+      q(Sukuma),
+      ],
+   q(0409) => [
+      q(Sundanese),
+      ],
+   q(0410) => [
+      q(Susu),
+      ],
+   q(0411) => [
+      q(Sumerian),
+      ],
+   q(0412) => [
+      q(Swahili),
+      ],
+   q(0413) => [
+      q(Swedish),
+      ],
+   q(0414) => [
+      q(Classical Syriac),
+      ],
+   q(0415) => [
+      q(Syriac),
+      ],
+   q(0416) => [
+      q(Tahitian),
+      ],
+   q(0417) => [
+      q(Tai languages),
+      ],
+   q(0418) => [
+      q(Tamil),
+      ],
+   q(0419) => [
+      q(Tatar),
+      ],
+   q(0420) => [
+      q(Telugu),
+      ],
+   q(0421) => [
+      q(Timne),
+      ],
+   q(0422) => [
+      q(Tereno),
+      ],
+   q(0423) => [
+      q(Tetum),
+      ],
+   q(0424) => [
+      q(Tajik),
+      ],
+   q(0425) => [
+      q(Tagalog),
+      ],
+   q(0426) => [
+      q(Thai),
+      ],
+   q(0427) => [
+      q(Tibetan),
+      ],
+   q(0428) => [
+      q(Tigre),
+      ],
+   q(0429) => [
+      q(Tigrinya),
+      ],
+   q(0430) => [
+      q(Tiv),
+      ],
+   q(0431) => [
+      q(Tokelau),
+      ],
+   q(0432) => [
+      q(Klingon),
+      q(tlhIngan-Hol),
+      ],
+   q(0433) => [
+      q(Tlingit),
+      ],
+   q(0434) => [
+      q(Tamashek),
+      ],
+   q(0435) => [
+      q(Tonga (Nyasa)),
+      ],
+   q(0436) => [
+      q(Tonga (Tonga Islands)),
+      q(Tonga),
+      ],
+   q(0437) => [
+      q(Tok Pisin),
+      ],
+   q(0438) => [
+      q(Tsimshian),
+      ],
+   q(0439) => [
+      q(Tswana),
+      ],
+   q(0440) => [
+      q(Tsonga),
+      ],
+   q(0441) => [
+      q(Turkmen),
+      ],
+   q(0442) => [
+      q(Tumbuka),
+      ],
+   q(0443) => [
+      q(Tupi languages),
+      ],
+   q(0444) => [
+      q(Turkish),
+      ],
+   q(0445) => [
+      q(Altaic languages),
+      ],
+   q(0446) => [
+      q(Tuvalu),
+      ],
+   q(0447) => [
+      q(Twi),
+      ],
+   q(0448) => [
+      q(Tuvinian),
+      ],
+   q(0449) => [
+      q(Udmurt),
+      ],
+   q(0450) => [
+      q(Ugaritic),
+      ],
+   q(0451) => [
+      q(Uighur),
+      q(Uyghur),
+      ],
+   q(0452) => [
+      q(Ukrainian),
+      ],
+   q(0453) => [
+      q(Umbundu),
+      ],
+   q(0454) => [
+      q(Undetermined),
+      ],
+   q(0455) => [
+      q(Urdu),
+      ],
+   q(0456) => [
+      q(Uzbek),
+      ],
+   q(0457) => [
+      q(Vai),
+      ],
+   q(0458) => [
+      q(Venda),
+      ],
+   q(0459) => [
+      q(Vietnamese),
+      ],
+   q(0460) => [
+      q(Volapuk),
+      ],
+   q(0461) => [
+      q(Votic),
+      ],
+   q(0462) => [
+      q(Wakashan languages),
+      ],
+   q(0463) => [
+      q(Walamo),
+      ],
+   q(0464) => [
+      q(Waray),
+      ],
+   q(0465) => [
+      q(Washo),
+      ],
+   q(0466) => [
+      q(Welsh),
+      ],
+   q(0467) => [
+      q(Sorbian languages),
+      ],
+   q(0468) => [
+      q(Walloon),
+      ],
+   q(0469) => [
+      q(Wolof),
+      ],
+   q(0470) => [
+      q(Kalmyk),
+      q(Oirat),
+      ],
+   q(0471) => [
+      q(Xhosa),
+      ],
+   q(0472) => [
+      q(Yao),
+      ],
+   q(0473) => [
+      q(Yapese),
+      ],
+   q(0474) => [
+      q(Yiddish),
+      ],
+   q(0475) => [
+      q(Yoruba),
+      ],
+   q(0476) => [
+      q(Yupik languages),
+      ],
+   q(0477) => [
+      q(Zapotec),
+      ],
+   q(0478) => [
+      q(Blissymbols),
+      q(Blissymbolics),
+      q(Bliss),
+      ],
+   q(0479) => [
+      q(Zenaga),
+      ],
+   q(0480) => [
+      q(Zhuang),
+      q(Chuang),
+      ],
+   q(0481) => [
+      q(Zande languages),
+      ],
+   q(0482) => [
+      q(Zulu),
+      ],
+   q(0483) => [
+      q(Zuni),
+      ],
+   q(0484) => [
+      q(No linguistic content),
+      q(Not applicable),
+      ],
+   q(0485) => [
+      q(Zaza),
+      q(Dimili),
+      q(Dimli),
+      q(Kirdki),
+      q(Kirmanjki),
+      q(Zazaki),
+      ],
+};
+
+$Locale::Codes::Data{'language'}{'alias2id'} = {
+   q(abkhazian) => [
+      q(0002),
+      q(0),
+      ],
+   q(achinese) => [
+      q(0003),
+      q(0),
+      ],
+   q(acoli) => [
+      q(0004),
+      q(0),
+      ],
+   q(adangme) => [
+      q(0005),
+      q(0),
+      ],
+   q(adygei) => [
+      q(0006),
+      q(1),
+      ],
+   q(adyghe) => [
+      q(0006),
+      q(0),
+      ],
+   q(afar) => [
+      q(0001),
+      q(0),
+      ],
+   q(afrihili) => [
+      q(0008),
+      q(0),
+      ],
+   q(afrikaans) => [
+      q(0009),
+      q(0),
+      ],
+   q(afro-asiatic languages) => [
+      q(0007),
+      q(0),
+      ],
+   q(ainu) => [
+      q(0010),
+      q(0),
+      ],
+   q(akan) => [
+      q(0011),
+      q(0),
+      ],
+   q(akkadian) => [
+      q(0012),
+      q(0),
+      ],
+   q(albanian) => [
+      q(0013),
+      q(0),
+      ],
+   q(alemannic) => [
+      q(0166),
+      q(1),
+      ],
+   q(aleut) => [
+      q(0014),
+      q(0),
+      ],
+   q(algonquian languages) => [
+      q(0015),
+      q(0),
+      ],
+   q(alsatian) => [
+      q(0166),
+      q(2),
+      ],
+   q(altaic languages) => [
+      q(0445),
+      q(0),
+      ],
+   q(amharic) => [
+      q(0017),
+      q(0),
+      ],
+   q(angika) => [
+      q(0019),
+      q(0),
+      ],
+   q(apache languages) => [
+      q(0020),
+      q(0),
+      ],
+   q(arabic) => [
+      q(0021),
+      q(0),
+      ],
+   q(aragonese) => [
+      q(0023),
+      q(0),
+      ],
+   q(arapaho) => [
+      q(0026),
+      q(0),
+      ],
+   q(arawak) => [
+      q(0028),
+      q(0),
+      ],
+   q(armenian) => [
+      q(0024),
+      q(0),
+      ],
+   q(aromanian) => [
+      q(0362),
+      q(0),
+      ],
+   q(artificial languages) => [
+      q(0027),
+      q(0),
+      ],
+   q(arumanian) => [
+      q(0362),
+      q(1),
+      ],
+   q(assamese) => [
+      q(0029),
+      q(0),
+      ],
+   q(asturian) => [
+      q(0030),
+      q(0),
+      ],
+   q(asturleonese) => [
+      q(0030),
+      q(3),
+      ],
+   q(athapascan languages) => [
+      q(0031),
+      q(0),
+      ],
+   q(australian languages) => [
+      q(0032),
+      q(0),
+      ],
+   q(austronesian languages) => [
+      q(0271),
+      q(0),
+      ],
+   q(avaric) => [
+      q(0033),
+      q(0),
+      ],
+   q(avestan) => [
+      q(0034),
+      q(0),
+      ],
+   q(awadhi) => [
+      q(0035),
+      q(0),
+      ],
+   q(aymara) => [
+      q(0036),
+      q(0),
+      ],
+   q(azerbaijani) => [
+      q(0037),
+      q(0),
+      ],
+   q(bable) => [
+      q(0030),
+      q(1),
+      ],
+   q(balinese) => [
+      q(0043),
+      q(0),
+      ],
+   q(baltic languages) => [
+      q(0046),
+      q(0),
+      ],
+   q(baluchi) => [
+      q(0041),
+      q(0),
+      ],
+   q(bambara) => [
+      q(0042),
+      q(0),
+      ],
+   q(bamileke languages) => [
+      q(0039),
+      q(0),
+      ],
+   q(banda languages) => [
+      q(0038),
+      q(0),
+      ],
+   q(bantu (other)) => [
+      q(0058),
+      q(0),
+      ],
+   q(basa) => [
+      q(0045),
+      q(0),
+      ],
+   q(bashkir) => [
+      q(0040),
+      q(0),
+      ],
+   q(basque) => [
+      q(0044),
+      q(0),
+      ],
+   q(batak languages) => [
+      q(0062),
+      q(0),
+      ],
+   q(bedawiyet) => [
+      q(0047),
+      q(1),
+      ],
+   q(beja) => [
+      q(0047),
+      q(0),
+      ],
+   q(belarusian) => [
+      q(0048),
+      q(0),
+      ],
+   q(bemba) => [
+      q(0049),
+      q(0),
+      ],
+   q(bengali) => [
+      q(0050),
+      q(0),
+      ],
+   q(berber languages) => [
+      q(0051),
+      q(0),
+      ],
+   q(bhojpuri) => [
+      q(0052),
+      q(0),
+      ],
+   q(bihari languages) => [
+      q(0053),
+      q(0),
+      ],
+   q(bikol) => [
+      q(0054),
+      q(0),
+      ],
+   q(bilin) => [
+      q(0067),
+      q(1),
+      ],
+   q(bini) => [
+      q(0055),
+      q(0),
+      ],
+   q(bislama) => [
+      q(0056),
+      q(0),
+      ],
+   q(blin) => [
+      q(0067),
+      q(0),
+      ],
+   q(bliss) => [
+      q(0478),
+      q(2),
+      ],
+   q(blissymbolics) => [
+      q(0478),
+      q(1),
+      ],
+   q(blissymbols) => [
+      q(0478),
+      q(0),
+      ],
+   q(bokmal, norwegian) => [
+      q(0313),
+      q(0),
+      ],
+   q(bosnian) => [
+      q(0059),
+      q(0),
+      ],
+   q(braj) => [
+      q(0060),
+      q(0),
+      ],
+   q(breton) => [
+      q(0061),
+      q(0),
+      ],
+   q(buginese) => [
+      q(0064),
+      q(0),
+      ],
+   q(bulgarian) => [
+      q(0065),
+      q(0),
+      ],
+   q(buriat) => [
+      q(0063),
+      q(0),
+      ],
+   q(burmese) => [
+      q(0066),
+      q(0),
+      ],
+   q(caddo) => [
+      q(0068),
+      q(0),
+      ],
+   q(castilian) => [
+      q(0401),
+      q(1),
+      ],
+   q(catalan) => [
+      q(0071),
+      q(0),
+      ],
+   q(caucasian languages) => [
+      q(0072),
+      q(0),
+      ],
+   q(cebuano) => [
+      q(0073),
+      q(0),
+      ],
+   q(celtic languages) => [
+      q(0074),
+      q(0),
+      ],
+   q(central american indian languages) => [
+      q(0069),
+      q(0),
+      ],
+   q(central khmer) => [
+      q(0222),
+      q(0),
+      ],
+   q(chagatai) => [
+      q(0078),
+      q(0),
+      ],
+   q(chamic languages) => [
+      q(0089),
+      q(0),
+      ],
+   q(chamorro) => [
+      q(0075),
+      q(0),
+      ],
+   q(chechen) => [
+      q(0077),
+      q(0),
+      ],
+   q(cherokee) => [
+      q(0085),
+      q(0),
+      ],
+   q(chewa) => [
+      q(0321),
+      q(1),
+      ],
+   q(cheyenne) => [
+      q(0088),
+      q(0),
+      ],
+   q(chibcha) => [
+      q(0076),
+      q(0),
+      ],
+   q(chichewa) => [
+      q(0321),
+      q(0),
+      ],
+   q(chinese) => [
+      q(0079),
+      q(0),
+      ],
+   q(chinook jargon) => [
+      q(0082),
+      q(0),
+      ],
+   q(chipewyan) => [
+      q(0084),
+      q(0),
+      ],
+   q(choctaw) => [
+      q(0083),
+      q(0),
+      ],
+   q(chuang) => [
+      q(0480),
+      q(1),
+      ],
+   q(church slavic) => [
+      q(0086),
+      q(0),
+      ],
+   q(church slavonic) => [
+      q(0086),
+      q(2),
+      ],
+   q(chuukese) => [
+      q(0080),
+      q(0),
+      ],
+   q(chuvash) => [
+      q(0087),
+      q(0),
+      ],
+   q(classical nepal bhasa) => [
+      q(0320),
+      q(2),
+      ],
+   q(classical newari) => [
+      q(0320),
+      q(0),
+      ],
+   q(classical syriac) => [
+      q(0414),
+      q(0),
+      ],
+   q(cook islands maori) => [
+      q(0356),
+      q(1),
+      ],
+   q(coptic) => [
+      q(0090),
+      q(0),
+      ],
+   q(cornish) => [
+      q(0091),
+      q(0),
+      ],
+   q(corsican) => [
+      q(0092),
+      q(0),
+      ],
+   q(cree) => [
+      q(0096),
+      q(0),
+      ],
+   q(creek) => [
+      q(0293),
+      q(0),
+      ],
+   q(creoles and pidgins ) => [
+      q(0098),
+      q(0),
+      ],
+   q(creoles and pidgins, english based) => [
+      q(0093),
+      q(0),
+      ],
+   q(creoles and pidgins, french-based ) => [
+      q(0094),
+      q(0),
+      ],
+   q(creoles and pidgins, portuguese-based ) => [
+      q(0095),
+      q(0),
+      ],
+   q(crimean tatar) => [
+      q(0097),
+      q(0),
+      ],
+   q(crimean turkish) => [
+      q(0097),
+      q(1),
+      ],
+   q(croatian) => [
+      q(0181),
+      q(0),
+      ],
+   q(cushitic languages) => [
+      q(0100),
+      q(0),
+      ],
+   q(czech) => [
+      q(0101),
+      q(0),
+      ],
+   q(dakota) => [
+      q(0102),
+      q(0),
+      ],
+   q(danish) => [
+      q(0103),
+      q(0),
+      ],
+   q(dargwa) => [
+      q(0104),
+      q(0),
+      ],
+   q(delaware) => [
+      q(0106),
+      q(0),
+      ],
+   q(dene suline) => [
+      q(0084),
+      q(1),
+      ],
+   q(dhivehi) => [
+      q(0110),
+      q(1),
+      ],
+   q(dimili) => [
+      q(0485),
+      q(1),
+      ],
+   q(dimli) => [
+      q(0485),
+      q(2),
+      ],
+   q(dinka) => [
+      q(0109),
+      q(0),
+      ],
+   q(divehi) => [
+      q(0110),
+      q(0),
+      ],
+   q(dogri) => [
+      q(0111),
+      q(0),
+      ],
+   q(dogrib) => [
+      q(0108),
+      q(0),
+      ],
+   q(dravidian languages) => [
+      q(0112),
+      q(0),
+      ],
+   q(duala) => [
+      q(0114),
+      q(0),
+      ],
+   q(dutch) => [
+      q(0116),
+      q(0),
+      ],
+   q(dutch, middle (ca.1050-1350)) => [
+      q(0115),
+      q(0),
+      ],
+   q(dyula) => [
+      q(0117),
+      q(0),
+      ],
+   q(dzongkha) => [
+      q(0118),
+      q(0),
+      ],
+   q(eastern frisian) => [
+      q(0141),
+      q(0),
+      ],
+   q(edo) => [
+      q(0055),
+      q(1),
+      ],
+   q(efik) => [
+      q(0119),
+      q(0),
+      ],
+   q(egyptian (ancient)) => [
+      q(0120),
+      q(0),
+      ],
+   q(ekajuk) => [
+      q(0121),
+      q(0),
+      ],
+   q(elamite) => [
+      q(0122),
+      q(0),
+      ],
+   q(english) => [
+      q(0123),
+      q(0),
+      ],
+   q(english, middle (1100-1500)) => [
+      q(0124),
+      q(0),
+      ],
+   q(english, old (ca.450-1100)) => [
+      q(0018),
+      q(0),
+      ],
+   q(erzya) => [
+      q(0297),
+      q(0),
+      ],
+   q(esperanto) => [
+      q(0125),
+      q(0),
+      ],
+   q(estonian) => [
+      q(0126),
+      q(0),
+      ],
+   q(ewe) => [
+      q(0127),
+      q(0),
+      ],
+   q(ewondo) => [
+      q(0128),
+      q(0),
+      ],
+   q(fang) => [
+      q(0129),
+      q(0),
+      ],
+   q(fanti) => [
+      q(0131),
+      q(0),
+      ],
+   q(faroese) => [
+      q(0130),
+      q(0),
+      ],
+   q(fijian) => [
+      q(0132),
+      q(0),
+      ],
+   q(filipino) => [
+      q(0133),
+      q(0),
+      ],
+   q(finnish) => [
+      q(0134),
+      q(0),
+      ],
+   q(finno-ugrian languages) => [
+      q(0135),
+      q(0),
+      ],
+   q(flemish) => [
+      q(0116),
+      q(1),
+      ],
+   q(fon) => [
+      q(0136),
+      q(0),
+      ],
+   q(french) => [
+      q(0137),
+      q(0),
+      ],
+   q(french, middle (ca.1400-1600)) => [
+      q(0138),
+      q(0),
+      ],
+   q(french, old (842-ca.1400)) => [
+      q(0139),
+      q(0),
+      ],
+   q(friulian) => [
+      q(0144),
+      q(0),
+      ],
+   q(fulah) => [
+      q(0143),
+      q(0),
+      ],
+   q(ga) => [
+      q(0145),
+      q(0),
+      ],
+   q(gaelic) => [
+      q(0153),
+      q(0),
+      ],
+   q(galibi carib) => [
+      q(0070),
+      q(0),
+      ],
+   q(galician) => [
+      q(0155),
+      q(0),
+      ],
+   q(ganda) => [
+      q(0257),
+      q(0),
+      ],
+   q(gayo) => [
+      q(0146),
+      q(0),
+      ],
+   q(gbaya) => [
+      q(0147),
+      q(0),
+      ],
+   q(geez) => [
+      q(0151),
+      q(0),
+      ],
+   q(georgian) => [
+      q(0149),
+      q(0),
+      ],
+   q(german) => [
+      q(0150),
+      q(0),
+      ],
+   q(german, low) => [
+      q(0306),
+      q(2),
+      ],
+   q(german, middle high (ca.1050-1500)) => [
+      q(0157),
+      q(0),
+      ],
+   q(german, old high (ca.750-1050)) => [
+      q(0158),
+      q(0),
+      ],
+   q(germanic languages) => [
+      q(0148),
+      q(0),
+      ],
+   q(gikuyu) => [
+      q(0224),
+      q(1),
+      ],
+   q(gilbertese) => [
+      q(0152),
+      q(0),
+      ],
+   q(gondi) => [
+      q(0159),
+      q(0),
+      ],
+   q(gorontalo) => [
+      q(0160),
+      q(0),
+      ],
+   q(gothic) => [
+      q(0161),
+      q(0),
+      ],
+   q(grebo) => [
+      q(0162),
+      q(0),
+      ],
+   q(greek) => [
+      q(0164),
+      q(1),
+      ],
+   q(greek, ancient (to 1453)) => [
+      q(0163),
+      q(0),
+      ],
+   q(greek, modern (1453-)) => [
+      q(0164),
+      q(0),
+      ],
+   q(greenlandic) => [
+      q(0211),
+      q(1),
+      ],
+   q(guarani) => [
+      q(0165),
+      q(0),
+      ],
+   q(gujarati) => [
+      q(0167),
+      q(0),
+      ],
+   q(gwich'in) => [
+      q(0168),
+      q(0),
+      ],
+   q(haida) => [
+      q(0169),
+      q(0),
+      ],
+   q(haitian) => [
+      q(0170),
+      q(0),
+      ],
+   q(haitian creole) => [
+      q(0170),
+      q(1),
+      ],
+   q(hausa) => [
+      q(0171),
+      q(0),
+      ],
+   q(hawaiian) => [
+      q(0172),
+      q(0),
+      ],
+   q(hebrew) => [
+      q(0173),
+      q(0),
+      ],
+   q(herero) => [
+      q(0174),
+      q(0),
+      ],
+   q(hiligaynon) => [
+      q(0175),
+      q(0),
+      ],
+   q(himachali languages) => [
+      q(0176),
+      q(0),
+      ],
+   q(hindi) => [
+      q(0177),
+      q(0),
+      ],
+   q(hiri motu) => [
+      q(0180),
+      q(0),
+      ],
+   q(hittite) => [
+      q(0178),
+      q(0),
+      ],
+   q(hmong) => [
+      q(0179),
+      q(0),
+      ],
+   q(hungarian) => [
+      q(0183),
+      q(0),
+      ],
+   q(hupa) => [
+      q(0184),
+      q(0),
+      ],
+   q(iban) => [
+      q(0185),
+      q(0),
+      ],
+   q(icelandic) => [
+      q(0187),
+      q(0),
+      ],
+   q(ido) => [
+      q(0188),
+      q(0),
+      ],
+   q(igbo) => [
+      q(0186),
+      q(0),
+      ],
+   q(ijo languages) => [
+      q(0190),
+      q(0),
+      ],
+   q(iloko) => [
+      q(0193),
+      q(0),
+      ],
+   q(imperial aramaic (700-300 bce)) => [
+      q(0022),
+      q(1),
+      ],
+   q(inari sami) => [
+      q(0391),
+      q(0),
+      ],
+   q(indic languages) => [
+      q(0195),
+      q(0),
+      ],
+   q(indo-european languages) => [
+      q(0197),
+      q(0),
+      ],
+   q(indonesian) => [
+      q(0196),
+      q(0),
+      ],
+   q(ingush) => [
+      q(0198),
+      q(0),
+      ],
+   q(interlingua (international auxiliary language association)) => [
+      q(0194),
+      q(0),
+      ],
+   q(interlingue) => [
+      q(0192),
+      q(0),
+      ],
+   q(inuktitut) => [
+      q(0191),
+      q(0),
+      ],
+   q(inupiaq) => [
+      q(0199),
+      q(0),
+      ],
+   q(iranian languages) => [
+      q(0200),
+      q(0),
+      ],
+   q(irish) => [
+      q(0154),
+      q(0),
+      ],
+   q(irish, middle (900-1200)) => [
+      q(0278),
+      q(0),
+      ],
+   q(irish, old (to 900)) => [
+      q(0377),
+      q(0),
+      ],
+   q(iroquoian languages) => [
+      q(0201),
+      q(0),
+      ],
+   q(italian) => [
+      q(0202),
+      q(0),
+      ],
+   q(japanese) => [
+      q(0205),
+      q(0),
+      ],
+   q(javanese) => [
+      q(0203),
+      q(0),
+      ],
+   q(jingpho) => [
+      q(0210),
+      q(1),
+      ],
+   q(judeo-arabic) => [
+      q(0207),
+      q(0),
+      ],
+   q(judeo-persian) => [
+      q(0206),
+      q(0),
+      ],
+   q(kabardian) => [
+      q(0219),
+      q(0),
+      ],
+   q(kabyle) => [
+      q(0209),
+      q(0),
+      ],
+   q(kachin) => [
+      q(0210),
+      q(0),
+      ],
+   q(kalaallisut) => [
+      q(0211),
+      q(0),
+      ],
+   q(kalmyk) => [
+      q(0470),
+      q(0),
+      ],
+   q(kamba) => [
+      q(0212),
+      q(0),
+      ],
+   q(kannada) => [
+      q(0213),
+      q(0),
+      ],
+   q(kanuri) => [
+      q(0216),
+      q(0),
+      ],
+   q(kapampangan) => [
+      q(0337),
+      q(1),
+      ],
+   q(kara-kalpak) => [
+      q(0208),
+      q(0),
+      ],
+   q(karachay-balkar) => [
+      q(0234),
+      q(0),
+      ],
+   q(karelian) => [
+      q(0235),
+      q(0),
+      ],
+   q(karen languages) => [
+      q(0214),
+      q(0),
+      ],
+   q(kashmiri) => [
+      q(0215),
+      q(0),
+      ],
+   q(kashubian) => [
+      q(0099),
+      q(0),
+      ],
+   q(kawi) => [
+      q(0217),
+      q(0),
+      ],
+   q(kazakh) => [
+      q(0218),
+      q(0),
+      ],
+   q(khasi) => [
+      q(0220),
+      q(0),
+      ],
+   q(khoisan languages) => [
+      q(0221),
+      q(0),
+      ],
+   q(khotanese) => [
+      q(0223),
+      q(0),
+      ],
+   q(kikuyu) => [
+      q(0224),
+      q(0),
+      ],
+   q(kimbundu) => [
+      q(0227),
+      q(0),
+      ],
+   q(kinyarwanda) => [
+      q(0225),
+      q(0),
+      ],
+   q(kirdki) => [
+      q(0485),
+      q(3),
+      ],
+   q(kirghiz) => [
+      q(0226),
+      q(0),
+      ],
+   q(kirmanjki) => [
+      q(0485),
+      q(4),
+      ],
+   q(klingon) => [
+      q(0432),
+      q(0),
+      ],
+   q(komi) => [
+      q(0229),
+      q(0),
+      ],
+   q(kongo) => [
+      q(0230),
+      q(0),
+      ],
+   q(konkani) => [
+      q(0228),
+      q(0),
+      ],
+   q(korean) => [
+      q(0231),
+      q(0),
+      ],
+   q(kosraean) => [
+      q(0232),
+      q(0),
+      ],
+   q(kpelle) => [
+      q(0233),
+      q(0),
+      ],
+   q(kru languages) => [
+      q(0236),
+      q(0),
+      ],
+   q(kuanyama) => [
+      q(0238),
+      q(0),
+      ],
+   q(kumyk) => [
+      q(0239),
+      q(0),
+      ],
+   q(kurdish) => [
+      q(0240),
+      q(0),
+      ],
+   q(kurukh) => [
+      q(0237),
+      q(0),
+      ],
+   q(kutenai) => [
+      q(0241),
+      q(0),
+      ],
+   q(kwanyama) => [
+      q(0238),
+      q(1),
+      ],
+   q(kyrgyz) => [
+      q(0226),
+      q(1),
+      ],
+   q(ladino) => [
+      q(0242),
+      q(0),
+      ],
+   q(lahnda) => [
+      q(0243),
+      q(0),
+      ],
+   q(lamba) => [
+      q(0244),
+      q(0),
+      ],
+   q(land dayak languages) => [
+      q(0105),
+      q(0),
+      ],
+   q(lao) => [
+      q(0245),
+      q(0),
+      ],
+   q(latin) => [
+      q(0246),
+      q(0),
+      ],
+   q(latvian) => [
+      q(0247),
+      q(0),
+      ],
+   q(leonese) => [
+      q(0030),
+      q(2),
+      ],
+   q(letzeburgesch) => [
+      q(0254),
+      q(1),
+      ],
+   q(lezghian) => [
+      q(0248),
+      q(0),
+      ],
+   q(limburgan) => [
+      q(0249),
+      q(0),
+      ],
+   q(limburger) => [
+      q(0249),
+      q(1),
+      ],
+   q(limburgish) => [
+      q(0249),
+      q(2),
+      ],
+   q(lingala) => [
+      q(0250),
+      q(0),
+      ],
+   q(lithuanian) => [
+      q(0251),
+      q(0),
+      ],
+   q(lojban) => [
+      q(0204),
+      q(0),
+      ],
+   q(low german) => [
+      q(0306),
+      q(0),
+      ],
+   q(low saxon) => [
+      q(0306),
+      q(1),
+      ],
+   q(lower sorbian) => [
+      q(0113),
+      q(0),
+      ],
+   q(lozi) => [
+      q(0253),
+      q(0),
+      ],
+   q(luba-katanga) => [
+      q(0256),
+      q(0),
+      ],
+   q(luba-lulua) => [
+      q(0255),
+      q(0),
+      ],
+   q(luiseno) => [
+      q(0258),
+      q(0),
+      ],
+   q(lule sami) => [
+      q(0390),
+      q(0),
+      ],
+   q(lunda) => [
+      q(0259),
+      q(0),
+      ],
+   q(luo (kenya and tanzania)) => [
+      q(0260),
+      q(0),
+      ],
+   q(lushai) => [
+      q(0261),
+      q(0),
+      ],
+   q(luxembourgish) => [
+      q(0254),
+      q(0),
+      ],
+   q(macedo-romanian) => [
+      q(0362),
+      q(2),
+      ],
+   q(macedonian) => [
+      q(0262),
+      q(0),
+      ],
+   q(madurese) => [
+      q(0263),
+      q(0),
+      ],
+   q(magahi) => [
+      q(0264),
+      q(0),
+      ],
+   q(maithili) => [
+      q(0266),
+      q(0),
+      ],
+   q(makasar) => [
+      q(0267),
+      q(0),
+      ],
+   q(malagasy) => [
+      q(0283),
+      q(0),
+      ],
+   q(malay) => [
+      q(0274),
+      q(0),
+      ],
+   q(malayalam) => [
+      q(0268),
+      q(0),
+      ],
+   q(maldivian) => [
+      q(0110),
+      q(2),
+      ],
+   q(maltese) => [
+      q(0284),
+      q(0),
+      ],
+   q(manchu) => [
+      q(0285),
+      q(0),
+      ],
+   q(mandar) => [
+      q(0276),
+      q(0),
+      ],
+   q(mandingo) => [
+      q(0269),
+      q(0),
+      ],
+   q(manipuri) => [
+      q(0286),
+      q(0),
+      ],
+   q(manobo languages) => [
+      q(0287),
+      q(0),
+      ],
+   q(manx) => [
+      q(0156),
+      q(0),
+      ],
+   q(maori) => [
+      q(0270),
+      q(0),
+      ],
+   q(mapuche) => [
+      q(0025),
+      q(1),
+      ],
+   q(mapudungun) => [
+      q(0025),
+      q(0),
+      ],
+   q(marathi) => [
+      q(0272),
+      q(0),
+      ],
+   q(mari) => [
+      q(0081),
+      q(0),
+      ],
+   q(marshallese) => [
+      q(0265),
+      q(0),
+      ],
+   q(marwari) => [
+      q(0295),
+      q(0),
+      ],
+   q(masai) => [
+      q(0273),
+      q(0),
+      ],
+   q(mayan languages) => [
+      q(0296),
+      q(0),
+      ],
+   q(mende) => [
+      q(0277),
+      q(0),
+      ],
+   q(mi'kmaq) => [
+      q(0279),
+      q(0),
+      ],
+   q(micmac) => [
+      q(0279),
+      q(1),
+      ],
+   q(minangkabau) => [
+      q(0280),
+      q(0),
+      ],
+   q(mirandese) => [
+      q(0294),
+      q(0),
+      ],
+   q(mohawk) => [
+      q(0288),
+      q(0),
+      ],
+   q(moksha) => [
+      q(0275),
+      q(0),
+      ],
+   q(moldavian) => [
+      q(0360),
+      q(1),
+      ],
+   q(moldovan) => [
+      q(0360),
+      q(2),
+      ],
+   q(mon-khmer languages) => [
+      q(0282),
+      q(0),
+      ],
+   q(mong) => [
+      q(0179),
+      q(1),
+      ],
+   q(mongo) => [
+      q(0252),
+      q(0),
+      ],
+   q(mongolian) => [
+      q(0289),
+      q(0),
+      ],
+   q(mossi) => [
+      q(0290),
+      q(0),
+      ],
+   q(multiple languages) => [
+      q(0291),
+      q(0),
+      ],
+   q(munda languages) => [
+      q(0292),
+      q(0),
+      ],
+   q(n'ko) => [
+      q(0317),
+      q(0),
+      ],
+   q(nahuatl languages) => [
+      q(0298),
+      q(0),
+      ],
+   q(nauru) => [
+      q(0301),
+      q(0),
+      ],
+   q(navaho) => [
+      q(0302),
+      q(1),
+      ],
+   q(navajo) => [
+      q(0302),
+      q(0),
+      ],
+   q(ndebele, north) => [
+      q(0304),
+      q(0),
+      ],
+   q(ndebele, south) => [
+      q(0303),
+      q(0),
+      ],
+   q(ndonga) => [
+      q(0305),
+      q(0),
+      ],
+   q(neapolitan) => [
+      q(0300),
+      q(0),
+      ],
+   q(nepal bhasa) => [
+      q(0308),
+      q(0),
+      ],
+   q(nepali) => [
+      q(0307),
+      q(0),
+      ],
+   q(newari) => [
+      q(0308),
+      q(1),
+      ],
+   q(nias) => [
+      q(0309),
+      q(0),
+      ],
+   q(niger-kordofanian languages) => [
+      q(0310),
+      q(0),
+      ],
+   q(nilo-saharan languages) => [
+      q(0406),
+      q(0),
+      ],
+   q(niuean) => [
+      q(0311),
+      q(0),
+      ],
+   q(no linguistic content) => [
+      q(0484),
+      q(0),
+      ],
+   q(nogai) => [
+      q(0314),
+      q(0),
+      ],
+   q(norse, old) => [
+      q(0315),
+      q(0),
+      ],
+   q(north american indian languages) => [
+      q(0299),
+      q(0),
+      ],
+   q(north ndebele) => [
+      q(0304),
+      q(1),
+      ],
+   q(northern frisian) => [
+      q(0140),
+      q(0),
+      ],
+   q(northern sami) => [
+      q(0388),
+      q(0),
+      ],
+   q(northern sotho) => [
+      q(0318),
+      q(2),
+      ],
+   q(norwegian) => [
+      q(0316),
+      q(0),
+      ],
+   q(norwegian bokmal) => [
+      q(0313),
+      q(1),
+      ],
+   q(norwegian nynorsk) => [
+      q(0312),
+      q(0),
+      ],
+   q(not applicable) => [
+      q(0484),
+      q(1),
+      ],
+   q(nubian languages) => [
+      q(0319),
+      q(0),
+      ],
+   q(nuosu) => [
+      q(0189),
+      q(1),
+      ],
+   q(nyamwezi) => [
+      q(0322),
+      q(0),
+      ],
+   q(nyanja) => [
+      q(0321),
+      q(2),
+      ],
+   q(nyankole) => [
+      q(0323),
+      q(0),
+      ],
+   q(nynorsk, norwegian) => [
+      q(0312),
+      q(1),
+      ],
+   q(nyoro) => [
+      q(0324),
+      q(0),
+      ],
+   q(nzima) => [
+      q(0325),
+      q(0),
+      ],
+   q(occidental) => [
+      q(0192),
+      q(1),
+      ],
+   q(occitan (post 1500)) => [
+      q(0326),
+      q(0),
+      ],
+   q(official aramaic (700-300 bce)) => [
+      q(0022),
+      q(0),
+      ],
+   q(oirat) => [
+      q(0470),
+      q(1),
+      ],
+   q(ojibwa) => [
+      q(0327),
+      q(0),
+      ],
+   q(old bulgarian) => [
+      q(0086),
+      q(3),
+      ],
+   q(old church slavonic) => [
+      q(0086),
+      q(4),
+      ],
+   q(old newari) => [
+      q(0320),
+      q(1),
+      ],
+   q(old slavonic) => [
+      q(0086),
+      q(1),
+      ],
+   q(oriya) => [
+      q(0328),
+      q(0),
+      ],
+   q(oromo) => [
+      q(0329),
+      q(0),
+      ],
+   q(osage) => [
+      q(0330),
+      q(0),
+      ],
+   q(ossetian) => [
+      q(0331),
+      q(0),
+      ],
+   q(ossetic) => [
+      q(0331),
+      q(1),
+      ],
+   q(otomian languages) => [
+      q(0333),
+      q(0),
+      ],
+   q(pahlavi) => [
+      q(0336),
+      q(0),
+      ],
+   q(palauan) => [
+      q(0340),
+      q(0),
+      ],
+   q(pali) => [
+      q(0345),
+      q(0),
+      ],
+   q(pampanga) => [
+      q(0337),
+      q(0),
+      ],
+   q(pangasinan) => [
+      q(0335),
+      q(0),
+      ],
+   q(panjabi) => [
+      q(0338),
+      q(0),
+      ],
+   q(papiamento) => [
+      q(0339),
+      q(0),
+      ],
+   q(papuan languages) => [
+      q(0334),
+      q(0),
+      ],
+   q(pashto) => [
+      q(0351),
+      q(1),
+      ],
+   q(pedi) => [
+      q(0318),
+      q(0),
+      ],
+   q(persian) => [
+      q(0342),
+      q(0),
+      ],
+   q(persian, old (ca.600-400 b.c.)) => [
+      q(0341),
+      q(0),
+      ],
+   q(philippine languages) => [
+      q(0343),
+      q(0),
+      ],
+   q(phoenician) => [
+      q(0344),
+      q(0),
+      ],
+   q(pilipino) => [
+      q(0133),
+      q(1),
+      ],
+   q(pohnpeian) => [
+      q(0347),
+      q(0),
+      ],
+   q(polish) => [
+      q(0346),
+      q(0),
+      ],
+   q(portuguese) => [
+      q(0348),
+      q(0),
+      ],
+   q(prakrit languages) => [
+      q(0349),
+      q(0),
+      ],
+   q(provencal) => [
+      q(0326),
+      q(1),
+      ],
+   q(provencal, old (to 1500)) => [
+      q(0350),
+      q(0),
+      ],
+   q(punjabi) => [
+      q(0338),
+      q(1),
+      ],
+   q(pushto) => [
+      q(0351),
+      q(0),
+      ],
+   q(quechua) => [
+      q(0353),
+      q(0),
+      ],
+   q(rajasthani) => [
+      q(0354),
+      q(0),
+      ],
+   q(rapanui) => [
+      q(0355),
+      q(0),
+      ],
+   q(rarotongan) => [
+      q(0356),
+      q(0),
+      ],
+   q(reserved for local use) => [
+      q(0352),
+      q(0),
+      ],
+   q(romance languages) => [
+      q(0357),
+      q(0),
+      ],
+   q(romanian) => [
+      q(0360),
+      q(0),
+      ],
+   q(romansh) => [
+      q(0358),
+      q(0),
+      ],
+   q(romany) => [
+      q(0359),
+      q(0),
+      ],
+   q(rundi) => [
+      q(0361),
+      q(0),
+      ],
+   q(russian) => [
+      q(0363),
+      q(0),
+      ],
+   q(sakan) => [
+      q(0223),
+      q(1),
+      ],
+   q(salishan languages) => [
+      q(0368),
+      q(0),
+      ],
+   q(samaritan aramaic) => [
+      q(0369),
+      q(0),
+      ],
+   q(sami languages) => [
+      q(0389),
+      q(0),
+      ],
+   q(samoan) => [
+      q(0392),
+      q(0),
+      ],
+   q(sandawe) => [
+      q(0364),
+      q(0),
+      ],
+   q(sango) => [
+      q(0365),
+      q(0),
+      ],
+   q(sanskrit) => [
+      q(0370),
+      q(0),
+      ],
+   q(santali) => [
+      q(0372),
+      q(0),
+      ],
+   q(sardinian) => [
+      q(0402),
+      q(0),
+      ],
+   q(sasak) => [
+      q(0371),
+      q(0),
+      ],
+   q(saxon, low) => [
+      q(0306),
+      q(3),
+      ],
+   q(scots) => [
+      q(0374),
+      q(0),
+      ],
+   q(scottish gaelic) => [
+      q(0153),
+      q(1),
+      ],
+   q(selkup) => [
+      q(0375),
+      q(0),
+      ],
+   q(semitic languages) => [
+      q(0376),
+      q(0),
+      ],
+   q(sepedi) => [
+      q(0318),
+      q(1),
+      ],
+   q(serbian) => [
+      q(0404),
+      q(0),
+      ],
+   q(serer) => [
+      q(0405),
+      q(0),
+      ],
+   q(shan) => [
+      q(0379),
+      q(0),
+      ],
+   q(shona) => [
+      q(0394),
+      q(0),
+      ],
+   q(sichuan yi) => [
+      q(0189),
+      q(0),
+      ],
+   q(sicilian) => [
+      q(0373),
+      q(0),
+      ],
+   q(sidamo) => [
+      q(0380),
+      q(0),
+      ],
+   q(sign languages) => [
+      q(0378),
+      q(0),
+      ],
+   q(siksika) => [
+      q(0057),
+      q(0),
+      ],
+   q(sindhi) => [
+      q(0395),
+      q(0),
+      ],
+   q(sinhala) => [
+      q(0381),
+      q(0),
+      ],
+   q(sinhalese) => [
+      q(0381),
+      q(1),
+      ],
+   q(sino-tibetan languages) => [
+      q(0383),
+      q(0),
+      ],
+   q(siouan languages) => [
+      q(0382),
+      q(0),
+      ],
+   q(skolt sami) => [
+      q(0393),
+      q(0),
+      ],
+   q(slave (athapascan)) => [
+      q(0107),
+      q(0),
+      ],
+   q(slavic languages) => [
+      q(0384),
+      q(0),
+      ],
+   q(slovak) => [
+      q(0385),
+      q(0),
+      ],
+   q(slovenian) => [
+      q(0386),
+      q(0),
+      ],
+   q(sogdian) => [
+      q(0397),
+      q(0),
+      ],
+   q(somali) => [
+      q(0398),
+      q(0),
+      ],
+   q(songhai languages) => [
+      q(0399),
+      q(0),
+      ],
+   q(soninke) => [
+      q(0396),
+      q(0),
+      ],
+   q(sorbian languages) => [
+      q(0467),
+      q(0),
+      ],
+   q(sotho, southern) => [
+      q(0400),
+      q(0),
+      ],
+   q(south american indian (other)) => [
+      q(0367),
+      q(0),
+      ],
+   q(south ndebele) => [
+      q(0303),
+      q(1),
+      ],
+   q(southern altai) => [
+      q(0016),
+      q(0),
+      ],
+   q(southern sami) => [
+      q(0387),
+      q(0),
+      ],
+   q(spanish) => [
+      q(0401),
+      q(0),
+      ],
+   q(sranan tongo) => [
+      q(0403),
+      q(0),
+      ],
+   q(sukuma) => [
+      q(0408),
+      q(0),
+      ],
+   q(sumerian) => [
+      q(0411),
+      q(0),
+      ],
+   q(sundanese) => [
+      q(0409),
+      q(0),
+      ],
+   q(susu) => [
+      q(0410),
+      q(0),
+      ],
+   q(swahili) => [
+      q(0412),
+      q(0),
+      ],
+   q(swati) => [
+      q(0407),
+      q(0),
+      ],
+   q(swedish) => [
+      q(0413),
+      q(0),
+      ],
+   q(swiss german) => [
+      q(0166),
+      q(0),
+      ],
+   q(syriac) => [
+      q(0415),
+      q(0),
+      ],
+   q(tagalog) => [
+      q(0425),
+      q(0),
+      ],
+   q(tahitian) => [
+      q(0416),
+      q(0),
+      ],
+   q(tai languages) => [
+      q(0417),
+      q(0),
+      ],
+   q(tajik) => [
+      q(0424),
+      q(0),
+      ],
+   q(tamashek) => [
+      q(0434),
+      q(0),
+      ],
+   q(tamil) => [
+      q(0418),
+      q(0),
+      ],
+   q(tatar) => [
+      q(0419),
+      q(0),
+      ],
+   q(telugu) => [
+      q(0420),
+      q(0),
+      ],
+   q(tereno) => [
+      q(0422),
+      q(0),
+      ],
+   q(tetum) => [
+      q(0423),
+      q(0),
+      ],
+   q(thai) => [
+      q(0426),
+      q(0),
+      ],
+   q(tibetan) => [
+      q(0427),
+      q(0),
+      ],
+   q(tigre) => [
+      q(0428),
+      q(0),
+      ],
+   q(tigrinya) => [
+      q(0429),
+      q(0),
+      ],
+   q(timne) => [
+      q(0421),
+      q(0),
+      ],
+   q(tiv) => [
+      q(0430),
+      q(0),
+      ],
+   q(tlhingan-hol) => [
+      q(0432),
+      q(1),
+      ],
+   q(tlingit) => [
+      q(0433),
+      q(0),
+      ],
+   q(tok pisin) => [
+      q(0437),
+      q(0),
+      ],
+   q(tokelau) => [
+      q(0431),
+      q(0),
+      ],
+   q(tonga) => [
+      q(0436),
+      q(1),
+      ],
+   q(tonga (nyasa)) => [
+      q(0435),
+      q(0),
+      ],
+   q(tonga (tonga islands)) => [
+      q(0436),
+      q(0),
+      ],
+   q(tsimshian) => [
+      q(0438),
+      q(0),
+      ],
+   q(tsonga) => [
+      q(0440),
+      q(0),
+      ],
+   q(tswana) => [
+      q(0439),
+      q(0),
+      ],
+   q(tumbuka) => [
+      q(0442),
+      q(0),
+      ],
+   q(tupi languages) => [
+      q(0443),
+      q(0),
+      ],
+   q(turkish) => [
+      q(0444),
+      q(0),
+      ],
+   q(turkish, ottoman (1500-1928)) => [
+      q(0332),
+      q(0),
+      ],
+   q(turkmen) => [
+      q(0441),
+      q(0),
+      ],
+   q(tuvalu) => [
+      q(0446),
+      q(0),
+      ],
+   q(tuvinian) => [
+      q(0448),
+      q(0),
+      ],
+   q(twi) => [
+      q(0447),
+      q(0),
+      ],
+   q(udmurt) => [
+      q(0449),
+      q(0),
+      ],
+   q(ugaritic) => [
+      q(0450),
+      q(0),
+      ],
+   q(uighur) => [
+      q(0451),
+      q(0),
+      ],
+   q(ukrainian) => [
+      q(0452),
+      q(0),
+      ],
+   q(umbundu) => [
+      q(0453),
+      q(0),
+      ],
+   q(uncoded languages) => [
+      q(0281),
+      q(0),
+      ],
+   q(undetermined) => [
+      q(0454),
+      q(0),
+      ],
+   q(upper sorbian) => [
+      q(0182),
+      q(0),
+      ],
+   q(urdu) => [
+      q(0455),
+      q(0),
+      ],
+   q(uyghur) => [
+      q(0451),
+      q(1),
+      ],
+   q(uzbek) => [
+      q(0456),
+      q(0),
+      ],
+   q(vai) => [
+      q(0457),
+      q(0),
+      ],
+   q(valencian) => [
+      q(0071),
+      q(1),
+      ],
+   q(venda) => [
+      q(0458),
+      q(0),
+      ],
+   q(vietnamese) => [
+      q(0459),
+      q(0),
+      ],
+   q(volapuk) => [
+      q(0460),
+      q(0),
+      ],
+   q(votic) => [
+      q(0461),
+      q(0),
+      ],
+   q(wakashan languages) => [
+      q(0462),
+      q(0),
+      ],
+   q(walamo) => [
+      q(0463),
+      q(0),
+      ],
+   q(walloon) => [
+      q(0468),
+      q(0),
+      ],
+   q(waray) => [
+      q(0464),
+      q(0),
+      ],
+   q(washo) => [
+      q(0465),
+      q(0),
+      ],
+   q(welsh) => [
+      q(0466),
+      q(0),
+      ],
+   q(western frisian) => [
+      q(0142),
+      q(0),
+      ],
+   q(western pahari languages) => [
+      q(0176),
+      q(1),
+      ],
+   q(wolof) => [
+      q(0469),
+      q(0),
+      ],
+   q(xhosa) => [
+      q(0471),
+      q(0),
+      ],
+   q(yakut) => [
+      q(0366),
+      q(0),
+      ],
+   q(yao) => [
+      q(0472),
+      q(0),
+      ],
+   q(yapese) => [
+      q(0473),
+      q(0),
+      ],
+   q(yiddish) => [
+      q(0474),
+      q(0),
+      ],
+   q(yoruba) => [
+      q(0475),
+      q(0),
+      ],
+   q(yupik languages) => [
+      q(0476),
+      q(0),
+      ],
+   q(zande languages) => [
+      q(0481),
+      q(0),
+      ],
+   q(zapotec) => [
+      q(0477),
+      q(0),
+      ],
+   q(zaza) => [
+      q(0485),
+      q(0),
+      ],
+   q(zazaki) => [
+      q(0485),
+      q(5),
+      ],
+   q(zenaga) => [
+      q(0479),
+      q(0),
+      ],
+   q(zhuang) => [
+      q(0480),
+      q(0),
+      ],
+   q(zulu) => [
+      q(0482),
+      q(0),
+      ],
+   q(zuni) => [
+      q(0483),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'language'}{'code2id'} = {
+   q(alpha2) => {
+      q(aa) => [
+         q(0001),
+         q(0),
+         ],
+      q(ab) => [
+         q(0002),
+         q(0),
+         ],
+      q(ae) => [
+         q(0034),
+         q(0),
+         ],
+      q(af) => [
+         q(0009),
+         q(0),
+         ],
+      q(ak) => [
+         q(0011),
+         q(0),
+         ],
+      q(am) => [
+         q(0017),
+         q(0),
+         ],
+      q(an) => [
+         q(0023),
+         q(0),
+         ],
+      q(ar) => [
+         q(0021),
+         q(0),
+         ],
+      q(as) => [
+         q(0029),
+         q(0),
+         ],
+      q(av) => [
+         q(0033),
+         q(0),
+         ],
+      q(ay) => [
+         q(0036),
+         q(0),
+         ],
+      q(az) => [
+         q(0037),
+         q(0),
+         ],
+      q(ba) => [
+         q(0040),
+         q(0),
+         ],
+      q(be) => [
+         q(0048),
+         q(0),
+         ],
+      q(bg) => [
+         q(0065),
+         q(0),
+         ],
+      q(bh) => [
+         q(0053),
+         q(0),
+         ],
+      q(bi) => [
+         q(0056),
+         q(0),
+         ],
+      q(bm) => [
+         q(0042),
+         q(0),
+         ],
+      q(bn) => [
+         q(0050),
+         q(0),
+         ],
+      q(bo) => [
+         q(0427),
+         q(0),
+         ],
+      q(br) => [
+         q(0061),
+         q(0),
+         ],
+      q(bs) => [
+         q(0059),
+         q(0),
+         ],
+      q(ca) => [
+         q(0071),
+         q(0),
+         ],
+      q(ce) => [
+         q(0077),
+         q(0),
+         ],
+      q(ch) => [
+         q(0075),
+         q(0),
+         ],
+      q(co) => [
+         q(0092),
+         q(0),
+         ],
+      q(cr) => [
+         q(0096),
+         q(0),
+         ],
+      q(cs) => [
+         q(0101),
+         q(0),
+         ],
+      q(cu) => [
+         q(0086),
+         q(0),
+         ],
+      q(cv) => [
+         q(0087),
+         q(0),
+         ],
+      q(cy) => [
+         q(0466),
+         q(0),
+         ],
+      q(da) => [
+         q(0103),
+         q(0),
+         ],
+      q(de) => [
+         q(0150),
+         q(0),
+         ],
+      q(dv) => [
+         q(0110),
+         q(0),
+         ],
+      q(dz) => [
+         q(0118),
+         q(0),
+         ],
+      q(ee) => [
+         q(0127),
+         q(0),
+         ],
+      q(el) => [
+         q(0164),
+         q(0),
+         ],
+      q(en) => [
+         q(0123),
+         q(0),
+         ],
+      q(eo) => [
+         q(0125),
+         q(0),
+         ],
+      q(es) => [
+         q(0401),
+         q(0),
+         ],
+      q(et) => [
+         q(0126),
+         q(0),
+         ],
+      q(eu) => [
+         q(0044),
+         q(0),
+         ],
+      q(fa) => [
+         q(0342),
+         q(0),
+         ],
+      q(ff) => [
+         q(0143),
+         q(0),
+         ],
+      q(fi) => [
+         q(0134),
+         q(0),
+         ],
+      q(fj) => [
+         q(0132),
+         q(0),
+         ],
+      q(fo) => [
+         q(0130),
+         q(0),
+         ],
+      q(fr) => [
+         q(0137),
+         q(0),
+         ],
+      q(fy) => [
+         q(0142),
+         q(0),
+         ],
+      q(ga) => [
+         q(0154),
+         q(0),
+         ],
+      q(gd) => [
+         q(0153),
+         q(0),
+         ],
+      q(gl) => [
+         q(0155),
+         q(0),
+         ],
+      q(gn) => [
+         q(0165),
+         q(0),
+         ],
+      q(gu) => [
+         q(0167),
+         q(0),
+         ],
+      q(gv) => [
+         q(0156),
+         q(0),
+         ],
+      q(ha) => [
+         q(0171),
+         q(0),
+         ],
+      q(he) => [
+         q(0173),
+         q(0),
+         ],
+      q(hi) => [
+         q(0177),
+         q(0),
+         ],
+      q(ho) => [
+         q(0180),
+         q(0),
+         ],
+      q(hr) => [
+         q(0181),
+         q(0),
+         ],
+      q(ht) => [
+         q(0170),
+         q(0),
+         ],
+      q(hu) => [
+         q(0183),
+         q(0),
+         ],
+      q(hy) => [
+         q(0024),
+         q(0),
+         ],
+      q(hz) => [
+         q(0174),
+         q(0),
+         ],
+      q(ia) => [
+         q(0194),
+         q(0),
+         ],
+      q(id) => [
+         q(0196),
+         q(0),
+         ],
+      q(ie) => [
+         q(0192),
+         q(0),
+         ],
+      q(ig) => [
+         q(0186),
+         q(0),
+         ],
+      q(ii) => [
+         q(0189),
+         q(0),
+         ],
+      q(ik) => [
+         q(0199),
+         q(0),
+         ],
+      q(io) => [
+         q(0188),
+         q(0),
+         ],
+      q(is) => [
+         q(0187),
+         q(0),
+         ],
+      q(it) => [
+         q(0202),
+         q(0),
+         ],
+      q(iu) => [
+         q(0191),
+         q(0),
+         ],
+      q(ja) => [
+         q(0205),
+         q(0),
+         ],
+      q(jv) => [
+         q(0203),
+         q(0),
+         ],
+      q(ka) => [
+         q(0149),
+         q(0),
+         ],
+      q(kg) => [
+         q(0230),
+         q(0),
+         ],
+      q(ki) => [
+         q(0224),
+         q(0),
+         ],
+      q(kj) => [
+         q(0238),
+         q(0),
+         ],
+      q(kk) => [
+         q(0218),
+         q(0),
+         ],
+      q(kl) => [
+         q(0211),
+         q(0),
+         ],
+      q(km) => [
+         q(0222),
+         q(0),
+         ],
+      q(kn) => [
+         q(0213),
+         q(0),
+         ],
+      q(ko) => [
+         q(0231),
+         q(0),
+         ],
+      q(kr) => [
+         q(0216),
+         q(0),
+         ],
+      q(ks) => [
+         q(0215),
+         q(0),
+         ],
+      q(ku) => [
+         q(0240),
+         q(0),
+         ],
+      q(kv) => [
+         q(0229),
+         q(0),
+         ],
+      q(kw) => [
+         q(0091),
+         q(0),
+         ],
+      q(ky) => [
+         q(0226),
+         q(0),
+         ],
+      q(la) => [
+         q(0246),
+         q(0),
+         ],
+      q(lb) => [
+         q(0254),
+         q(0),
+         ],
+      q(lg) => [
+         q(0257),
+         q(0),
+         ],
+      q(li) => [
+         q(0249),
+         q(0),
+         ],
+      q(ln) => [
+         q(0250),
+         q(0),
+         ],
+      q(lo) => [
+         q(0245),
+         q(0),
+         ],
+      q(lt) => [
+         q(0251),
+         q(0),
+         ],
+      q(lu) => [
+         q(0256),
+         q(0),
+         ],
+      q(lv) => [
+         q(0247),
+         q(0),
+         ],
+      q(mg) => [
+         q(0283),
+         q(0),
+         ],
+      q(mh) => [
+         q(0265),
+         q(0),
+         ],
+      q(mi) => [
+         q(0270),
+         q(0),
+         ],
+      q(mk) => [
+         q(0262),
+         q(0),
+         ],
+      q(ml) => [
+         q(0268),
+         q(0),
+         ],
+      q(mn) => [
+         q(0289),
+         q(0),
+         ],
+      q(mr) => [
+         q(0272),
+         q(0),
+         ],
+      q(ms) => [
+         q(0274),
+         q(0),
+         ],
+      q(mt) => [
+         q(0284),
+         q(0),
+         ],
+      q(my) => [
+         q(0066),
+         q(0),
+         ],
+      q(na) => [
+         q(0301),
+         q(0),
+         ],
+      q(nb) => [
+         q(0313),
+         q(0),
+         ],
+      q(nd) => [
+         q(0304),
+         q(0),
+         ],
+      q(ne) => [
+         q(0307),
+         q(0),
+         ],
+      q(ng) => [
+         q(0305),
+         q(0),
+         ],
+      q(nl) => [
+         q(0116),
+         q(0),
+         ],
+      q(nn) => [
+         q(0312),
+         q(0),
+         ],
+      q(no) => [
+         q(0316),
+         q(0),
+         ],
+      q(nr) => [
+         q(0303),
+         q(0),
+         ],
+      q(nv) => [
+         q(0302),
+         q(0),
+         ],
+      q(ny) => [
+         q(0321),
+         q(0),
+         ],
+      q(oc) => [
+         q(0326),
+         q(0),
+         ],
+      q(oj) => [
+         q(0327),
+         q(0),
+         ],
+      q(om) => [
+         q(0329),
+         q(0),
+         ],
+      q(or) => [
+         q(0328),
+         q(0),
+         ],
+      q(os) => [
+         q(0331),
+         q(0),
+         ],
+      q(pa) => [
+         q(0338),
+         q(0),
+         ],
+      q(pi) => [
+         q(0345),
+         q(0),
+         ],
+      q(pl) => [
+         q(0346),
+         q(0),
+         ],
+      q(ps) => [
+         q(0351),
+         q(0),
+         ],
+      q(pt) => [
+         q(0348),
+         q(0),
+         ],
+      q(qu) => [
+         q(0353),
+         q(0),
+         ],
+      q(rm) => [
+         q(0358),
+         q(0),
+         ],
+      q(rn) => [
+         q(0361),
+         q(0),
+         ],
+      q(ro) => [
+         q(0360),
+         q(0),
+         ],
+      q(ru) => [
+         q(0363),
+         q(0),
+         ],
+      q(rw) => [
+         q(0225),
+         q(0),
+         ],
+      q(sa) => [
+         q(0370),
+         q(0),
+         ],
+      q(sc) => [
+         q(0402),
+         q(0),
+         ],
+      q(sd) => [
+         q(0395),
+         q(0),
+         ],
+      q(se) => [
+         q(0388),
+         q(0),
+         ],
+      q(sg) => [
+         q(0365),
+         q(0),
+         ],
+      q(si) => [
+         q(0381),
+         q(0),
+         ],
+      q(sk) => [
+         q(0385),
+         q(0),
+         ],
+      q(sl) => [
+         q(0386),
+         q(0),
+         ],
+      q(sm) => [
+         q(0392),
+         q(0),
+         ],
+      q(sn) => [
+         q(0394),
+         q(0),
+         ],
+      q(so) => [
+         q(0398),
+         q(0),
+         ],
+      q(sq) => [
+         q(0013),
+         q(0),
+         ],
+      q(sr) => [
+         q(0404),
+         q(0),
+         ],
+      q(ss) => [
+         q(0407),
+         q(0),
+         ],
+      q(st) => [
+         q(0400),
+         q(0),
+         ],
+      q(su) => [
+         q(0409),
+         q(0),
+         ],
+      q(sv) => [
+         q(0413),
+         q(0),
+         ],
+      q(sw) => [
+         q(0412),
+         q(0),
+         ],
+      q(ta) => [
+         q(0418),
+         q(0),
+         ],
+      q(te) => [
+         q(0420),
+         q(0),
+         ],
+      q(tg) => [
+         q(0424),
+         q(0),
+         ],
+      q(th) => [
+         q(0426),
+         q(0),
+         ],
+      q(ti) => [
+         q(0429),
+         q(0),
+         ],
+      q(tk) => [
+         q(0441),
+         q(0),
+         ],
+      q(tl) => [
+         q(0425),
+         q(0),
+         ],
+      q(tn) => [
+         q(0439),
+         q(0),
+         ],
+      q(to) => [
+         q(0436),
+         q(0),
+         ],
+      q(tr) => [
+         q(0444),
+         q(0),
+         ],
+      q(ts) => [
+         q(0440),
+         q(0),
+         ],
+      q(tt) => [
+         q(0419),
+         q(0),
+         ],
+      q(tw) => [
+         q(0447),
+         q(0),
+         ],
+      q(ty) => [
+         q(0416),
+         q(0),
+         ],
+      q(ug) => [
+         q(0451),
+         q(0),
+         ],
+      q(uk) => [
+         q(0452),
+         q(0),
+         ],
+      q(ur) => [
+         q(0455),
+         q(0),
+         ],
+      q(uz) => [
+         q(0456),
+         q(0),
+         ],
+      q(ve) => [
+         q(0458),
+         q(0),
+         ],
+      q(vi) => [
+         q(0459),
+         q(0),
+         ],
+      q(vo) => [
+         q(0460),
+         q(0),
+         ],
+      q(wa) => [
+         q(0468),
+         q(0),
+         ],
+      q(wo) => [
+         q(0469),
+         q(0),
+         ],
+      q(xh) => [
+         q(0471),
+         q(0),
+         ],
+      q(yi) => [
+         q(0474),
+         q(0),
+         ],
+      q(yo) => [
+         q(0475),
+         q(0),
+         ],
+      q(za) => [
+         q(0480),
+         q(0),
+         ],
+      q(zh) => [
+         q(0079),
+         q(0),
+         ],
+      q(zu) => [
+         q(0482),
+         q(0),
+         ],
+      },
+   q(alpha3) => {
+      q(aar) => [
+         q(0001),
+         q(0),
+         ],
+      q(abk) => [
+         q(0002),
+         q(0),
+         ],
+      q(ace) => [
+         q(0003),
+         q(0),
+         ],
+      q(ach) => [
+         q(0004),
+         q(0),
+         ],
+      q(ada) => [
+         q(0005),
+         q(0),
+         ],
+      q(ady) => [
+         q(0006),
+         q(0),
+         ],
+      q(afa) => [
+         q(0007),
+         q(0),
+         ],
+      q(afh) => [
+         q(0008),
+         q(0),
+         ],
+      q(afr) => [
+         q(0009),
+         q(0),
+         ],
+      q(ain) => [
+         q(0010),
+         q(0),
+         ],
+      q(aka) => [
+         q(0011),
+         q(0),
+         ],
+      q(akk) => [
+         q(0012),
+         q(0),
+         ],
+      q(alb) => [
+         q(0013),
+         q(0),
+         ],
+      q(ale) => [
+         q(0014),
+         q(0),
+         ],
+      q(alg) => [
+         q(0015),
+         q(0),
+         ],
+      q(alt) => [
+         q(0016),
+         q(0),
+         ],
+      q(amh) => [
+         q(0017),
+         q(0),
+         ],
+      q(ang) => [
+         q(0018),
+         q(0),
+         ],
+      q(anp) => [
+         q(0019),
+         q(0),
+         ],
+      q(apa) => [
+         q(0020),
+         q(0),
+         ],
+      q(ara) => [
+         q(0021),
+         q(0),
+         ],
+      q(arc) => [
+         q(0022),
+         q(0),
+         ],
+      q(arg) => [
+         q(0023),
+         q(0),
+         ],
+      q(arm) => [
+         q(0024),
+         q(0),
+         ],
+      q(arn) => [
+         q(0025),
+         q(0),
+         ],
+      q(arp) => [
+         q(0026),
+         q(0),
+         ],
+      q(art) => [
+         q(0027),
+         q(0),
+         ],
+      q(arw) => [
+         q(0028),
+         q(0),
+         ],
+      q(asm) => [
+         q(0029),
+         q(0),
+         ],
+      q(ast) => [
+         q(0030),
+         q(0),
+         ],
+      q(ath) => [
+         q(0031),
+         q(0),
+         ],
+      q(aus) => [
+         q(0032),
+         q(0),
+         ],
+      q(ava) => [
+         q(0033),
+         q(0),
+         ],
+      q(ave) => [
+         q(0034),
+         q(0),
+         ],
+      q(awa) => [
+         q(0035),
+         q(0),
+         ],
+      q(aym) => [
+         q(0036),
+         q(0),
+         ],
+      q(aze) => [
+         q(0037),
+         q(0),
+         ],
+      q(bad) => [
+         q(0038),
+         q(0),
+         ],
+      q(bai) => [
+         q(0039),
+         q(0),
+         ],
+      q(bak) => [
+         q(0040),
+         q(0),
+         ],
+      q(bal) => [
+         q(0041),
+         q(0),
+         ],
+      q(bam) => [
+         q(0042),
+         q(0),
+         ],
+      q(ban) => [
+         q(0043),
+         q(0),
+         ],
+      q(baq) => [
+         q(0044),
+         q(0),
+         ],
+      q(bas) => [
+         q(0045),
+         q(0),
+         ],
+      q(bat) => [
+         q(0046),
+         q(0),
+         ],
+      q(bej) => [
+         q(0047),
+         q(0),
+         ],
+      q(bel) => [
+         q(0048),
+         q(0),
+         ],
+      q(bem) => [
+         q(0049),
+         q(0),
+         ],
+      q(ben) => [
+         q(0050),
+         q(0),
+         ],
+      q(ber) => [
+         q(0051),
+         q(0),
+         ],
+      q(bho) => [
+         q(0052),
+         q(0),
+         ],
+      q(bih) => [
+         q(0053),
+         q(0),
+         ],
+      q(bik) => [
+         q(0054),
+         q(0),
+         ],
+      q(bin) => [
+         q(0055),
+         q(0),
+         ],
+      q(bis) => [
+         q(0056),
+         q(0),
+         ],
+      q(bla) => [
+         q(0057),
+         q(0),
+         ],
+      q(bnt) => [
+         q(0058),
+         q(0),
+         ],
+      q(bos) => [
+         q(0059),
+         q(0),
+         ],
+      q(bra) => [
+         q(0060),
+         q(0),
+         ],
+      q(bre) => [
+         q(0061),
+         q(0),
+         ],
+      q(btk) => [
+         q(0062),
+         q(0),
+         ],
+      q(bua) => [
+         q(0063),
+         q(0),
+         ],
+      q(bug) => [
+         q(0064),
+         q(0),
+         ],
+      q(bul) => [
+         q(0065),
+         q(0),
+         ],
+      q(bur) => [
+         q(0066),
+         q(0),
+         ],
+      q(byn) => [
+         q(0067),
+         q(0),
+         ],
+      q(cad) => [
+         q(0068),
+         q(0),
+         ],
+      q(cai) => [
+         q(0069),
+         q(0),
+         ],
+      q(car) => [
+         q(0070),
+         q(0),
+         ],
+      q(cat) => [
+         q(0071),
+         q(0),
+         ],
+      q(cau) => [
+         q(0072),
+         q(0),
+         ],
+      q(ceb) => [
+         q(0073),
+         q(0),
+         ],
+      q(cel) => [
+         q(0074),
+         q(0),
+         ],
+      q(cha) => [
+         q(0075),
+         q(0),
+         ],
+      q(chb) => [
+         q(0076),
+         q(0),
+         ],
+      q(che) => [
+         q(0077),
+         q(0),
+         ],
+      q(chg) => [
+         q(0078),
+         q(0),
+         ],
+      q(chi) => [
+         q(0079),
+         q(0),
+         ],
+      q(chk) => [
+         q(0080),
+         q(0),
+         ],
+      q(chm) => [
+         q(0081),
+         q(0),
+         ],
+      q(chn) => [
+         q(0082),
+         q(0),
+         ],
+      q(cho) => [
+         q(0083),
+         q(0),
+         ],
+      q(chp) => [
+         q(0084),
+         q(0),
+         ],
+      q(chr) => [
+         q(0085),
+         q(0),
+         ],
+      q(chu) => [
+         q(0086),
+         q(0),
+         ],
+      q(chv) => [
+         q(0087),
+         q(0),
+         ],
+      q(chy) => [
+         q(0088),
+         q(0),
+         ],
+      q(cmc) => [
+         q(0089),
+         q(0),
+         ],
+      q(cop) => [
+         q(0090),
+         q(0),
+         ],
+      q(cor) => [
+         q(0091),
+         q(0),
+         ],
+      q(cos) => [
+         q(0092),
+         q(0),
+         ],
+      q(cpe) => [
+         q(0093),
+         q(0),
+         ],
+      q(cpf) => [
+         q(0094),
+         q(0),
+         ],
+      q(cpp) => [
+         q(0095),
+         q(0),
+         ],
+      q(cre) => [
+         q(0096),
+         q(0),
+         ],
+      q(crh) => [
+         q(0097),
+         q(0),
+         ],
+      q(crp) => [
+         q(0098),
+         q(0),
+         ],
+      q(csb) => [
+         q(0099),
+         q(0),
+         ],
+      q(cus) => [
+         q(0100),
+         q(0),
+         ],
+      q(cze) => [
+         q(0101),
+         q(0),
+         ],
+      q(dak) => [
+         q(0102),
+         q(0),
+         ],
+      q(dan) => [
+         q(0103),
+         q(0),
+         ],
+      q(dar) => [
+         q(0104),
+         q(0),
+         ],
+      q(day) => [
+         q(0105),
+         q(0),
+         ],
+      q(del) => [
+         q(0106),
+         q(0),
+         ],
+      q(den) => [
+         q(0107),
+         q(0),
+         ],
+      q(dgr) => [
+         q(0108),
+         q(0),
+         ],
+      q(din) => [
+         q(0109),
+         q(0),
+         ],
+      q(div) => [
+         q(0110),
+         q(0),
+         ],
+      q(doi) => [
+         q(0111),
+         q(0),
+         ],
+      q(dra) => [
+         q(0112),
+         q(0),
+         ],
+      q(dsb) => [
+         q(0113),
+         q(0),
+         ],
+      q(dua) => [
+         q(0114),
+         q(0),
+         ],
+      q(dum) => [
+         q(0115),
+         q(0),
+         ],
+      q(dut) => [
+         q(0116),
+         q(0),
+         ],
+      q(dyu) => [
+         q(0117),
+         q(0),
+         ],
+      q(dzo) => [
+         q(0118),
+         q(0),
+         ],
+      q(efi) => [
+         q(0119),
+         q(0),
+         ],
+      q(egy) => [
+         q(0120),
+         q(0),
+         ],
+      q(eka) => [
+         q(0121),
+         q(0),
+         ],
+      q(elx) => [
+         q(0122),
+         q(0),
+         ],
+      q(eng) => [
+         q(0123),
+         q(0),
+         ],
+      q(enm) => [
+         q(0124),
+         q(0),
+         ],
+      q(epo) => [
+         q(0125),
+         q(0),
+         ],
+      q(est) => [
+         q(0126),
+         q(0),
+         ],
+      q(ewe) => [
+         q(0127),
+         q(0),
+         ],
+      q(ewo) => [
+         q(0128),
+         q(0),
+         ],
+      q(fan) => [
+         q(0129),
+         q(0),
+         ],
+      q(fao) => [
+         q(0130),
+         q(0),
+         ],
+      q(fat) => [
+         q(0131),
+         q(0),
+         ],
+      q(fij) => [
+         q(0132),
+         q(0),
+         ],
+      q(fil) => [
+         q(0133),
+         q(0),
+         ],
+      q(fin) => [
+         q(0134),
+         q(0),
+         ],
+      q(fiu) => [
+         q(0135),
+         q(0),
+         ],
+      q(fon) => [
+         q(0136),
+         q(0),
+         ],
+      q(fre) => [
+         q(0137),
+         q(0),
+         ],
+      q(frm) => [
+         q(0138),
+         q(0),
+         ],
+      q(fro) => [
+         q(0139),
+         q(0),
+         ],
+      q(frr) => [
+         q(0140),
+         q(0),
+         ],
+      q(frs) => [
+         q(0141),
+         q(0),
+         ],
+      q(fry) => [
+         q(0142),
+         q(0),
+         ],
+      q(ful) => [
+         q(0143),
+         q(0),
+         ],
+      q(fur) => [
+         q(0144),
+         q(0),
+         ],
+      q(gaa) => [
+         q(0145),
+         q(0),
+         ],
+      q(gay) => [
+         q(0146),
+         q(0),
+         ],
+      q(gba) => [
+         q(0147),
+         q(0),
+         ],
+      q(gem) => [
+         q(0148),
+         q(0),
+         ],
+      q(geo) => [
+         q(0149),
+         q(0),
+         ],
+      q(ger) => [
+         q(0150),
+         q(0),
+         ],
+      q(gez) => [
+         q(0151),
+         q(0),
+         ],
+      q(gil) => [
+         q(0152),
+         q(0),
+         ],
+      q(gla) => [
+         q(0153),
+         q(0),
+         ],
+      q(gle) => [
+         q(0154),
+         q(0),
+         ],
+      q(glg) => [
+         q(0155),
+         q(0),
+         ],
+      q(glv) => [
+         q(0156),
+         q(0),
+         ],
+      q(gmh) => [
+         q(0157),
+         q(0),
+         ],
+      q(goh) => [
+         q(0158),
+         q(0),
+         ],
+      q(gon) => [
+         q(0159),
+         q(0),
+         ],
+      q(gor) => [
+         q(0160),
+         q(0),
+         ],
+      q(got) => [
+         q(0161),
+         q(0),
+         ],
+      q(grb) => [
+         q(0162),
+         q(0),
+         ],
+      q(grc) => [
+         q(0163),
+         q(0),
+         ],
+      q(gre) => [
+         q(0164),
+         q(0),
+         ],
+      q(grn) => [
+         q(0165),
+         q(0),
+         ],
+      q(gsw) => [
+         q(0166),
+         q(0),
+         ],
+      q(guj) => [
+         q(0167),
+         q(0),
+         ],
+      q(gwi) => [
+         q(0168),
+         q(0),
+         ],
+      q(hai) => [
+         q(0169),
+         q(0),
+         ],
+      q(hat) => [
+         q(0170),
+         q(0),
+         ],
+      q(hau) => [
+         q(0171),
+         q(0),
+         ],
+      q(haw) => [
+         q(0172),
+         q(0),
+         ],
+      q(heb) => [
+         q(0173),
+         q(0),
+         ],
+      q(her) => [
+         q(0174),
+         q(0),
+         ],
+      q(hil) => [
+         q(0175),
+         q(0),
+         ],
+      q(him) => [
+         q(0176),
+         q(0),
+         ],
+      q(hin) => [
+         q(0177),
+         q(0),
+         ],
+      q(hit) => [
+         q(0178),
+         q(0),
+         ],
+      q(hmn) => [
+         q(0179),
+         q(0),
+         ],
+      q(hmo) => [
+         q(0180),
+         q(0),
+         ],
+      q(hrv) => [
+         q(0181),
+         q(0),
+         ],
+      q(hsb) => [
+         q(0182),
+         q(0),
+         ],
+      q(hun) => [
+         q(0183),
+         q(0),
+         ],
+      q(hup) => [
+         q(0184),
+         q(0),
+         ],
+      q(iba) => [
+         q(0185),
+         q(0),
+         ],
+      q(ibo) => [
+         q(0186),
+         q(0),
+         ],
+      q(ice) => [
+         q(0187),
+         q(0),
+         ],
+      q(ido) => [
+         q(0188),
+         q(0),
+         ],
+      q(iii) => [
+         q(0189),
+         q(0),
+         ],
+      q(ijo) => [
+         q(0190),
+         q(0),
+         ],
+      q(iku) => [
+         q(0191),
+         q(0),
+         ],
+      q(ile) => [
+         q(0192),
+         q(0),
+         ],
+      q(ilo) => [
+         q(0193),
+         q(0),
+         ],
+      q(ina) => [
+         q(0194),
+         q(0),
+         ],
+      q(inc) => [
+         q(0195),
+         q(0),
+         ],
+      q(ind) => [
+         q(0196),
+         q(0),
+         ],
+      q(ine) => [
+         q(0197),
+         q(0),
+         ],
+      q(inh) => [
+         q(0198),
+         q(0),
+         ],
+      q(ipk) => [
+         q(0199),
+         q(0),
+         ],
+      q(ira) => [
+         q(0200),
+         q(0),
+         ],
+      q(iro) => [
+         q(0201),
+         q(0),
+         ],
+      q(ita) => [
+         q(0202),
+         q(0),
+         ],
+      q(jav) => [
+         q(0203),
+         q(0),
+         ],
+      q(jbo) => [
+         q(0204),
+         q(0),
+         ],
+      q(jpn) => [
+         q(0205),
+         q(0),
+         ],
+      q(jpr) => [
+         q(0206),
+         q(0),
+         ],
+      q(jrb) => [
+         q(0207),
+         q(0),
+         ],
+      q(kaa) => [
+         q(0208),
+         q(0),
+         ],
+      q(kab) => [
+         q(0209),
+         q(0),
+         ],
+      q(kac) => [
+         q(0210),
+         q(0),
+         ],
+      q(kal) => [
+         q(0211),
+         q(0),
+         ],
+      q(kam) => [
+         q(0212),
+         q(0),
+         ],
+      q(kan) => [
+         q(0213),
+         q(0),
+         ],
+      q(kar) => [
+         q(0214),
+         q(0),
+         ],
+      q(kas) => [
+         q(0215),
+         q(0),
+         ],
+      q(kau) => [
+         q(0216),
+         q(0),
+         ],
+      q(kaw) => [
+         q(0217),
+         q(0),
+         ],
+      q(kaz) => [
+         q(0218),
+         q(0),
+         ],
+      q(kbd) => [
+         q(0219),
+         q(0),
+         ],
+      q(kha) => [
+         q(0220),
+         q(0),
+         ],
+      q(khi) => [
+         q(0221),
+         q(0),
+         ],
+      q(khm) => [
+         q(0222),
+         q(0),
+         ],
+      q(kho) => [
+         q(0223),
+         q(0),
+         ],
+      q(kik) => [
+         q(0224),
+         q(0),
+         ],
+      q(kin) => [
+         q(0225),
+         q(0),
+         ],
+      q(kir) => [
+         q(0226),
+         q(0),
+         ],
+      q(kmb) => [
+         q(0227),
+         q(0),
+         ],
+      q(kok) => [
+         q(0228),
+         q(0),
+         ],
+      q(kom) => [
+         q(0229),
+         q(0),
+         ],
+      q(kon) => [
+         q(0230),
+         q(0),
+         ],
+      q(kor) => [
+         q(0231),
+         q(0),
+         ],
+      q(kos) => [
+         q(0232),
+         q(0),
+         ],
+      q(kpe) => [
+         q(0233),
+         q(0),
+         ],
+      q(krc) => [
+         q(0234),
+         q(0),
+         ],
+      q(krl) => [
+         q(0235),
+         q(0),
+         ],
+      q(kro) => [
+         q(0236),
+         q(0),
+         ],
+      q(kru) => [
+         q(0237),
+         q(0),
+         ],
+      q(kua) => [
+         q(0238),
+         q(0),
+         ],
+      q(kum) => [
+         q(0239),
+         q(0),
+         ],
+      q(kur) => [
+         q(0240),
+         q(0),
+         ],
+      q(kut) => [
+         q(0241),
+         q(0),
+         ],
+      q(lad) => [
+         q(0242),
+         q(0),
+         ],
+      q(lah) => [
+         q(0243),
+         q(0),
+         ],
+      q(lam) => [
+         q(0244),
+         q(0),
+         ],
+      q(lao) => [
+         q(0245),
+         q(0),
+         ],
+      q(lat) => [
+         q(0246),
+         q(0),
+         ],
+      q(lav) => [
+         q(0247),
+         q(0),
+         ],
+      q(lez) => [
+         q(0248),
+         q(0),
+         ],
+      q(lim) => [
+         q(0249),
+         q(0),
+         ],
+      q(lin) => [
+         q(0250),
+         q(0),
+         ],
+      q(lit) => [
+         q(0251),
+         q(0),
+         ],
+      q(lol) => [
+         q(0252),
+         q(0),
+         ],
+      q(loz) => [
+         q(0253),
+         q(0),
+         ],
+      q(ltz) => [
+         q(0254),
+         q(0),
+         ],
+      q(lua) => [
+         q(0255),
+         q(0),
+         ],
+      q(lub) => [
+         q(0256),
+         q(0),
+         ],
+      q(lug) => [
+         q(0257),
+         q(0),
+         ],
+      q(lui) => [
+         q(0258),
+         q(0),
+         ],
+      q(lun) => [
+         q(0259),
+         q(0),
+         ],
+      q(luo) => [
+         q(0260),
+         q(0),
+         ],
+      q(lus) => [
+         q(0261),
+         q(0),
+         ],
+      q(mac) => [
+         q(0262),
+         q(0),
+         ],
+      q(mad) => [
+         q(0263),
+         q(0),
+         ],
+      q(mag) => [
+         q(0264),
+         q(0),
+         ],
+      q(mah) => [
+         q(0265),
+         q(0),
+         ],
+      q(mai) => [
+         q(0266),
+         q(0),
+         ],
+      q(mak) => [
+         q(0267),
+         q(0),
+         ],
+      q(mal) => [
+         q(0268),
+         q(0),
+         ],
+      q(man) => [
+         q(0269),
+         q(0),
+         ],
+      q(mao) => [
+         q(0270),
+         q(0),
+         ],
+      q(map) => [
+         q(0271),
+         q(0),
+         ],
+      q(mar) => [
+         q(0272),
+         q(0),
+         ],
+      q(mas) => [
+         q(0273),
+         q(0),
+         ],
+      q(may) => [
+         q(0274),
+         q(0),
+         ],
+      q(mdf) => [
+         q(0275),
+         q(0),
+         ],
+      q(mdr) => [
+         q(0276),
+         q(0),
+         ],
+      q(men) => [
+         q(0277),
+         q(0),
+         ],
+      q(mga) => [
+         q(0278),
+         q(0),
+         ],
+      q(mic) => [
+         q(0279),
+         q(0),
+         ],
+      q(min) => [
+         q(0280),
+         q(0),
+         ],
+      q(mis) => [
+         q(0281),
+         q(0),
+         ],
+      q(mkh) => [
+         q(0282),
+         q(0),
+         ],
+      q(mlg) => [
+         q(0283),
+         q(0),
+         ],
+      q(mlt) => [
+         q(0284),
+         q(0),
+         ],
+      q(mnc) => [
+         q(0285),
+         q(0),
+         ],
+      q(mni) => [
+         q(0286),
+         q(0),
+         ],
+      q(mno) => [
+         q(0287),
+         q(0),
+         ],
+      q(moh) => [
+         q(0288),
+         q(0),
+         ],
+      q(mon) => [
+         q(0289),
+         q(0),
+         ],
+      q(mos) => [
+         q(0290),
+         q(0),
+         ],
+      q(mul) => [
+         q(0291),
+         q(0),
+         ],
+      q(mun) => [
+         q(0292),
+         q(0),
+         ],
+      q(mus) => [
+         q(0293),
+         q(0),
+         ],
+      q(mwl) => [
+         q(0294),
+         q(0),
+         ],
+      q(mwr) => [
+         q(0295),
+         q(0),
+         ],
+      q(myn) => [
+         q(0296),
+         q(0),
+         ],
+      q(myv) => [
+         q(0297),
+         q(0),
+         ],
+      q(nah) => [
+         q(0298),
+         q(0),
+         ],
+      q(nai) => [
+         q(0299),
+         q(0),
+         ],
+      q(nap) => [
+         q(0300),
+         q(0),
+         ],
+      q(nau) => [
+         q(0301),
+         q(0),
+         ],
+      q(nav) => [
+         q(0302),
+         q(0),
+         ],
+      q(nbl) => [
+         q(0303),
+         q(0),
+         ],
+      q(nde) => [
+         q(0304),
+         q(0),
+         ],
+      q(ndo) => [
+         q(0305),
+         q(0),
+         ],
+      q(nds) => [
+         q(0306),
+         q(0),
+         ],
+      q(nep) => [
+         q(0307),
+         q(0),
+         ],
+      q(new) => [
+         q(0308),
+         q(0),
+         ],
+      q(nia) => [
+         q(0309),
+         q(0),
+         ],
+      q(nic) => [
+         q(0310),
+         q(0),
+         ],
+      q(niu) => [
+         q(0311),
+         q(0),
+         ],
+      q(nno) => [
+         q(0312),
+         q(0),
+         ],
+      q(nob) => [
+         q(0313),
+         q(0),
+         ],
+      q(nog) => [
+         q(0314),
+         q(0),
+         ],
+      q(non) => [
+         q(0315),
+         q(0),
+         ],
+      q(nor) => [
+         q(0316),
+         q(0),
+         ],
+      q(nqo) => [
+         q(0317),
+         q(0),
+         ],
+      q(nso) => [
+         q(0318),
+         q(0),
+         ],
+      q(nub) => [
+         q(0319),
+         q(0),
+         ],
+      q(nwc) => [
+         q(0320),
+         q(0),
+         ],
+      q(nya) => [
+         q(0321),
+         q(0),
+         ],
+      q(nym) => [
+         q(0322),
+         q(0),
+         ],
+      q(nyn) => [
+         q(0323),
+         q(0),
+         ],
+      q(nyo) => [
+         q(0324),
+         q(0),
+         ],
+      q(nzi) => [
+         q(0325),
+         q(0),
+         ],
+      q(oci) => [
+         q(0326),
+         q(0),
+         ],
+      q(oji) => [
+         q(0327),
+         q(0),
+         ],
+      q(ori) => [
+         q(0328),
+         q(0),
+         ],
+      q(orm) => [
+         q(0329),
+         q(0),
+         ],
+      q(osa) => [
+         q(0330),
+         q(0),
+         ],
+      q(oss) => [
+         q(0331),
+         q(0),
+         ],
+      q(ota) => [
+         q(0332),
+         q(0),
+         ],
+      q(oto) => [
+         q(0333),
+         q(0),
+         ],
+      q(paa) => [
+         q(0334),
+         q(0),
+         ],
+      q(pag) => [
+         q(0335),
+         q(0),
+         ],
+      q(pal) => [
+         q(0336),
+         q(0),
+         ],
+      q(pam) => [
+         q(0337),
+         q(0),
+         ],
+      q(pan) => [
+         q(0338),
+         q(0),
+         ],
+      q(pap) => [
+         q(0339),
+         q(0),
+         ],
+      q(pau) => [
+         q(0340),
+         q(0),
+         ],
+      q(peo) => [
+         q(0341),
+         q(0),
+         ],
+      q(per) => [
+         q(0342),
+         q(0),
+         ],
+      q(phi) => [
+         q(0343),
+         q(0),
+         ],
+      q(phn) => [
+         q(0344),
+         q(0),
+         ],
+      q(pli) => [
+         q(0345),
+         q(0),
+         ],
+      q(pol) => [
+         q(0346),
+         q(0),
+         ],
+      q(pon) => [
+         q(0347),
+         q(0),
+         ],
+      q(por) => [
+         q(0348),
+         q(0),
+         ],
+      q(pra) => [
+         q(0349),
+         q(0),
+         ],
+      q(pro) => [
+         q(0350),
+         q(0),
+         ],
+      q(pus) => [
+         q(0351),
+         q(0),
+         ],
+      q(qtz) => [
+         q(0352),
+         q(0),
+         ],
+      q(que) => [
+         q(0353),
+         q(0),
+         ],
+      q(raj) => [
+         q(0354),
+         q(0),
+         ],
+      q(rap) => [
+         q(0355),
+         q(0),
+         ],
+      q(rar) => [
+         q(0356),
+         q(0),
+         ],
+      q(roa) => [
+         q(0357),
+         q(0),
+         ],
+      q(roh) => [
+         q(0358),
+         q(0),
+         ],
+      q(rom) => [
+         q(0359),
+         q(0),
+         ],
+      q(rum) => [
+         q(0360),
+         q(0),
+         ],
+      q(run) => [
+         q(0361),
+         q(0),
+         ],
+      q(rup) => [
+         q(0362),
+         q(0),
+         ],
+      q(rus) => [
+         q(0363),
+         q(0),
+         ],
+      q(sad) => [
+         q(0364),
+         q(0),
+         ],
+      q(sag) => [
+         q(0365),
+         q(0),
+         ],
+      q(sah) => [
+         q(0366),
+         q(0),
+         ],
+      q(sai) => [
+         q(0367),
+         q(0),
+         ],
+      q(sal) => [
+         q(0368),
+         q(0),
+         ],
+      q(sam) => [
+         q(0369),
+         q(0),
+         ],
+      q(san) => [
+         q(0370),
+         q(0),
+         ],
+      q(sas) => [
+         q(0371),
+         q(0),
+         ],
+      q(sat) => [
+         q(0372),
+         q(0),
+         ],
+      q(scn) => [
+         q(0373),
+         q(0),
+         ],
+      q(sco) => [
+         q(0374),
+         q(0),
+         ],
+      q(sel) => [
+         q(0375),
+         q(0),
+         ],
+      q(sem) => [
+         q(0376),
+         q(0),
+         ],
+      q(sga) => [
+         q(0377),
+         q(0),
+         ],
+      q(sgn) => [
+         q(0378),
+         q(0),
+         ],
+      q(shn) => [
+         q(0379),
+         q(0),
+         ],
+      q(sid) => [
+         q(0380),
+         q(0),
+         ],
+      q(sin) => [
+         q(0381),
+         q(0),
+         ],
+      q(sio) => [
+         q(0382),
+         q(0),
+         ],
+      q(sit) => [
+         q(0383),
+         q(0),
+         ],
+      q(sla) => [
+         q(0384),
+         q(0),
+         ],
+      q(slo) => [
+         q(0385),
+         q(0),
+         ],
+      q(slv) => [
+         q(0386),
+         q(0),
+         ],
+      q(sma) => [
+         q(0387),
+         q(0),
+         ],
+      q(sme) => [
+         q(0388),
+         q(0),
+         ],
+      q(smi) => [
+         q(0389),
+         q(0),
+         ],
+      q(smj) => [
+         q(0390),
+         q(0),
+         ],
+      q(smn) => [
+         q(0391),
+         q(0),
+         ],
+      q(smo) => [
+         q(0392),
+         q(0),
+         ],
+      q(sms) => [
+         q(0393),
+         q(0),
+         ],
+      q(sna) => [
+         q(0394),
+         q(0),
+         ],
+      q(snd) => [
+         q(0395),
+         q(0),
+         ],
+      q(snk) => [
+         q(0396),
+         q(0),
+         ],
+      q(sog) => [
+         q(0397),
+         q(0),
+         ],
+      q(som) => [
+         q(0398),
+         q(0),
+         ],
+      q(son) => [
+         q(0399),
+         q(0),
+         ],
+      q(sot) => [
+         q(0400),
+         q(0),
+         ],
+      q(spa) => [
+         q(0401),
+         q(0),
+         ],
+      q(srd) => [
+         q(0402),
+         q(0),
+         ],
+      q(srn) => [
+         q(0403),
+         q(0),
+         ],
+      q(srp) => [
+         q(0404),
+         q(0),
+         ],
+      q(srr) => [
+         q(0405),
+         q(0),
+         ],
+      q(ssa) => [
+         q(0406),
+         q(0),
+         ],
+      q(ssw) => [
+         q(0407),
+         q(0),
+         ],
+      q(suk) => [
+         q(0408),
+         q(0),
+         ],
+      q(sun) => [
+         q(0409),
+         q(0),
+         ],
+      q(sus) => [
+         q(0410),
+         q(0),
+         ],
+      q(sux) => [
+         q(0411),
+         q(0),
+         ],
+      q(swa) => [
+         q(0412),
+         q(0),
+         ],
+      q(swe) => [
+         q(0413),
+         q(0),
+         ],
+      q(syc) => [
+         q(0414),
+         q(0),
+         ],
+      q(syr) => [
+         q(0415),
+         q(0),
+         ],
+      q(tah) => [
+         q(0416),
+         q(0),
+         ],
+      q(tai) => [
+         q(0417),
+         q(0),
+         ],
+      q(tam) => [
+         q(0418),
+         q(0),
+         ],
+      q(tat) => [
+         q(0419),
+         q(0),
+         ],
+      q(tel) => [
+         q(0420),
+         q(0),
+         ],
+      q(tem) => [
+         q(0421),
+         q(0),
+         ],
+      q(ter) => [
+         q(0422),
+         q(0),
+         ],
+      q(tet) => [
+         q(0423),
+         q(0),
+         ],
+      q(tgk) => [
+         q(0424),
+         q(0),
+         ],
+      q(tgl) => [
+         q(0425),
+         q(0),
+         ],
+      q(tha) => [
+         q(0426),
+         q(0),
+         ],
+      q(tib) => [
+         q(0427),
+         q(0),
+         ],
+      q(tig) => [
+         q(0428),
+         q(0),
+         ],
+      q(tir) => [
+         q(0429),
+         q(0),
+         ],
+      q(tiv) => [
+         q(0430),
+         q(0),
+         ],
+      q(tkl) => [
+         q(0431),
+         q(0),
+         ],
+      q(tlh) => [
+         q(0432),
+         q(0),
+         ],
+      q(tli) => [
+         q(0433),
+         q(0),
+         ],
+      q(tmh) => [
+         q(0434),
+         q(0),
+         ],
+      q(tog) => [
+         q(0435),
+         q(0),
+         ],
+      q(ton) => [
+         q(0436),
+         q(0),
+         ],
+      q(tpi) => [
+         q(0437),
+         q(0),
+         ],
+      q(tsi) => [
+         q(0438),
+         q(0),
+         ],
+      q(tsn) => [
+         q(0439),
+         q(0),
+         ],
+      q(tso) => [
+         q(0440),
+         q(0),
+         ],
+      q(tuk) => [
+         q(0441),
+         q(0),
+         ],
+      q(tum) => [
+         q(0442),
+         q(0),
+         ],
+      q(tup) => [
+         q(0443),
+         q(0),
+         ],
+      q(tur) => [
+         q(0444),
+         q(0),
+         ],
+      q(tut) => [
+         q(0445),
+         q(0),
+         ],
+      q(tvl) => [
+         q(0446),
+         q(0),
+         ],
+      q(twi) => [
+         q(0447),
+         q(0),
+         ],
+      q(tyv) => [
+         q(0448),
+         q(0),
+         ],
+      q(udm) => [
+         q(0449),
+         q(0),
+         ],
+      q(uga) => [
+         q(0450),
+         q(0),
+         ],
+      q(uig) => [
+         q(0451),
+         q(0),
+         ],
+      q(ukr) => [
+         q(0452),
+         q(0),
+         ],
+      q(umb) => [
+         q(0453),
+         q(0),
+         ],
+      q(und) => [
+         q(0454),
+         q(0),
+         ],
+      q(urd) => [
+         q(0455),
+         q(0),
+         ],
+      q(uzb) => [
+         q(0456),
+         q(0),
+         ],
+      q(vai) => [
+         q(0457),
+         q(0),
+         ],
+      q(ven) => [
+         q(0458),
+         q(0),
+         ],
+      q(vie) => [
+         q(0459),
+         q(0),
+         ],
+      q(vol) => [
+         q(0460),
+         q(0),
+         ],
+      q(vot) => [
+         q(0461),
+         q(0),
+         ],
+      q(wak) => [
+         q(0462),
+         q(0),
+         ],
+      q(wal) => [
+         q(0463),
+         q(0),
+         ],
+      q(war) => [
+         q(0464),
+         q(0),
+         ],
+      q(was) => [
+         q(0465),
+         q(0),
+         ],
+      q(wel) => [
+         q(0466),
+         q(0),
+         ],
+      q(wen) => [
+         q(0467),
+         q(0),
+         ],
+      q(wln) => [
+         q(0468),
+         q(0),
+         ],
+      q(wol) => [
+         q(0469),
+         q(0),
+         ],
+      q(xal) => [
+         q(0470),
+         q(0),
+         ],
+      q(xho) => [
+         q(0471),
+         q(0),
+         ],
+      q(yao) => [
+         q(0472),
+         q(0),
+         ],
+      q(yap) => [
+         q(0473),
+         q(0),
+         ],
+      q(yid) => [
+         q(0474),
+         q(0),
+         ],
+      q(yor) => [
+         q(0475),
+         q(0),
+         ],
+      q(ypk) => [
+         q(0476),
+         q(0),
+         ],
+      q(zap) => [
+         q(0477),
+         q(0),
+         ],
+      q(zbl) => [
+         q(0478),
+         q(0),
+         ],
+      q(zen) => [
+         q(0479),
+         q(0),
+         ],
+      q(zha) => [
+         q(0480),
+         q(0),
+         ],
+      q(znd) => [
+         q(0481),
+         q(0),
+         ],
+      q(zul) => [
+         q(0482),
+         q(0),
+         ],
+      q(zun) => [
+         q(0483),
+         q(0),
+         ],
+      q(zxx) => [
+         q(0484),
+         q(0),
+         ],
+      q(zza) => [
+         q(0485),
+         q(0),
+         ],
+      },
+   q(term) => {
+      q(bod) => [
+         q(0427),
+         q(0),
+         ],
+      q(ces) => [
+         q(0101),
+         q(0),
+         ],
+      q(cym) => [
+         q(0466),
+         q(0),
+         ],
+      q(deu) => [
+         q(0150),
+         q(0),
+         ],
+      q(ell) => [
+         q(0164),
+         q(0),
+         ],
+      q(eus) => [
+         q(0044),
+         q(0),
+         ],
+      q(fas) => [
+         q(0342),
+         q(0),
+         ],
+      q(fra) => [
+         q(0137),
+         q(0),
+         ],
+      q(hye) => [
+         q(0024),
+         q(0),
+         ],
+      q(isl) => [
+         q(0187),
+         q(0),
+         ],
+      q(kat) => [
+         q(0149),
+         q(0),
+         ],
+      q(mkd) => [
+         q(0262),
+         q(0),
+         ],
+      q(mri) => [
+         q(0270),
+         q(0),
+         ],
+      q(msa) => [
+         q(0274),
+         q(0),
+         ],
+      q(mya) => [
+         q(0066),
+         q(0),
+         ],
+      q(nld) => [
+         q(0116),
+         q(0),
+         ],
+      q(ron) => [
+         q(0360),
+         q(0),
+         ],
+      q(slk) => [
+         q(0385),
+         q(0),
+         ],
+      q(sqi) => [
+         q(0013),
+         q(0),
+         ],
+      q(zho) => [
+         q(0079),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'language'}{'id2code'} = {
+   q(alpha2) => {
+      q(0001) => q(aa),
+      q(0002) => q(ab),
+      q(0009) => q(af),
+      q(0011) => q(ak),
+      q(0013) => q(sq),
+      q(0017) => q(am),
+      q(0021) => q(ar),
+      q(0023) => q(an),
+      q(0024) => q(hy),
+      q(0029) => q(as),
+      q(0033) => q(av),
+      q(0034) => q(ae),
+      q(0036) => q(ay),
+      q(0037) => q(az),
+      q(0040) => q(ba),
+      q(0042) => q(bm),
+      q(0044) => q(eu),
+      q(0048) => q(be),
+      q(0050) => q(bn),
+      q(0053) => q(bh),
+      q(0056) => q(bi),
+      q(0059) => q(bs),
+      q(0061) => q(br),
+      q(0065) => q(bg),
+      q(0066) => q(my),
+      q(0071) => q(ca),
+      q(0075) => q(ch),
+      q(0077) => q(ce),
+      q(0079) => q(zh),
+      q(0086) => q(cu),
+      q(0087) => q(cv),
+      q(0091) => q(kw),
+      q(0092) => q(co),
+      q(0096) => q(cr),
+      q(0101) => q(cs),
+      q(0103) => q(da),
+      q(0110) => q(dv),
+      q(0116) => q(nl),
+      q(0118) => q(dz),
+      q(0123) => q(en),
+      q(0125) => q(eo),
+      q(0126) => q(et),
+      q(0127) => q(ee),
+      q(0130) => q(fo),
+      q(0132) => q(fj),
+      q(0134) => q(fi),
+      q(0137) => q(fr),
+      q(0142) => q(fy),
+      q(0143) => q(ff),
+      q(0149) => q(ka),
+      q(0150) => q(de),
+      q(0153) => q(gd),
+      q(0154) => q(ga),
+      q(0155) => q(gl),
+      q(0156) => q(gv),
+      q(0164) => q(el),
+      q(0165) => q(gn),
+      q(0167) => q(gu),
+      q(0170) => q(ht),
+      q(0171) => q(ha),
+      q(0173) => q(he),
+      q(0174) => q(hz),
+      q(0177) => q(hi),
+      q(0180) => q(ho),
+      q(0181) => q(hr),
+      q(0183) => q(hu),
+      q(0186) => q(ig),
+      q(0187) => q(is),
+      q(0188) => q(io),
+      q(0189) => q(ii),
+      q(0191) => q(iu),
+      q(0192) => q(ie),
+      q(0194) => q(ia),
+      q(0196) => q(id),
+      q(0199) => q(ik),
+      q(0202) => q(it),
+      q(0203) => q(jv),
+      q(0205) => q(ja),
+      q(0211) => q(kl),
+      q(0213) => q(kn),
+      q(0215) => q(ks),
+      q(0216) => q(kr),
+      q(0218) => q(kk),
+      q(0222) => q(km),
+      q(0224) => q(ki),
+      q(0225) => q(rw),
+      q(0226) => q(ky),
+      q(0229) => q(kv),
+      q(0230) => q(kg),
+      q(0231) => q(ko),
+      q(0238) => q(kj),
+      q(0240) => q(ku),
+      q(0245) => q(lo),
+      q(0246) => q(la),
+      q(0247) => q(lv),
+      q(0249) => q(li),
+      q(0250) => q(ln),
+      q(0251) => q(lt),
+      q(0254) => q(lb),
+      q(0256) => q(lu),
+      q(0257) => q(lg),
+      q(0262) => q(mk),
+      q(0265) => q(mh),
+      q(0268) => q(ml),
+      q(0270) => q(mi),
+      q(0272) => q(mr),
+      q(0274) => q(ms),
+      q(0283) => q(mg),
+      q(0284) => q(mt),
+      q(0289) => q(mn),
+      q(0301) => q(na),
+      q(0302) => q(nv),
+      q(0303) => q(nr),
+      q(0304) => q(nd),
+      q(0305) => q(ng),
+      q(0307) => q(ne),
+      q(0312) => q(nn),
+      q(0313) => q(nb),
+      q(0316) => q(no),
+      q(0321) => q(ny),
+      q(0326) => q(oc),
+      q(0327) => q(oj),
+      q(0328) => q(or),
+      q(0329) => q(om),
+      q(0331) => q(os),
+      q(0338) => q(pa),
+      q(0342) => q(fa),
+      q(0345) => q(pi),
+      q(0346) => q(pl),
+      q(0348) => q(pt),
+      q(0351) => q(ps),
+      q(0353) => q(qu),
+      q(0358) => q(rm),
+      q(0360) => q(ro),
+      q(0361) => q(rn),
+      q(0363) => q(ru),
+      q(0365) => q(sg),
+      q(0370) => q(sa),
+      q(0381) => q(si),
+      q(0385) => q(sk),
+      q(0386) => q(sl),
+      q(0388) => q(se),
+      q(0392) => q(sm),
+      q(0394) => q(sn),
+      q(0395) => q(sd),
+      q(0398) => q(so),
+      q(0400) => q(st),
+      q(0401) => q(es),
+      q(0402) => q(sc),
+      q(0404) => q(sr),
+      q(0407) => q(ss),
+      q(0409) => q(su),
+      q(0412) => q(sw),
+      q(0413) => q(sv),
+      q(0416) => q(ty),
+      q(0418) => q(ta),
+      q(0419) => q(tt),
+      q(0420) => q(te),
+      q(0424) => q(tg),
+      q(0425) => q(tl),
+      q(0426) => q(th),
+      q(0427) => q(bo),
+      q(0429) => q(ti),
+      q(0436) => q(to),
+      q(0439) => q(tn),
+      q(0440) => q(ts),
+      q(0441) => q(tk),
+      q(0444) => q(tr),
+      q(0447) => q(tw),
+      q(0451) => q(ug),
+      q(0452) => q(uk),
+      q(0455) => q(ur),
+      q(0456) => q(uz),
+      q(0458) => q(ve),
+      q(0459) => q(vi),
+      q(0460) => q(vo),
+      q(0466) => q(cy),
+      q(0468) => q(wa),
+      q(0469) => q(wo),
+      q(0471) => q(xh),
+      q(0474) => q(yi),
+      q(0475) => q(yo),
+      q(0480) => q(za),
+      q(0482) => q(zu),
+      },
+   q(alpha3) => {
+      q(0001) => q(aar),
+      q(0002) => q(abk),
+      q(0003) => q(ace),
+      q(0004) => q(ach),
+      q(0005) => q(ada),
+      q(0006) => q(ady),
+      q(0007) => q(afa),
+      q(0008) => q(afh),
+      q(0009) => q(afr),
+      q(0010) => q(ain),
+      q(0011) => q(aka),
+      q(0012) => q(akk),
+      q(0013) => q(alb),
+      q(0014) => q(ale),
+      q(0015) => q(alg),
+      q(0016) => q(alt),
+      q(0017) => q(amh),
+      q(0018) => q(ang),
+      q(0019) => q(anp),
+      q(0020) => q(apa),
+      q(0021) => q(ara),
+      q(0022) => q(arc),
+      q(0023) => q(arg),
+      q(0024) => q(arm),
+      q(0025) => q(arn),
+      q(0026) => q(arp),
+      q(0027) => q(art),
+      q(0028) => q(arw),
+      q(0029) => q(asm),
+      q(0030) => q(ast),
+      q(0031) => q(ath),
+      q(0032) => q(aus),
+      q(0033) => q(ava),
+      q(0034) => q(ave),
+      q(0035) => q(awa),
+      q(0036) => q(aym),
+      q(0037) => q(aze),
+      q(0038) => q(bad),
+      q(0039) => q(bai),
+      q(0040) => q(bak),
+      q(0041) => q(bal),
+      q(0042) => q(bam),
+      q(0043) => q(ban),
+      q(0044) => q(baq),
+      q(0045) => q(bas),
+      q(0046) => q(bat),
+      q(0047) => q(bej),
+      q(0048) => q(bel),
+      q(0049) => q(bem),
+      q(0050) => q(ben),
+      q(0051) => q(ber),
+      q(0052) => q(bho),
+      q(0053) => q(bih),
+      q(0054) => q(bik),
+      q(0055) => q(bin),
+      q(0056) => q(bis),
+      q(0057) => q(bla),
+      q(0058) => q(bnt),
+      q(0059) => q(bos),
+      q(0060) => q(bra),
+      q(0061) => q(bre),
+      q(0062) => q(btk),
+      q(0063) => q(bua),
+      q(0064) => q(bug),
+      q(0065) => q(bul),
+      q(0066) => q(bur),
+      q(0067) => q(byn),
+      q(0068) => q(cad),
+      q(0069) => q(cai),
+      q(0070) => q(car),
+      q(0071) => q(cat),
+      q(0072) => q(cau),
+      q(0073) => q(ceb),
+      q(0074) => q(cel),
+      q(0075) => q(cha),
+      q(0076) => q(chb),
+      q(0077) => q(che),
+      q(0078) => q(chg),
+      q(0079) => q(chi),
+      q(0080) => q(chk),
+      q(0081) => q(chm),
+      q(0082) => q(chn),
+      q(0083) => q(cho),
+      q(0084) => q(chp),
+      q(0085) => q(chr),
+      q(0086) => q(chu),
+      q(0087) => q(chv),
+      q(0088) => q(chy),
+      q(0089) => q(cmc),
+      q(0090) => q(cop),
+      q(0091) => q(cor),
+      q(0092) => q(cos),
+      q(0093) => q(cpe),
+      q(0094) => q(cpf),
+      q(0095) => q(cpp),
+      q(0096) => q(cre),
+      q(0097) => q(crh),
+      q(0098) => q(crp),
+      q(0099) => q(csb),
+      q(0100) => q(cus),
+      q(0101) => q(cze),
+      q(0102) => q(dak),
+      q(0103) => q(dan),
+      q(0104) => q(dar),
+      q(0105) => q(day),
+      q(0106) => q(del),
+      q(0107) => q(den),
+      q(0108) => q(dgr),
+      q(0109) => q(din),
+      q(0110) => q(div),
+      q(0111) => q(doi),
+      q(0112) => q(dra),
+      q(0113) => q(dsb),
+      q(0114) => q(dua),
+      q(0115) => q(dum),
+      q(0116) => q(dut),
+      q(0117) => q(dyu),
+      q(0118) => q(dzo),
+      q(0119) => q(efi),
+      q(0120) => q(egy),
+      q(0121) => q(eka),
+      q(0122) => q(elx),
+      q(0123) => q(eng),
+      q(0124) => q(enm),
+      q(0125) => q(epo),
+      q(0126) => q(est),
+      q(0127) => q(ewe),
+      q(0128) => q(ewo),
+      q(0129) => q(fan),
+      q(0130) => q(fao),
+      q(0131) => q(fat),
+      q(0132) => q(fij),
+      q(0133) => q(fil),
+      q(0134) => q(fin),
+      q(0135) => q(fiu),
+      q(0136) => q(fon),
+      q(0137) => q(fre),
+      q(0138) => q(frm),
+      q(0139) => q(fro),
+      q(0140) => q(frr),
+      q(0141) => q(frs),
+      q(0142) => q(fry),
+      q(0143) => q(ful),
+      q(0144) => q(fur),
+      q(0145) => q(gaa),
+      q(0146) => q(gay),
+      q(0147) => q(gba),
+      q(0148) => q(gem),
+      q(0149) => q(geo),
+      q(0150) => q(ger),
+      q(0151) => q(gez),
+      q(0152) => q(gil),
+      q(0153) => q(gla),
+      q(0154) => q(gle),
+      q(0155) => q(glg),
+      q(0156) => q(glv),
+      q(0157) => q(gmh),
+      q(0158) => q(goh),
+      q(0159) => q(gon),
+      q(0160) => q(gor),
+      q(0161) => q(got),
+      q(0162) => q(grb),
+      q(0163) => q(grc),
+      q(0164) => q(gre),
+      q(0165) => q(grn),
+      q(0166) => q(gsw),
+      q(0167) => q(guj),
+      q(0168) => q(gwi),
+      q(0169) => q(hai),
+      q(0170) => q(hat),
+      q(0171) => q(hau),
+      q(0172) => q(haw),
+      q(0173) => q(heb),
+      q(0174) => q(her),
+      q(0175) => q(hil),
+      q(0176) => q(him),
+      q(0177) => q(hin),
+      q(0178) => q(hit),
+      q(0179) => q(hmn),
+      q(0180) => q(hmo),
+      q(0181) => q(hrv),
+      q(0182) => q(hsb),
+      q(0183) => q(hun),
+      q(0184) => q(hup),
+      q(0185) => q(iba),
+      q(0186) => q(ibo),
+      q(0187) => q(ice),
+      q(0188) => q(ido),
+      q(0189) => q(iii),
+      q(0190) => q(ijo),
+      q(0191) => q(iku),
+      q(0192) => q(ile),
+      q(0193) => q(ilo),
+      q(0194) => q(ina),
+      q(0195) => q(inc),
+      q(0196) => q(ind),
+      q(0197) => q(ine),
+      q(0198) => q(inh),
+      q(0199) => q(ipk),
+      q(0200) => q(ira),
+      q(0201) => q(iro),
+      q(0202) => q(ita),
+      q(0203) => q(jav),
+      q(0204) => q(jbo),
+      q(0205) => q(jpn),
+      q(0206) => q(jpr),
+      q(0207) => q(jrb),
+      q(0208) => q(kaa),
+      q(0209) => q(kab),
+      q(0210) => q(kac),
+      q(0211) => q(kal),
+      q(0212) => q(kam),
+      q(0213) => q(kan),
+      q(0214) => q(kar),
+      q(0215) => q(kas),
+      q(0216) => q(kau),
+      q(0217) => q(kaw),
+      q(0218) => q(kaz),
+      q(0219) => q(kbd),
+      q(0220) => q(kha),
+      q(0221) => q(khi),
+      q(0222) => q(khm),
+      q(0223) => q(kho),
+      q(0224) => q(kik),
+      q(0225) => q(kin),
+      q(0226) => q(kir),
+      q(0227) => q(kmb),
+      q(0228) => q(kok),
+      q(0229) => q(kom),
+      q(0230) => q(kon),
+      q(0231) => q(kor),
+      q(0232) => q(kos),
+      q(0233) => q(kpe),
+      q(0234) => q(krc),
+      q(0235) => q(krl),
+      q(0236) => q(kro),
+      q(0237) => q(kru),
+      q(0238) => q(kua),
+      q(0239) => q(kum),
+      q(0240) => q(kur),
+      q(0241) => q(kut),
+      q(0242) => q(lad),
+      q(0243) => q(lah),
+      q(0244) => q(lam),
+      q(0245) => q(lao),
+      q(0246) => q(lat),
+      q(0247) => q(lav),
+      q(0248) => q(lez),
+      q(0249) => q(lim),
+      q(0250) => q(lin),
+      q(0251) => q(lit),
+      q(0252) => q(lol),
+      q(0253) => q(loz),
+      q(0254) => q(ltz),
+      q(0255) => q(lua),
+      q(0256) => q(lub),
+      q(0257) => q(lug),
+      q(0258) => q(lui),
+      q(0259) => q(lun),
+      q(0260) => q(luo),
+      q(0261) => q(lus),
+      q(0262) => q(mac),
+      q(0263) => q(mad),
+      q(0264) => q(mag),
+      q(0265) => q(mah),
+      q(0266) => q(mai),
+      q(0267) => q(mak),
+      q(0268) => q(mal),
+      q(0269) => q(man),
+      q(0270) => q(mao),
+      q(0271) => q(map),
+      q(0272) => q(mar),
+      q(0273) => q(mas),
+      q(0274) => q(may),
+      q(0275) => q(mdf),
+      q(0276) => q(mdr),
+      q(0277) => q(men),
+      q(0278) => q(mga),
+      q(0279) => q(mic),
+      q(0280) => q(min),
+      q(0281) => q(mis),
+      q(0282) => q(mkh),
+      q(0283) => q(mlg),
+      q(0284) => q(mlt),
+      q(0285) => q(mnc),
+      q(0286) => q(mni),
+      q(0287) => q(mno),
+      q(0288) => q(moh),
+      q(0289) => q(mon),
+      q(0290) => q(mos),
+      q(0291) => q(mul),
+      q(0292) => q(mun),
+      q(0293) => q(mus),
+      q(0294) => q(mwl),
+      q(0295) => q(mwr),
+      q(0296) => q(myn),
+      q(0297) => q(myv),
+      q(0298) => q(nah),
+      q(0299) => q(nai),
+      q(0300) => q(nap),
+      q(0301) => q(nau),
+      q(0302) => q(nav),
+      q(0303) => q(nbl),
+      q(0304) => q(nde),
+      q(0305) => q(ndo),
+      q(0306) => q(nds),
+      q(0307) => q(nep),
+      q(0308) => q(new),
+      q(0309) => q(nia),
+      q(0310) => q(nic),
+      q(0311) => q(niu),
+      q(0312) => q(nno),
+      q(0313) => q(nob),
+      q(0314) => q(nog),
+      q(0315) => q(non),
+      q(0316) => q(nor),
+      q(0317) => q(nqo),
+      q(0318) => q(nso),
+      q(0319) => q(nub),
+      q(0320) => q(nwc),
+      q(0321) => q(nya),
+      q(0322) => q(nym),
+      q(0323) => q(nyn),
+      q(0324) => q(nyo),
+      q(0325) => q(nzi),
+      q(0326) => q(oci),
+      q(0327) => q(oji),
+      q(0328) => q(ori),
+      q(0329) => q(orm),
+      q(0330) => q(osa),
+      q(0331) => q(oss),
+      q(0332) => q(ota),
+      q(0333) => q(oto),
+      q(0334) => q(paa),
+      q(0335) => q(pag),
+      q(0336) => q(pal),
+      q(0337) => q(pam),
+      q(0338) => q(pan),
+      q(0339) => q(pap),
+      q(0340) => q(pau),
+      q(0341) => q(peo),
+      q(0342) => q(per),
+      q(0343) => q(phi),
+      q(0344) => q(phn),
+      q(0345) => q(pli),
+      q(0346) => q(pol),
+      q(0347) => q(pon),
+      q(0348) => q(por),
+      q(0349) => q(pra),
+      q(0350) => q(pro),
+      q(0351) => q(pus),
+      q(0352) => q(qtz),
+      q(0353) => q(que),
+      q(0354) => q(raj),
+      q(0355) => q(rap),
+      q(0356) => q(rar),
+      q(0357) => q(roa),
+      q(0358) => q(roh),
+      q(0359) => q(rom),
+      q(0360) => q(rum),
+      q(0361) => q(run),
+      q(0362) => q(rup),
+      q(0363) => q(rus),
+      q(0364) => q(sad),
+      q(0365) => q(sag),
+      q(0366) => q(sah),
+      q(0367) => q(sai),
+      q(0368) => q(sal),
+      q(0369) => q(sam),
+      q(0370) => q(san),
+      q(0371) => q(sas),
+      q(0372) => q(sat),
+      q(0373) => q(scn),
+      q(0374) => q(sco),
+      q(0375) => q(sel),
+      q(0376) => q(sem),
+      q(0377) => q(sga),
+      q(0378) => q(sgn),
+      q(0379) => q(shn),
+      q(0380) => q(sid),
+      q(0381) => q(sin),
+      q(0382) => q(sio),
+      q(0383) => q(sit),
+      q(0384) => q(sla),
+      q(0385) => q(slo),
+      q(0386) => q(slv),
+      q(0387) => q(sma),
+      q(0388) => q(sme),
+      q(0389) => q(smi),
+      q(0390) => q(smj),
+      q(0391) => q(smn),
+      q(0392) => q(smo),
+      q(0393) => q(sms),
+      q(0394) => q(sna),
+      q(0395) => q(snd),
+      q(0396) => q(snk),
+      q(0397) => q(sog),
+      q(0398) => q(som),
+      q(0399) => q(son),
+      q(0400) => q(sot),
+      q(0401) => q(spa),
+      q(0402) => q(srd),
+      q(0403) => q(srn),
+      q(0404) => q(srp),
+      q(0405) => q(srr),
+      q(0406) => q(ssa),
+      q(0407) => q(ssw),
+      q(0408) => q(suk),
+      q(0409) => q(sun),
+      q(0410) => q(sus),
+      q(0411) => q(sux),
+      q(0412) => q(swa),
+      q(0413) => q(swe),
+      q(0414) => q(syc),
+      q(0415) => q(syr),
+      q(0416) => q(tah),
+      q(0417) => q(tai),
+      q(0418) => q(tam),
+      q(0419) => q(tat),
+      q(0420) => q(tel),
+      q(0421) => q(tem),
+      q(0422) => q(ter),
+      q(0423) => q(tet),
+      q(0424) => q(tgk),
+      q(0425) => q(tgl),
+      q(0426) => q(tha),
+      q(0427) => q(tib),
+      q(0428) => q(tig),
+      q(0429) => q(tir),
+      q(0430) => q(tiv),
+      q(0431) => q(tkl),
+      q(0432) => q(tlh),
+      q(0433) => q(tli),
+      q(0434) => q(tmh),
+      q(0435) => q(tog),
+      q(0436) => q(ton),
+      q(0437) => q(tpi),
+      q(0438) => q(tsi),
+      q(0439) => q(tsn),
+      q(0440) => q(tso),
+      q(0441) => q(tuk),
+      q(0442) => q(tum),
+      q(0443) => q(tup),
+      q(0444) => q(tur),
+      q(0445) => q(tut),
+      q(0446) => q(tvl),
+      q(0447) => q(twi),
+      q(0448) => q(tyv),
+      q(0449) => q(udm),
+      q(0450) => q(uga),
+      q(0451) => q(uig),
+      q(0452) => q(ukr),
+      q(0453) => q(umb),
+      q(0454) => q(und),
+      q(0455) => q(urd),
+      q(0456) => q(uzb),
+      q(0457) => q(vai),
+      q(0458) => q(ven),
+      q(0459) => q(vie),
+      q(0460) => q(vol),
+      q(0461) => q(vot),
+      q(0462) => q(wak),
+      q(0463) => q(wal),
+      q(0464) => q(war),
+      q(0465) => q(was),
+      q(0466) => q(wel),
+      q(0467) => q(wen),
+      q(0468) => q(wln),
+      q(0469) => q(wol),
+      q(0470) => q(xal),
+      q(0471) => q(xho),
+      q(0472) => q(yao),
+      q(0473) => q(yap),
+      q(0474) => q(yid),
+      q(0475) => q(yor),
+      q(0476) => q(ypk),
+      q(0477) => q(zap),
+      q(0478) => q(zbl),
+      q(0479) => q(zen),
+      q(0480) => q(zha),
+      q(0481) => q(znd),
+      q(0482) => q(zul),
+      q(0483) => q(zun),
+      q(0484) => q(zxx),
+      q(0485) => q(zza),
+      },
+   q(term) => {
+      q(0013) => q(sqi),
+      q(0024) => q(hye),
+      q(0044) => q(eus),
+      q(0066) => q(mya),
+      q(0079) => q(zho),
+      q(0101) => q(ces),
+      q(0116) => q(nld),
+      q(0137) => q(fra),
+      q(0149) => q(kat),
+      q(0150) => q(deu),
+      q(0164) => q(ell),
+      q(0187) => q(isl),
+      q(0262) => q(mkd),
+      q(0270) => q(mri),
+      q(0274) => q(msa),
+      q(0342) => q(fas),
+      q(0360) => q(ron),
+      q(0385) => q(slk),
+      q(0427) => q(bod),
+      q(0466) => q(cym),
+      },
+};
+
+1;
diff --git a/cpan/Locale-Codes/lib/Locale/Codes/Script.pm b/cpan/Locale-Codes/lib/Locale/Codes/Script.pm
new file mode 100644 (file)
index 0000000..6fb4256
--- /dev/null
@@ -0,0 +1,2495 @@
+package Locale::Codes::Script;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Tue Apr  6 08:17:27 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Script - script codes for the Locale::Script module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Script module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'script'}{'id'} = '0144';
+
+$Locale::Codes::Data{'script'}{'id2names'} = {
+   q(0001) => [
+      q(Arabic),
+      ],
+   q(0002) => [
+      q(Imperial Aramaic),
+      ],
+   q(0003) => [
+      q(Armenian),
+      ],
+   q(0004) => [
+      q(Avestan),
+      ],
+   q(0005) => [
+      q(Balinese),
+      ],
+   q(0006) => [
+      q(Bamum),
+      ],
+   q(0007) => [
+      q(Bassa Vah),
+      ],
+   q(0008) => [
+      q(Batak),
+      ],
+   q(0009) => [
+      q(Bengali),
+      ],
+   q(0010) => [
+      q(Blissymbols),
+      ],
+   q(0011) => [
+      q(Bopomofo),
+      ],
+   q(0012) => [
+      q(Brahmi),
+      ],
+   q(0013) => [
+      q(Braille),
+      ],
+   q(0014) => [
+      q(Buginese),
+      ],
+   q(0015) => [
+      q(Buhid),
+      ],
+   q(0016) => [
+      q(Chakma),
+      ],
+   q(0017) => [
+      q(Unified Canadian Aboriginal Syllabics),
+      ],
+   q(0018) => [
+      q(Carian),
+      ],
+   q(0019) => [
+      q(Cham),
+      ],
+   q(0020) => [
+      q(Cherokee),
+      ],
+   q(0021) => [
+      q(Cirth),
+      ],
+   q(0022) => [
+      q(Coptic),
+      ],
+   q(0023) => [
+      q(Cypriot),
+      ],
+   q(0024) => [
+      q(Cyrillic),
+      ],
+   q(0025) => [
+      q(Cyrillic (Old Church Slavonic variant)),
+      ],
+   q(0026) => [
+      q(Devanagari (Nagari)),
+      ],
+   q(0027) => [
+      q(Deseret (Mormon)),
+      ],
+   q(0028) => [
+      q(Egyptian demotic),
+      ],
+   q(0029) => [
+      q(Egyptian hieratic),
+      ],
+   q(0030) => [
+      q(Egyptian hieroglyphs),
+      ],
+   q(0031) => [
+      q(Ethiopic (Geez)),
+      ],
+   q(0032) => [
+      q(Georgian (Mkhedruli)),
+      ],
+   q(0033) => [
+      q(Khutsuri (Asomtavruli and Nuskhuri)),
+      ],
+   q(0034) => [
+      q(Glagolitic),
+      ],
+   q(0035) => [
+      q(Gothic),
+      ],
+   q(0036) => [
+      q(Grantha),
+      ],
+   q(0037) => [
+      q(Greek),
+      ],
+   q(0038) => [
+      q(Gujarati),
+      ],
+   q(0039) => [
+      q(Gurmukhi),
+      ],
+   q(0040) => [
+      q(Hangul (Hangul, Hangeul)),
+      ],
+   q(0041) => [
+      q(Han (Hanzi, Kanji, Hanja)),
+      ],
+   q(0042) => [
+      q(Hanunoo (Hanunoo)),
+      ],
+   q(0043) => [
+      q(Han (Simplified variant)),
+      ],
+   q(0044) => [
+      q(Han (Traditional variant)),
+      ],
+   q(0045) => [
+      q(Hebrew),
+      ],
+   q(0046) => [
+      q(Hiragana),
+      ],
+   q(0047) => [
+      q(Pahawh Hmong),
+      ],
+   q(0048) => [
+      q((alias for Hiragana + Katakana)),
+      ],
+   q(0049) => [
+      q(Old Hungarian),
+      ],
+   q(0050) => [
+      q(Indus (Harappan)),
+      ],
+   q(0051) => [
+      q(Old Italic (Etruscan, Oscan, etc.)),
+      ],
+   q(0052) => [
+      q(Javanese),
+      ],
+   q(0053) => [
+      q(Japanese (alias for Han + Hiragana + Katakana)),
+      ],
+   q(0054) => [
+      q(Kayah Li),
+      ],
+   q(0055) => [
+      q(Katakana),
+      ],
+   q(0056) => [
+      q(Kharoshthi),
+      ],
+   q(0057) => [
+      q(Khmer),
+      ],
+   q(0058) => [
+      q(Kannada),
+      ],
+   q(0059) => [
+      q(Korean (alias for Hangul + Han)),
+      ],
+   q(0060) => [
+      q(Kpelle),
+      ],
+   q(0061) => [
+      q(Kaithi),
+      ],
+   q(0062) => [
+      q(Tai Tham (Lanna)),
+      ],
+   q(0063) => [
+      q(Lao),
+      ],
+   q(0064) => [
+      q(Latin (Fraktur variant)),
+      ],
+   q(0065) => [
+      q(Latin (Gaelic variant)),
+      ],
+   q(0066) => [
+      q(Latin),
+      ],
+   q(0067) => [
+      q(Lepcha (Rong)),
+      ],
+   q(0068) => [
+      q(Limbu),
+      ],
+   q(0069) => [
+      q(Linear A),
+      ],
+   q(0070) => [
+      q(Linear B),
+      ],
+   q(0071) => [
+      q(Lisu (Fraser)),
+      ],
+   q(0072) => [
+      q(Loma),
+      ],
+   q(0073) => [
+      q(Lycian),
+      ],
+   q(0074) => [
+      q(Lydian),
+      ],
+   q(0075) => [
+      q(Mandaic, Mandaean),
+      ],
+   q(0076) => [
+      q(Manichaean),
+      ],
+   q(0077) => [
+      q(Mayan hieroglyphs),
+      ],
+   q(0078) => [
+      q(Mende),
+      ],
+   q(0079) => [
+      q(Meroitic Cursive),
+      ],
+   q(0080) => [
+      q(Meroitic Hieroglyphs),
+      ],
+   q(0081) => [
+      q(Malayalam),
+      ],
+   q(0082) => [
+      q(Moon (Moon code, Moon script, Moon type)),
+      ],
+   q(0083) => [
+      q(Mongolian),
+      ],
+   q(0084) => [
+      q(Meitei Mayek (Meithei, Meetei)),
+      ],
+   q(0085) => [
+      q(Myanmar (Burmese)),
+      ],
+   q(0086) => [
+      q(Old North Arabian (Ancient North Arabian)),
+      ],
+   q(0087) => [
+      q(Nabataean),
+      ],
+   q(0088) => [
+      q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)),
+      ],
+   q(0089) => [
+      q(N'Ko),
+      ],
+   q(0090) => [
+      q(Ogham),
+      ],
+   q(0091) => [
+      q(Ol Chiki (Ol Cemet, Ol, Santali)),
+      ],
+   q(0092) => [
+      q(Old Turkic, Orkhon Runic),
+      ],
+   q(0093) => [
+      q(Oriya),
+      ],
+   q(0094) => [
+      q(Osmanya),
+      ],
+   q(0095) => [
+      q(Palmyrene),
+      ],
+   q(0096) => [
+      q(Old Permic),
+      ],
+   q(0097) => [
+      q(Phags-pa),
+      ],
+   q(0098) => [
+      q(Inscriptional Pahlavi),
+      ],
+   q(0099) => [
+      q(Psalter Pahlavi),
+      ],
+   q(0100) => [
+      q(Book Pahlavi),
+      ],
+   q(0101) => [
+      q(Phoenician),
+      ],
+   q(0102) => [
+      q(Miao (Pollard)),
+      ],
+   q(0103) => [
+      q(Inscriptional Parthian),
+      ],
+   q(0104) => [
+      q(Reserved for private use (start)),
+      ],
+   q(0105) => [
+      q(Reserved for private use (end)),
+      ],
+   q(0106) => [
+      q(Rejang (Redjang, Kaganga)),
+      ],
+   q(0107) => [
+      q(Rongorongo),
+      ],
+   q(0108) => [
+      q(Runic),
+      ],
+   q(0109) => [
+      q(Samaritan),
+      ],
+   q(0110) => [
+      q(Sarati),
+      ],
+   q(0111) => [
+      q(Old South Arabian),
+      ],
+   q(0112) => [
+      q(Saurashtra),
+      ],
+   q(0113) => [
+      q(SignWriting),
+      ],
+   q(0114) => [
+      q(Shavian (Shaw)),
+      ],
+   q(0115) => [
+      q(Sinhala),
+      ],
+   q(0116) => [
+      q(Sundanese),
+      ],
+   q(0117) => [
+      q(Syloti Nagri),
+      ],
+   q(0118) => [
+      q(Syriac),
+      ],
+   q(0119) => [
+      q(Syriac (Estrangelo variant)),
+      ],
+   q(0120) => [
+      q(Syriac (Western variant)),
+      ],
+   q(0121) => [
+      q(Syriac (Eastern variant)),
+      ],
+   q(0122) => [
+      q(Tagbanwa),
+      ],
+   q(0123) => [
+      q(Tai Le),
+      ],
+   q(0124) => [
+      q(New Tai Lue),
+      ],
+   q(0125) => [
+      q(Tamil),
+      ],
+   q(0126) => [
+      q(Tai Viet),
+      ],
+   q(0127) => [
+      q(Telugu),
+      ],
+   q(0128) => [
+      q(Tengwar),
+      ],
+   q(0129) => [
+      q(Tifinagh (Berber)),
+      ],
+   q(0130) => [
+      q(Tagalog (Baybayin, Alibata)),
+      ],
+   q(0131) => [
+      q(Thaana),
+      ],
+   q(0132) => [
+      q(Thai),
+      ],
+   q(0133) => [
+      q(Tibetan),
+      ],
+   q(0134) => [
+      q(Ugaritic),
+      ],
+   q(0135) => [
+      q(Vai),
+      ],
+   q(0136) => [
+      q(Visible Speech),
+      ],
+   q(0137) => [
+      q(Warang Citi (Varang Kshiti)),
+      ],
+   q(0138) => [
+      q(Old Persian),
+      ],
+   q(0139) => [
+      q(Cuneiform, Sumero-Akkadian),
+      ],
+   q(0140) => [
+      q(Yi),
+      ],
+   q(0141) => [
+      q(Code for inherited script),
+      ],
+   q(0142) => [
+      q(Mathematical notation),
+      ],
+   q(0143) => [
+      q(Symbols),
+      ],
+};
+
+$Locale::Codes::Data{'script'}{'alias2id'} = {
+   q((alias for hiragana + katakana)) => [
+      q(0048),
+      q(0),
+      ],
+   q(arabic) => [
+      q(0001),
+      q(0),
+      ],
+   q(armenian) => [
+      q(0003),
+      q(0),
+      ],
+   q(avestan) => [
+      q(0004),
+      q(0),
+      ],
+   q(balinese) => [
+      q(0005),
+      q(0),
+      ],
+   q(bamum) => [
+      q(0006),
+      q(0),
+      ],
+   q(bassa vah) => [
+      q(0007),
+      q(0),
+      ],
+   q(batak) => [
+      q(0008),
+      q(0),
+      ],
+   q(bengali) => [
+      q(0009),
+      q(0),
+      ],
+   q(blissymbols) => [
+      q(0010),
+      q(0),
+      ],
+   q(book pahlavi) => [
+      q(0100),
+      q(0),
+      ],
+   q(bopomofo) => [
+      q(0011),
+      q(0),
+      ],
+   q(brahmi) => [
+      q(0012),
+      q(0),
+      ],
+   q(braille) => [
+      q(0013),
+      q(0),
+      ],
+   q(buginese) => [
+      q(0014),
+      q(0),
+      ],
+   q(buhid) => [
+      q(0015),
+      q(0),
+      ],
+   q(carian) => [
+      q(0018),
+      q(0),
+      ],
+   q(chakma) => [
+      q(0016),
+      q(0),
+      ],
+   q(cham) => [
+      q(0019),
+      q(0),
+      ],
+   q(cherokee) => [
+      q(0020),
+      q(0),
+      ],
+   q(cirth) => [
+      q(0021),
+      q(0),
+      ],
+   q(code for inherited script) => [
+      q(0141),
+      q(0),
+      ],
+   q(coptic) => [
+      q(0022),
+      q(0),
+      ],
+   q(cuneiform, sumero-akkadian) => [
+      q(0139),
+      q(0),
+      ],
+   q(cypriot) => [
+      q(0023),
+      q(0),
+      ],
+   q(cyrillic) => [
+      q(0024),
+      q(0),
+      ],
+   q(cyrillic (old church slavonic variant)) => [
+      q(0025),
+      q(0),
+      ],
+   q(deseret (mormon)) => [
+      q(0027),
+      q(0),
+      ],
+   q(devanagari (nagari)) => [
+      q(0026),
+      q(0),
+      ],
+   q(egyptian demotic) => [
+      q(0028),
+      q(0),
+      ],
+   q(egyptian hieratic) => [
+      q(0029),
+      q(0),
+      ],
+   q(egyptian hieroglyphs) => [
+      q(0030),
+      q(0),
+      ],
+   q(ethiopic (geez)) => [
+      q(0031),
+      q(0),
+      ],
+   q(georgian (mkhedruli)) => [
+      q(0032),
+      q(0),
+      ],
+   q(glagolitic) => [
+      q(0034),
+      q(0),
+      ],
+   q(gothic) => [
+      q(0035),
+      q(0),
+      ],
+   q(grantha) => [
+      q(0036),
+      q(0),
+      ],
+   q(greek) => [
+      q(0037),
+      q(0),
+      ],
+   q(gujarati) => [
+      q(0038),
+      q(0),
+      ],
+   q(gurmukhi) => [
+      q(0039),
+      q(0),
+      ],
+   q(han (hanzi, kanji, hanja)) => [
+      q(0041),
+      q(0),
+      ],
+   q(han (simplified variant)) => [
+      q(0043),
+      q(0),
+      ],
+   q(han (traditional variant)) => [
+      q(0044),
+      q(0),
+      ],
+   q(hangul (hangul, hangeul)) => [
+      q(0040),
+      q(0),
+      ],
+   q(hanunoo (hanunoo)) => [
+      q(0042),
+      q(0),
+      ],
+   q(hebrew) => [
+      q(0045),
+      q(0),
+      ],
+   q(hiragana) => [
+      q(0046),
+      q(0),
+      ],
+   q(imperial aramaic) => [
+      q(0002),
+      q(0),
+      ],
+   q(indus (harappan)) => [
+      q(0050),
+      q(0),
+      ],
+   q(inscriptional pahlavi) => [
+      q(0098),
+      q(0),
+      ],
+   q(inscriptional parthian) => [
+      q(0103),
+      q(0),
+      ],
+   q(japanese (alias for han + hiragana + katakana)) => [
+      q(0053),
+      q(0),
+      ],
+   q(javanese) => [
+      q(0052),
+      q(0),
+      ],
+   q(kaithi) => [
+      q(0061),
+      q(0),
+      ],
+   q(kannada) => [
+      q(0058),
+      q(0),
+      ],
+   q(katakana) => [
+      q(0055),
+      q(0),
+      ],
+   q(kayah li) => [
+      q(0054),
+      q(0),
+      ],
+   q(kharoshthi) => [
+      q(0056),
+      q(0),
+      ],
+   q(khmer) => [
+      q(0057),
+      q(0),
+      ],
+   q(khutsuri (asomtavruli and nuskhuri)) => [
+      q(0033),
+      q(0),
+      ],
+   q(korean (alias for hangul + han)) => [
+      q(0059),
+      q(0),
+      ],
+   q(kpelle) => [
+      q(0060),
+      q(0),
+      ],
+   q(lao) => [
+      q(0063),
+      q(0),
+      ],
+   q(latin) => [
+      q(0066),
+      q(0),
+      ],
+   q(latin (fraktur variant)) => [
+      q(0064),
+      q(0),
+      ],
+   q(latin (gaelic variant)) => [
+      q(0065),
+      q(0),
+      ],
+   q(lepcha (rong)) => [
+      q(0067),
+      q(0),
+      ],
+   q(limbu) => [
+      q(0068),
+      q(0),
+      ],
+   q(linear a) => [
+      q(0069),
+      q(0),
+      ],
+   q(linear b) => [
+      q(0070),
+      q(0),
+      ],
+   q(lisu (fraser)) => [
+      q(0071),
+      q(0),
+      ],
+   q(loma) => [
+      q(0072),
+      q(0),
+      ],
+   q(lycian) => [
+      q(0073),
+      q(0),
+      ],
+   q(lydian) => [
+      q(0074),
+      q(0),
+      ],
+   q(malayalam) => [
+      q(0081),
+      q(0),
+      ],
+   q(mandaic, mandaean) => [
+      q(0075),
+      q(0),
+      ],
+   q(manichaean) => [
+      q(0076),
+      q(0),
+      ],
+   q(mathematical notation) => [
+      q(0142),
+      q(0),
+      ],
+   q(mayan hieroglyphs) => [
+      q(0077),
+      q(0),
+      ],
+   q(meitei mayek (meithei, meetei)) => [
+      q(0084),
+      q(0),
+      ],
+   q(mende) => [
+      q(0078),
+      q(0),
+      ],
+   q(meroitic cursive) => [
+      q(0079),
+      q(0),
+      ],
+   q(meroitic hieroglyphs) => [
+      q(0080),
+      q(0),
+      ],
+   q(miao (pollard)) => [
+      q(0102),
+      q(0),
+      ],
+   q(mongolian) => [
+      q(0083),
+      q(0),
+      ],
+   q(moon (moon code, moon script, moon type)) => [
+      q(0082),
+      q(0),
+      ],
+   q(myanmar (burmese)) => [
+      q(0085),
+      q(0),
+      ],
+   q(n'ko) => [
+      q(0089),
+      q(0),
+      ],
+   q(nabataean) => [
+      q(0087),
+      q(0),
+      ],
+   q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [
+      q(0088),
+      q(0),
+      ],
+   q(new tai lue) => [
+      q(0124),
+      q(0),
+      ],
+   q(ogham) => [
+      q(0090),
+      q(0),
+      ],
+   q(ol chiki (ol cemet, ol, santali)) => [
+      q(0091),
+      q(0),
+      ],
+   q(old hungarian) => [
+      q(0049),
+      q(0),
+      ],
+   q(old italic (etruscan, oscan, etc.)) => [
+      q(0051),
+      q(0),
+      ],
+   q(old north arabian (ancient north arabian)) => [
+      q(0086),
+      q(0),
+      ],
+   q(old permic) => [
+      q(0096),
+      q(0),
+      ],
+   q(old persian) => [
+      q(0138),
+      q(0),
+      ],
+   q(old south arabian) => [
+      q(0111),
+      q(0),
+      ],
+   q(old turkic, orkhon runic) => [
+      q(0092),
+      q(0),
+      ],
+   q(oriya) => [
+      q(0093),
+      q(0),
+      ],
+   q(osmanya) => [
+      q(0094),
+      q(0),
+      ],
+   q(pahawh hmong) => [
+      q(0047),
+      q(0),
+      ],
+   q(palmyrene) => [
+      q(0095),
+      q(0),
+      ],
+   q(phags-pa) => [
+      q(0097),
+      q(0),
+      ],
+   q(phoenician) => [
+      q(0101),
+      q(0),
+      ],
+   q(psalter pahlavi) => [
+      q(0099),
+      q(0),
+      ],
+   q(rejang (redjang, kaganga)) => [
+      q(0106),
+      q(0),
+      ],
+   q(reserved for private use (end)) => [
+      q(0105),
+      q(0),
+      ],
+   q(reserved for private use (start)) => [
+      q(0104),
+      q(0),
+      ],
+   q(rongorongo) => [
+      q(0107),
+      q(0),
+      ],
+   q(runic) => [
+      q(0108),
+      q(0),
+      ],
+   q(samaritan) => [
+      q(0109),
+      q(0),
+      ],
+   q(sarati) => [
+      q(0110),
+      q(0),
+      ],
+   q(saurashtra) => [
+      q(0112),
+      q(0),
+      ],
+   q(shavian (shaw)) => [
+      q(0114),
+      q(0),
+      ],
+   q(signwriting) => [
+      q(0113),
+      q(0),
+      ],
+   q(sinhala) => [
+      q(0115),
+      q(0),
+      ],
+   q(sundanese) => [
+      q(0116),
+      q(0),
+      ],
+   q(syloti nagri) => [
+      q(0117),
+      q(0),
+      ],
+   q(symbols) => [
+      q(0143),
+      q(0),
+      ],
+   q(syriac) => [
+      q(0118),
+      q(0),
+      ],
+   q(syriac (eastern variant)) => [
+      q(0121),
+      q(0),
+      ],
+   q(syriac (estrangelo variant)) => [
+      q(0119),
+      q(0),
+      ],
+   q(syriac (western variant)) => [
+      q(0120),
+      q(0),
+      ],
+   q(tagalog (baybayin, alibata)) => [
+      q(0130),
+      q(0),
+      ],
+   q(tagbanwa) => [
+      q(0122),
+      q(0),
+      ],
+   q(tai le) => [
+      q(0123),
+      q(0),
+      ],
+   q(tai tham (lanna)) => [
+      q(0062),
+      q(0),
+      ],
+   q(tai viet) => [
+      q(0126),
+      q(0),
+      ],
+   q(tamil) => [
+      q(0125),
+      q(0),
+      ],
+   q(telugu) => [
+      q(0127),
+      q(0),
+      ],
+   q(tengwar) => [
+      q(0128),
+      q(0),
+      ],
+   q(thaana) => [
+      q(0131),
+      q(0),
+      ],
+   q(thai) => [
+      q(0132),
+      q(0),
+      ],
+   q(tibetan) => [
+      q(0133),
+      q(0),
+      ],
+   q(tifinagh (berber)) => [
+      q(0129),
+      q(0),
+      ],
+   q(ugaritic) => [
+      q(0134),
+      q(0),
+      ],
+   q(unified canadian aboriginal syllabics) => [
+      q(0017),
+      q(0),
+      ],
+   q(vai) => [
+      q(0135),
+      q(0),
+      ],
+   q(visible speech) => [
+      q(0136),
+      q(0),
+      ],
+   q(warang citi (varang kshiti)) => [
+      q(0137),
+      q(0),
+      ],
+   q(yi) => [
+      q(0140),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'script'}{'code2id'} = {
+   q(alpha) => {
+      q(Arab) => [
+         q(0001),
+         q(0),
+         ],
+      q(Armi) => [
+         q(0002),
+         q(0),
+         ],
+      q(Armn) => [
+         q(0003),
+         q(0),
+         ],
+      q(Avst) => [
+         q(0004),
+         q(0),
+         ],
+      q(Bali) => [
+         q(0005),
+         q(0),
+         ],
+      q(Bamu) => [
+         q(0006),
+         q(0),
+         ],
+      q(Bass) => [
+         q(0007),
+         q(0),
+         ],
+      q(Batk) => [
+         q(0008),
+         q(0),
+         ],
+      q(Beng) => [
+         q(0009),
+         q(0),
+         ],
+      q(Blis) => [
+         q(0010),
+         q(0),
+         ],
+      q(Bopo) => [
+         q(0011),
+         q(0),
+         ],
+      q(Brah) => [
+         q(0012),
+         q(0),
+         ],
+      q(Brai) => [
+         q(0013),
+         q(0),
+         ],
+      q(Bugi) => [
+         q(0014),
+         q(0),
+         ],
+      q(Buhd) => [
+         q(0015),
+         q(0),
+         ],
+      q(Cakm) => [
+         q(0016),
+         q(0),
+         ],
+      q(Cans) => [
+         q(0017),
+         q(0),
+         ],
+      q(Cari) => [
+         q(0018),
+         q(0),
+         ],
+      q(Cham) => [
+         q(0019),
+         q(0),
+         ],
+      q(Cher) => [
+         q(0020),
+         q(0),
+         ],
+      q(Cirt) => [
+         q(0021),
+         q(0),
+         ],
+      q(Copt) => [
+         q(0022),
+         q(0),
+         ],
+      q(Cprt) => [
+         q(0023),
+         q(0),
+         ],
+      q(Cyrl) => [
+         q(0024),
+         q(0),
+         ],
+      q(Cyrs) => [
+         q(0025),
+         q(0),
+         ],
+      q(Deva) => [
+         q(0026),
+         q(0),
+         ],
+      q(Dsrt) => [
+         q(0027),
+         q(0),
+         ],
+      q(Egyd) => [
+         q(0028),
+         q(0),
+         ],
+      q(Egyh) => [
+         q(0029),
+         q(0),
+         ],
+      q(Egyp) => [
+         q(0030),
+         q(0),
+         ],
+      q(Ethi) => [
+         q(0031),
+         q(0),
+         ],
+      q(Geok) => [
+         q(0033),
+         q(0),
+         ],
+      q(Geor) => [
+         q(0032),
+         q(0),
+         ],
+      q(Glag) => [
+         q(0034),
+         q(0),
+         ],
+      q(Goth) => [
+         q(0035),
+         q(0),
+         ],
+      q(Gran) => [
+         q(0036),
+         q(0),
+         ],
+      q(Grek) => [
+         q(0037),
+         q(0),
+         ],
+      q(Gujr) => [
+         q(0038),
+         q(0),
+         ],
+      q(Guru) => [
+         q(0039),
+         q(0),
+         ],
+      q(Hang) => [
+         q(0040),
+         q(0),
+         ],
+      q(Hani) => [
+         q(0041),
+         q(0),
+         ],
+      q(Hano) => [
+         q(0042),
+         q(0),
+         ],
+      q(Hans) => [
+         q(0043),
+         q(0),
+         ],
+      q(Hant) => [
+         q(0044),
+         q(0),
+         ],
+      q(Hebr) => [
+         q(0045),
+         q(0),
+         ],
+      q(Hira) => [
+         q(0046),
+         q(0),
+         ],
+      q(Hmng) => [
+         q(0047),
+         q(0),
+         ],
+      q(Hrkt) => [
+         q(0048),
+         q(0),
+         ],
+      q(Hung) => [
+         q(0049),
+         q(0),
+         ],
+      q(Inds) => [
+         q(0050),
+         q(0),
+         ],
+      q(Ital) => [
+         q(0051),
+         q(0),
+         ],
+      q(Java) => [
+         q(0052),
+         q(0),
+         ],
+      q(Jpan) => [
+         q(0053),
+         q(0),
+         ],
+      q(Kali) => [
+         q(0054),
+         q(0),
+         ],
+      q(Kana) => [
+         q(0055),
+         q(0),
+         ],
+      q(Khar) => [
+         q(0056),
+         q(0),
+         ],
+      q(Khmr) => [
+         q(0057),
+         q(0),
+         ],
+      q(Knda) => [
+         q(0058),
+         q(0),
+         ],
+      q(Kore) => [
+         q(0059),
+         q(0),
+         ],
+      q(Kpel) => [
+         q(0060),
+         q(0),
+         ],
+      q(Kthi) => [
+         q(0061),
+         q(0),
+         ],
+      q(Lana) => [
+         q(0062),
+         q(0),
+         ],
+      q(Laoo) => [
+         q(0063),
+         q(0),
+         ],
+      q(Latf) => [
+         q(0064),
+         q(0),
+         ],
+      q(Latg) => [
+         q(0065),
+         q(0),
+         ],
+      q(Latn) => [
+         q(0066),
+         q(0),
+         ],
+      q(Lepc) => [
+         q(0067),
+         q(0),
+         ],
+      q(Limb) => [
+         q(0068),
+         q(0),
+         ],
+      q(Lina) => [
+         q(0069),
+         q(0),
+         ],
+      q(Linb) => [
+         q(0070),
+         q(0),
+         ],
+      q(Lisu) => [
+         q(0071),
+         q(0),
+         ],
+      q(Loma) => [
+         q(0072),
+         q(0),
+         ],
+      q(Lyci) => [
+         q(0073),
+         q(0),
+         ],
+      q(Lydi) => [
+         q(0074),
+         q(0),
+         ],
+      q(Mand) => [
+         q(0075),
+         q(0),
+         ],
+      q(Mani) => [
+         q(0076),
+         q(0),
+         ],
+      q(Maya) => [
+         q(0077),
+         q(0),
+         ],
+      q(Mend) => [
+         q(0078),
+         q(0),
+         ],
+      q(Merc) => [
+         q(0079),
+         q(0),
+         ],
+      q(Mero) => [
+         q(0080),
+         q(0),
+         ],
+      q(Mlym) => [
+         q(0081),
+         q(0),
+         ],
+      q(Mong) => [
+         q(0083),
+         q(0),
+         ],
+      q(Moon) => [
+         q(0082),
+         q(0),
+         ],
+      q(Mtei) => [
+         q(0084),
+         q(0),
+         ],
+      q(Mymr) => [
+         q(0085),
+         q(0),
+         ],
+      q(Narb) => [
+         q(0086),
+         q(0),
+         ],
+      q(Nbat) => [
+         q(0087),
+         q(0),
+         ],
+      q(Nkgb) => [
+         q(0088),
+         q(0),
+         ],
+      q(Nkoo) => [
+         q(0089),
+         q(0),
+         ],
+      q(Ogam) => [
+         q(0090),
+         q(0),
+         ],
+      q(Olck) => [
+         q(0091),
+         q(0),
+         ],
+      q(Orkh) => [
+         q(0092),
+         q(0),
+         ],
+      q(Orya) => [
+         q(0093),
+         q(0),
+         ],
+      q(Osma) => [
+         q(0094),
+         q(0),
+         ],
+      q(Palm) => [
+         q(0095),
+         q(0),
+         ],
+      q(Perm) => [
+         q(0096),
+         q(0),
+         ],
+      q(Phag) => [
+         q(0097),
+         q(0),
+         ],
+      q(Phli) => [
+         q(0098),
+         q(0),
+         ],
+      q(Phlp) => [
+         q(0099),
+         q(0),
+         ],
+      q(Phlv) => [
+         q(0100),
+         q(0),
+         ],
+      q(Phnx) => [
+         q(0101),
+         q(0),
+         ],
+      q(Plrd) => [
+         q(0102),
+         q(0),
+         ],
+      q(Prti) => [
+         q(0103),
+         q(0),
+         ],
+      q(Qaaa) => [
+         q(0104),
+         q(0),
+         ],
+      q(Qabx) => [
+         q(0105),
+         q(0),
+         ],
+      q(Rjng) => [
+         q(0106),
+         q(0),
+         ],
+      q(Roro) => [
+         q(0107),
+         q(0),
+         ],
+      q(Runr) => [
+         q(0108),
+         q(0),
+         ],
+      q(Samr) => [
+         q(0109),
+         q(0),
+         ],
+      q(Sara) => [
+         q(0110),
+         q(0),
+         ],
+      q(Sarb) => [
+         q(0111),
+         q(0),
+         ],
+      q(Saur) => [
+         q(0112),
+         q(0),
+         ],
+      q(Sgnw) => [
+         q(0113),
+         q(0),
+         ],
+      q(Shaw) => [
+         q(0114),
+         q(0),
+         ],
+      q(Sinh) => [
+         q(0115),
+         q(0),
+         ],
+      q(Sund) => [
+         q(0116),
+         q(0),
+         ],
+      q(Sylo) => [
+         q(0117),
+         q(0),
+         ],
+      q(Syrc) => [
+         q(0118),
+         q(0),
+         ],
+      q(Syre) => [
+         q(0119),
+         q(0),
+         ],
+      q(Syrj) => [
+         q(0120),
+         q(0),
+         ],
+      q(Syrn) => [
+         q(0121),
+         q(0),
+         ],
+      q(Tagb) => [
+         q(0122),
+         q(0),
+         ],
+      q(Tale) => [
+         q(0123),
+         q(0),
+         ],
+      q(Talu) => [
+         q(0124),
+         q(0),
+         ],
+      q(Taml) => [
+         q(0125),
+         q(0),
+         ],
+      q(Tavt) => [
+         q(0126),
+         q(0),
+         ],
+      q(Telu) => [
+         q(0127),
+         q(0),
+         ],
+      q(Teng) => [
+         q(0128),
+         q(0),
+         ],
+      q(Tfng) => [
+         q(0129),
+         q(0),
+         ],
+      q(Tglg) => [
+         q(0130),
+         q(0),
+         ],
+      q(Thaa) => [
+         q(0131),
+         q(0),
+         ],
+      q(Thai) => [
+         q(0132),
+         q(0),
+         ],
+      q(Tibt) => [
+         q(0133),
+         q(0),
+         ],
+      q(Ugar) => [
+         q(0134),
+         q(0),
+         ],
+      q(Vaii) => [
+         q(0135),
+         q(0),
+         ],
+      q(Visp) => [
+         q(0136),
+         q(0),
+         ],
+      q(Wara) => [
+         q(0137),
+         q(0),
+         ],
+      q(Xpeo) => [
+         q(0138),
+         q(0),
+         ],
+      q(Xsux) => [
+         q(0139),
+         q(0),
+         ],
+      q(Yiii) => [
+         q(0140),
+         q(0),
+         ],
+      q(Zinh) => [
+         q(0141),
+         q(0),
+         ],
+      q(Zmth) => [
+         q(0142),
+         q(0),
+         ],
+      q(Zsym) => [
+         q(0143),
+         q(0),
+         ],
+      },
+   q(num) => {
+      q(020) => [
+         q(0139),
+         q(0),
+         ],
+      q(030) => [
+         q(0138),
+         q(0),
+         ],
+      q(040) => [
+         q(0134),
+         q(0),
+         ],
+      q(050) => [
+         q(0030),
+         q(0),
+         ],
+      q(060) => [
+         q(0029),
+         q(0),
+         ],
+      q(070) => [
+         q(0028),
+         q(0),
+         ],
+      q(090) => [
+         q(0077),
+         q(0),
+         ],
+      q(095) => [
+         q(0113),
+         q(0),
+         ],
+      q(100) => [
+         q(0080),
+         q(0),
+         ],
+      q(101) => [
+         q(0079),
+         q(0),
+         ],
+      q(105) => [
+         q(0111),
+         q(0),
+         ],
+      q(106) => [
+         q(0086),
+         q(0),
+         ],
+      q(115) => [
+         q(0101),
+         q(0),
+         ],
+      q(116) => [
+         q(0074),
+         q(0),
+         ],
+      q(120) => [
+         q(0129),
+         q(0),
+         ],
+      q(123) => [
+         q(0109),
+         q(0),
+         ],
+      q(124) => [
+         q(0002),
+         q(0),
+         ],
+      q(125) => [
+         q(0045),
+         q(0),
+         ],
+      q(126) => [
+         q(0095),
+         q(0),
+         ],
+      q(130) => [
+         q(0103),
+         q(0),
+         ],
+      q(131) => [
+         q(0098),
+         q(0),
+         ],
+      q(132) => [
+         q(0099),
+         q(0),
+         ],
+      q(133) => [
+         q(0100),
+         q(0),
+         ],
+      q(134) => [
+         q(0004),
+         q(0),
+         ],
+      q(135) => [
+         q(0118),
+         q(0),
+         ],
+      q(136) => [
+         q(0121),
+         q(0),
+         ],
+      q(137) => [
+         q(0120),
+         q(0),
+         ],
+      q(138) => [
+         q(0119),
+         q(0),
+         ],
+      q(139) => [
+         q(0076),
+         q(0),
+         ],
+      q(140) => [
+         q(0075),
+         q(0),
+         ],
+      q(145) => [
+         q(0083),
+         q(0),
+         ],
+      q(159) => [
+         q(0087),
+         q(0),
+         ],
+      q(160) => [
+         q(0001),
+         q(0),
+         ],
+      q(165) => [
+         q(0089),
+         q(0),
+         ],
+      q(170) => [
+         q(0131),
+         q(0),
+         ],
+      q(175) => [
+         q(0092),
+         q(0),
+         ],
+      q(176) => [
+         q(0049),
+         q(0),
+         ],
+      q(200) => [
+         q(0037),
+         q(0),
+         ],
+      q(201) => [
+         q(0018),
+         q(0),
+         ],
+      q(202) => [
+         q(0073),
+         q(0),
+         ],
+      q(204) => [
+         q(0022),
+         q(0),
+         ],
+      q(206) => [
+         q(0035),
+         q(0),
+         ],
+      q(210) => [
+         q(0051),
+         q(0),
+         ],
+      q(211) => [
+         q(0108),
+         q(0),
+         ],
+      q(212) => [
+         q(0090),
+         q(0),
+         ],
+      q(215) => [
+         q(0066),
+         q(0),
+         ],
+      q(216) => [
+         q(0065),
+         q(0),
+         ],
+      q(217) => [
+         q(0064),
+         q(0),
+         ],
+      q(218) => [
+         q(0082),
+         q(0),
+         ],
+      q(220) => [
+         q(0024),
+         q(0),
+         ],
+      q(221) => [
+         q(0025),
+         q(0),
+         ],
+      q(225) => [
+         q(0034),
+         q(0),
+         ],
+      q(227) => [
+         q(0096),
+         q(0),
+         ],
+      q(230) => [
+         q(0003),
+         q(0),
+         ],
+      q(240) => [
+         q(0032),
+         q(0),
+         ],
+      q(241) => [
+         q(0033),
+         q(0),
+         ],
+      q(250) => [
+         q(0027),
+         q(0),
+         ],
+      q(259) => [
+         q(0007),
+         q(0),
+         ],
+      q(260) => [
+         q(0094),
+         q(0),
+         ],
+      q(261) => [
+         q(0091),
+         q(0),
+         ],
+      q(262) => [
+         q(0137),
+         q(0),
+         ],
+      q(280) => [
+         q(0136),
+         q(0),
+         ],
+      q(281) => [
+         q(0114),
+         q(0),
+         ],
+      q(282) => [
+         q(0102),
+         q(0),
+         ],
+      q(285) => [
+         q(0011),
+         q(0),
+         ],
+      q(286) => [
+         q(0040),
+         q(0),
+         ],
+      q(287) => [
+         q(0059),
+         q(0),
+         ],
+      q(290) => [
+         q(0128),
+         q(0),
+         ],
+      q(291) => [
+         q(0021),
+         q(0),
+         ],
+      q(292) => [
+         q(0110),
+         q(0),
+         ],
+      q(300) => [
+         q(0012),
+         q(0),
+         ],
+      q(305) => [
+         q(0056),
+         q(0),
+         ],
+      q(310) => [
+         q(0039),
+         q(0),
+         ],
+      q(315) => [
+         q(0026),
+         q(0),
+         ],
+      q(316) => [
+         q(0117),
+         q(0),
+         ],
+      q(317) => [
+         q(0061),
+         q(0),
+         ],
+      q(320) => [
+         q(0038),
+         q(0),
+         ],
+      q(325) => [
+         q(0009),
+         q(0),
+         ],
+      q(327) => [
+         q(0093),
+         q(0),
+         ],
+      q(330) => [
+         q(0133),
+         q(0),
+         ],
+      q(331) => [
+         q(0097),
+         q(0),
+         ],
+      q(335) => [
+         q(0067),
+         q(0),
+         ],
+      q(336) => [
+         q(0068),
+         q(0),
+         ],
+      q(337) => [
+         q(0084),
+         q(0),
+         ],
+      q(340) => [
+         q(0127),
+         q(0),
+         ],
+      q(343) => [
+         q(0036),
+         q(0),
+         ],
+      q(344) => [
+         q(0112),
+         q(0),
+         ],
+      q(345) => [
+         q(0058),
+         q(0),
+         ],
+      q(346) => [
+         q(0125),
+         q(0),
+         ],
+      q(347) => [
+         q(0081),
+         q(0),
+         ],
+      q(348) => [
+         q(0115),
+         q(0),
+         ],
+      q(349) => [
+         q(0016),
+         q(0),
+         ],
+      q(350) => [
+         q(0085),
+         q(0),
+         ],
+      q(351) => [
+         q(0062),
+         q(0),
+         ],
+      q(352) => [
+         q(0132),
+         q(0),
+         ],
+      q(353) => [
+         q(0123),
+         q(0),
+         ],
+      q(354) => [
+         q(0124),
+         q(0),
+         ],
+      q(355) => [
+         q(0057),
+         q(0),
+         ],
+      q(356) => [
+         q(0063),
+         q(0),
+         ],
+      q(357) => [
+         q(0054),
+         q(0),
+         ],
+      q(358) => [
+         q(0019),
+         q(0),
+         ],
+      q(359) => [
+         q(0126),
+         q(0),
+         ],
+      q(360) => [
+         q(0005),
+         q(0),
+         ],
+      q(361) => [
+         q(0052),
+         q(0),
+         ],
+      q(362) => [
+         q(0116),
+         q(0),
+         ],
+      q(363) => [
+         q(0106),
+         q(0),
+         ],
+      q(365) => [
+         q(0008),
+         q(0),
+         ],
+      q(367) => [
+         q(0014),
+         q(0),
+         ],
+      q(370) => [
+         q(0130),
+         q(0),
+         ],
+      q(371) => [
+         q(0042),
+         q(0),
+         ],
+      q(372) => [
+         q(0015),
+         q(0),
+         ],
+      q(373) => [
+         q(0122),
+         q(0),
+         ],
+      q(399) => [
+         q(0071),
+         q(0),
+         ],
+      q(400) => [
+         q(0069),
+         q(0),
+         ],
+      q(401) => [
+         q(0070),
+         q(0),
+         ],
+      q(403) => [
+         q(0023),
+         q(0),
+         ],
+      q(410) => [
+         q(0046),
+         q(0),
+         ],
+      q(411) => [
+         q(0055),
+         q(0),
+         ],
+      q(412) => [
+         q(0048),
+         q(0),
+         ],
+      q(413) => [
+         q(0053),
+         q(0),
+         ],
+      q(420) => [
+         q(0088),
+         q(0),
+         ],
+      q(430) => [
+         q(0031),
+         q(0),
+         ],
+      q(435) => [
+         q(0006),
+         q(0),
+         ],
+      q(436) => [
+         q(0060),
+         q(0),
+         ],
+      q(437) => [
+         q(0072),
+         q(0),
+         ],
+      q(438) => [
+         q(0078),
+         q(0),
+         ],
+      q(440) => [
+         q(0017),
+         q(0),
+         ],
+      q(445) => [
+         q(0020),
+         q(0),
+         ],
+      q(450) => [
+         q(0047),
+         q(0),
+         ],
+      q(460) => [
+         q(0140),
+         q(0),
+         ],
+      q(470) => [
+         q(0135),
+         q(0),
+         ],
+      q(500) => [
+         q(0041),
+         q(0),
+         ],
+      q(501) => [
+         q(0043),
+         q(0),
+         ],
+      q(502) => [
+         q(0044),
+         q(0),
+         ],
+      q(550) => [
+         q(0010),
+         q(0),
+         ],
+      q(570) => [
+         q(0013),
+         q(0),
+         ],
+      q(610) => [
+         q(0050),
+         q(0),
+         ],
+      q(620) => [
+         q(0107),
+         q(0),
+         ],
+      q(900) => [
+         q(0104),
+         q(0),
+         ],
+      q(949) => [
+         q(0105),
+         q(0),
+         ],
+      q(994) => [
+         q(0141),
+         q(0),
+         ],
+      q(995) => [
+         q(0142),
+         q(0),
+         ],
+      q(996) => [
+         q(0143),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'script'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(Arab),
+      q(0002) => q(Armi),
+      q(0003) => q(Armn),
+      q(0004) => q(Avst),
+      q(0005) => q(Bali),
+      q(0006) => q(Bamu),
+      q(0007) => q(Bass),
+      q(0008) => q(Batk),
+      q(0009) => q(Beng),
+      q(0010) => q(Blis),
+      q(0011) => q(Bopo),
+      q(0012) => q(Brah),
+      q(0013) => q(Brai),
+      q(0014) => q(Bugi),
+      q(0015) => q(Buhd),
+      q(0016) => q(Cakm),
+      q(0017) => q(Cans),
+      q(0018) => q(Cari),
+      q(0019) => q(Cham),
+      q(0020) => q(Cher),
+      q(0021) => q(Cirt),
+      q(0022) => q(Copt),
+      q(0023) => q(Cprt),
+      q(0024) => q(Cyrl),
+      q(0025) => q(Cyrs),
+      q(0026) => q(Deva),
+      q(0027) => q(Dsrt),
+      q(0028) => q(Egyd),
+      q(0029) => q(Egyh),
+      q(0030) => q(Egyp),
+      q(0031) => q(Ethi),
+      q(0032) => q(Geor),
+      q(0033) => q(Geok),
+      q(0034) => q(Glag),
+      q(0035) => q(Goth),
+      q(0036) => q(Gran),
+      q(0037) => q(Grek),
+      q(0038) => q(Gujr),
+      q(0039) => q(Guru),
+      q(0040) => q(Hang),
+      q(0041) => q(Hani),
+      q(0042) => q(Hano),
+      q(0043) => q(Hans),
+      q(0044) => q(Hant),
+      q(0045) => q(Hebr),
+      q(0046) => q(Hira),
+      q(0047) => q(Hmng),
+      q(0048) => q(Hrkt),
+      q(0049) => q(Hung),
+      q(0050) => q(Inds),
+      q(0051) => q(Ital),
+      q(0052) => q(Java),
+      q(0053) => q(Jpan),
+      q(0054) => q(Kali),
+      q(0055) => q(Kana),
+      q(0056) => q(Khar),
+      q(0057) => q(Khmr),
+      q(0058) => q(Knda),
+      q(0059) => q(Kore),
+      q(0060) => q(Kpel),
+      q(0061) => q(Kthi),
+      q(0062) => q(Lana),
+      q(0063) => q(Laoo),
+      q(0064) => q(Latf),
+      q(0065) => q(Latg),
+      q(0066) => q(Latn),
+      q(0067) => q(Lepc),
+      q(0068) => q(Limb),
+      q(0069) => q(Lina),
+      q(0070) => q(Linb),
+      q(0071) => q(Lisu),
+      q(0072) => q(Loma),
+      q(0073) => q(Lyci),
+      q(0074) => q(Lydi),
+      q(0075) => q(Mand),
+      q(0076) => q(Mani),
+      q(0077) => q(Maya),
+      q(0078) => q(Mend),
+      q(0079) => q(Merc),
+      q(0080) => q(Mero),
+      q(0081) => q(Mlym),
+      q(0082) => q(Moon),
+      q(0083) => q(Mong),
+      q(0084) => q(Mtei),
+      q(0085) => q(Mymr),
+      q(0086) => q(Narb),
+      q(0087) => q(Nbat),
+      q(0088) => q(Nkgb),
+      q(0089) => q(Nkoo),
+      q(0090) => q(Ogam),
+      q(0091) => q(Olck),
+      q(0092) => q(Orkh),
+      q(0093) => q(Orya),
+      q(0094) => q(Osma),
+      q(0095) => q(Palm),
+      q(0096) => q(Perm),
+      q(0097) => q(Phag),
+      q(0098) => q(Phli),
+      q(0099) => q(Phlp),
+      q(0100) => q(Phlv),
+      q(0101) => q(Phnx),
+      q(0102) => q(Plrd),
+      q(0103) => q(Prti),
+      q(0104) => q(Qaaa),
+      q(0105) => q(Qabx),
+      q(0106) => q(Rjng),
+      q(0107) => q(Roro),
+      q(0108) => q(Runr),
+      q(0109) => q(Samr),
+      q(0110) => q(Sara),
+      q(0111) => q(Sarb),
+      q(0112) => q(Saur),
+      q(0113) => q(Sgnw),
+      q(0114) => q(Shaw),
+      q(0115) => q(Sinh),
+      q(0116) => q(Sund),
+      q(0117) => q(Sylo),
+      q(0118) => q(Syrc),
+      q(0119) => q(Syre),
+      q(0120) => q(Syrj),
+      q(0121) => q(Syrn),
+      q(0122) => q(Tagb),
+      q(0123) => q(Tale),
+      q(0124) => q(Talu),
+      q(0125) => q(Taml),
+      q(0126) => q(Tavt),
+      q(0127) => q(Telu),
+      q(0128) => q(Teng),
+      q(0129) => q(Tfng),
+      q(0130) => q(Tglg),
+      q(0131) => q(Thaa),
+      q(0132) => q(Thai),
+      q(0133) => q(Tibt),
+      q(0134) => q(Ugar),
+      q(0135) => q(Vaii),
+      q(0136) => q(Visp),
+      q(0137) => q(Wara),
+      q(0138) => q(Xpeo),
+      q(0139) => q(Xsux),
+      q(0140) => q(Yiii),
+      q(0141) => q(Zinh),
+      q(0142) => q(Zmth),
+      q(0143) => q(Zsym),
+      },
+   q(num) => {
+      q(0001) => q(160),
+      q(0002) => q(124),
+      q(0003) => q(230),
+      q(0004) => q(134),
+      q(0005) => q(360),
+      q(0006) => q(435),
+      q(0007) => q(259),
+      q(0008) => q(365),
+      q(0009) => q(325),
+      q(0010) => q(550),
+      q(0011) => q(285),
+      q(0012) => q(300),
+      q(0013) => q(570),
+      q(0014) => q(367),
+      q(0015) => q(372),
+      q(0016) => q(349),
+      q(0017) => q(440),
+      q(0018) => q(201),
+      q(0019) => q(358),
+      q(0020) => q(445),
+      q(0021) => q(291),
+      q(0022) => q(204),
+      q(0023) => q(403),
+      q(0024) => q(220),
+      q(0025) => q(221),
+      q(0026) => q(315),
+      q(0027) => q(250),
+      q(0028) => q(070),
+      q(0029) => q(060),
+      q(0030) => q(050),
+      q(0031) => q(430),
+      q(0032) => q(240),
+      q(0033) => q(241),
+      q(0034) => q(225),
+      q(0035) => q(206),
+      q(0036) => q(343),
+      q(0037) => q(200),
+      q(0038) => q(320),
+      q(0039) => q(310),
+      q(0040) => q(286),
+      q(0041) => q(500),
+      q(0042) => q(371),
+      q(0043) => q(501),
+      q(0044) => q(502),
+      q(0045) => q(125),
+      q(0046) => q(410),
+      q(0047) => q(450),
+      q(0048) => q(412),
+      q(0049) => q(176),
+      q(0050) => q(610),
+      q(0051) => q(210),
+      q(0052) => q(361),
+      q(0053) => q(413),
+      q(0054) => q(357),
+      q(0055) => q(411),
+      q(0056) => q(305),
+      q(0057) => q(355),
+      q(0058) => q(345),
+      q(0059) => q(287),
+      q(0060) => q(436),
+      q(0061) => q(317),
+      q(0062) => q(351),
+      q(0063) => q(356),
+      q(0064) => q(217),
+      q(0065) => q(216),
+      q(0066) => q(215),
+      q(0067) => q(335),
+      q(0068) => q(336),
+      q(0069) => q(400),
+      q(0070) => q(401),
+      q(0071) => q(399),
+      q(0072) => q(437),
+      q(0073) => q(202),
+      q(0074) => q(116),
+      q(0075) => q(140),
+      q(0076) => q(139),
+      q(0077) => q(090),
+      q(0078) => q(438),
+      q(0079) => q(101),
+      q(0080) => q(100),
+      q(0081) => q(347),
+      q(0082) => q(218),
+      q(0083) => q(145),
+      q(0084) => q(337),
+      q(0085) => q(350),
+      q(0086) => q(106),
+      q(0087) => q(159),
+      q(0088) => q(420),
+      q(0089) => q(165),
+      q(0090) => q(212),
+      q(0091) => q(261),
+      q(0092) => q(175),
+      q(0093) => q(327),
+      q(0094) => q(260),
+      q(0095) => q(126),
+      q(0096) => q(227),
+      q(0097) => q(331),
+      q(0098) => q(131),
+      q(0099) => q(132),
+      q(0100) => q(133),
+      q(0101) => q(115),
+      q(0102) => q(282),
+      q(0103) => q(130),
+      q(0104) => q(900),
+      q(0105) => q(949),
+      q(0106) => q(363),
+      q(0107) => q(620),
+      q(0108) => q(211),
+      q(0109) => q(123),
+      q(0110) => q(292),
+      q(0111) => q(105),
+      q(0112) => q(344),
+      q(0113) => q(095),
+      q(0114) => q(281),
+      q(0115) => q(348),
+      q(0116) => q(362),
+      q(0117) => q(316),
+      q(0118) => q(135),
+      q(0119) => q(138),
+      q(0120) => q(137),
+      q(0121) => q(136),
+      q(0122) => q(373),
+      q(0123) => q(353),
+      q(0124) => q(354),
+      q(0125) => q(346),
+      q(0126) => q(359),
+      q(0127) => q(340),
+      q(0128) => q(290),
+      q(0129) => q(120),
+      q(0130) => q(370),
+      q(0131) => q(170),
+      q(0132) => q(352),
+      q(0133) => q(330),
+      q(0134) => q(040),
+      q(0135) => q(470),
+      q(0136) => q(280),
+      q(0137) => q(262),
+      q(0138) => q(030),
+      q(0139) => q(020),
+      q(0140) => q(460),
+      q(0141) => q(994),
+      q(0142) => q(995),
+      q(0143) => q(996),
+      },
+};
+
+1;
index d8ef8f7..c6e52c5 100644 (file)
@@ -1,31 +1,80 @@
-#
-# Locale::Constants - defined constants for identifying codesets
-#
-# $Id: Constants.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
 package Locale::Constants;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
 use strict;
+use warnings;
 
 require Exporter;
 
 #-----------------------------------------------------------------------
 #      Public Global Variables
 #-----------------------------------------------------------------------
+
 use vars qw($VERSION @ISA @EXPORT);
-$VERSION   = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA   = qw(Exporter);
-@EXPORT = qw(LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC
-               LOCALE_CODE_DEFAULT);
+
+$VERSION='3.12';
+@ISA    = qw(Exporter);
+@EXPORT  = qw(LOCALE_CODE_ALPHA_2
+              LOCALE_CODE_ALPHA_3
+              LOCALE_CODE_NUMERIC
+              LOCALE_CODE_FIPS
+              LOCALE_CODE_DOM
+              LOCALE_CODE_DEFAULT
+
+              LOCALE_LANG_ALPHA_2
+              LOCALE_LANG_ALPHA_3
+              LOCALE_LANG_TERM
+              LOCALE_LANG_DEFAULT
+
+              LOCALE_CURR_ALPHA
+              LOCALE_CURR_NUMERIC
+              LOCALE_CURR_DEFAULT
+
+              LOCALE_SCRIPT_ALPHA
+              LOCALE_SCRIPT_NUMERIC
+              LOCALE_SCRIPT_DEFAULT
+            );
 
 #-----------------------------------------------------------------------
 #      Constants
 #-----------------------------------------------------------------------
-use constant LOCALE_CODE_ALPHA_2 => 1;
-use constant LOCALE_CODE_ALPHA_3 => 2;
-use constant LOCALE_CODE_NUMERIC => 3;
 
-use constant LOCALE_CODE_DEFAULT => LOCALE_CODE_ALPHA_2;
+use constant LOCALE_CODE_ALPHA_2   => 1;
+use constant LOCALE_CODE_ALPHA_3   => 2;
+use constant LOCALE_CODE_NUMERIC   => 3;
+use constant LOCALE_CODE_FIPS      => 4;
+use constant LOCALE_CODE_DOM       => 5;
 
-1;
+use constant LOCALE_CODE_DEFAULT   => LOCALE_CODE_ALPHA_2;
 
+use constant LOCALE_LANG_ALPHA_2   => 1;
+use constant LOCALE_LANG_ALPHA_3   => 2;
+use constant LOCALE_LANG_TERM      => 3;
+
+use constant LOCALE_LANG_DEFAULT   => LOCALE_LANG_ALPHA_2;
+
+use constant LOCALE_CURR_ALPHA     => 1;
+use constant LOCALE_CURR_NUMERIC   => 2;
+
+use constant LOCALE_CURR_DEFAULT   => LOCALE_CURR_ALPHA;
+
+use constant LOCALE_SCRIPT_ALPHA   => 1;
+use constant LOCALE_SCRIPT_NUMERIC => 2;
+
+use constant LOCALE_SCRIPT_DEFAULT => LOCALE_SCRIPT_ALPHA;
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
index ae42abb..dcfff9d 100644 (file)
@@ -1,73 +1,38 @@
+=pod
 
 =head1 NAME
 
 Locale::Constants - constants for Locale codes
 
-=head1 SYNOPSIS
-
-    use Locale::Constants;
-    
-    $codeset = LOCALE_CODE_ALPHA_2;
-
 =head1 DESCRIPTION
 
-B<Locale::Constants> defines symbols which are used in
-the four modules from the Locale-Codes distribution:
-
-       Locale::Language
-       Locale::Country
-       Locale::Currency
-       Locale::Script
-
-B<Note:> at the moment only Locale::Country and Locale::Script
-support more than one code set.
+B<Locale::Constants> defines symbols which are used in the other
+modules from the Locale-Codes distribution.
 
-The symbols defined are used to specify which codes you
-want to be used:
+You shouldn't have to C<use> this module directly yourself - it is
+used by the other Locale modules, which in turn export the symbols.
 
-       LOCALE_CODE_ALPHA_2
-       LOCALE_CODE_ALPHA_3
-       LOCALE_CODE_NUMERIC
-
-You shouldn't have to C<use> this module directly yourself -
-it is used by the three Locale modules, which in turn export
-the symbols.
+The constants are documented in each of the Locale modules.
 
 =head1 KNOWN BUGS AND LIMITATIONS
 
-None at the moment.
+None known.
 
 =head1 SEE ALSO
 
-=over 4
-
-=item Locale::Language
-
-Codes for identification of languages.
-
-=item Locale::Country
-
-Codes for identification of countries.
-
-=item Locale::Script
-
-Codes for identification of scripts.
-
-=item Locale::Currency
-
-Codes for identification of currencies and funds.
-
-=back
+Locale::Codes
 
 =head1 AUTHOR
 
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
 
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
 
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
 
-Copyright (C) 2001, Canon Research Centre Europe (CRE).
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
 
 This module is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index 2ecd130..e9c5c85 100644 (file)
-#
-# Locale::Country - ISO codes for country identification (ISO 3166)
-#
-# $Id: Country.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
 package Locale::Country;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
 use strict;
+use warnings;
 require 5.002;
 
 require Exporter;
 use Carp;
+use Locale::Codes;
 use Locale::Constants;
+use Locale::Codes::Country;
 
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
 
-#-----------------------------------------------------------------------
-#      Public Global Variables
-#-----------------------------------------------------------------------
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION   = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
+
+$VERSION='3.12';
 @ISA       = qw(Exporter);
-@EXPORT    = qw(code2country country2code
-                all_country_codes all_country_names
-               country_code2code
-               LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
+@EXPORT    = qw(code2country
+                country2code
+                all_country_codes
+                all_country_names
+                country_code2code
+                LOCALE_CODE_ALPHA_2
+                LOCALE_CODE_ALPHA_3
+                LOCALE_CODE_NUMERIC
+                LOCALE_CODE_FIPS
+                LOCALE_CODE_DOM
+               );
+
+sub _code {
+   my($code,$codeset) = @_;
+   $code = ""  if (! $code);
+
+   $codeset = LOCALE_CODE_DEFAULT  if (! defined($codeset)  ||  $codeset eq "");
+
+   if ($codeset =~ /^\d+$/) {
+      if      ($codeset ==  LOCALE_CODE_ALPHA_2) {
+         $codeset = "alpha2";
+      } elsif ($codeset ==  LOCALE_CODE_ALPHA_3) {
+         $codeset = "alpha3";
+      } elsif ($codeset ==  LOCALE_CODE_NUMERIC) {
+         $codeset = "num";
+      } elsif ($codeset ==  LOCALE_CODE_FIPS) {
+         $codeset = "fips";
+      } elsif ($codeset ==  LOCALE_CODE_DOM) {
+         $codeset = "dom";
+      } else {
+         return (1);
+      }
+   }
+
+   if      ($codeset eq "alpha2"  ||
+            $codeset eq "alpha3") {
+      $code    = lc($code);
+   } elsif ($codeset eq "num") {
+      if (defined($code)  &&  $code ne "") {
+         return (1)  unless ($code =~ /^\d+$/);
+         $code    = sprintf("%.3d", $code);
+      }
+   } elsif ($codeset eq "fips"  ||
+            $codeset eq "dom") {
+      $code    = uc($code);
+   } else {
+      return (1);
+   }
+
+   return (0,$code,$codeset);
+}
 
-#-----------------------------------------------------------------------
-#      Private Global Variables
-#-----------------------------------------------------------------------
-my $CODES     = [];
-my $COUNTRIES = [];
+#=======================================================================
+#
+# code2country ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2country {
+   my($err,$code,$codeset) = _code(@_);
+   return undef  if ($err  ||
+                     ! defined $code);
 
+   return Locale::Codes::_code2name("country",$code,$codeset);
+}
 
 #=======================================================================
 #
-# code2country ( CODE [, CODESET ] )
+# country2code ( COUNTRY [,CODESET] )
 #
 #=======================================================================
-sub code2country
-{
-    my $code = shift;
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
-    return undef unless defined $code;
-
-    #-------------------------------------------------------------------
-    # Make sure the code is in the right form before we use it
-    # to look up the corresponding country.
-    # We have to sprintf because the codes are given as 3-digits,
-    # with leading 0's. Eg 052 for Barbados.
-    #-------------------------------------------------------------------
-    if ($codeset == LOCALE_CODE_NUMERIC)
-    {
-       return undef if ($code =~ /\D/);
-       $code = sprintf("%.3d", $code);
-    }
-    else
-    {
-       $code = lc($code);
-    }
-
-    if (exists $CODES->[$codeset]->{$code})
-    {
-        return $CODES->[$codeset]->{$code};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such country code!
-        #---------------------------------------------------------------
-        return undef;
-    }
-}
 
+sub country2code {
+   my($country,$codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err  ||
+                     ! defined $country);
+
+   return Locale::Codes::_name2code("country",$country,$codeset);
+}
 
 #=======================================================================
 #
-# country2code ( NAME [, CODESET ] )
+# country_code2code ( CODE,CODESET_IN,CODESET_OUT )
 #
 #=======================================================================
-sub country2code
-{
-    my $country = shift;
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
-    return undef unless defined $country;
-    $country = lc($country);
-    if (exists $COUNTRIES->[$codeset]->{$country})
-    {
-        return $COUNTRIES->[$codeset]->{$country};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such country!
-        #---------------------------------------------------------------
-        return undef;
-    }
-}
 
+sub country_code2code {
+   (@_ == 3) or croak "country_code2code() takes 3 arguments!";
+   my($code,$inset,$outset) = @_;
+   my($err,$tmp);
+   ($err,$code,$inset) = _code($code,$inset);
+   return undef  if ($err);
+   ($err,$tmp,$outset) = _code("",$outset);
+   return undef  if ($err);
+
+   return Locale::Codes::_code2code("country",$code,$inset,$outset);
+}
 
 #=======================================================================
 #
-# country_code2code ( NAME [, CODESET ] )
+# all_country_codes ( [CODESET] )
 #
 #=======================================================================
-sub country_code2code
-{
-    (@_ == 3) or croak "country_code2code() takes 3 arguments!";
-
-    my $code = shift;
-    my $inset = shift;
-    my $outset = shift;
-    my $outcode;
-    my $country;
-
-
-    return undef if $inset == $outset;
-    $country = code2country($code, $inset);
-    return undef if not defined $country;
-    $outcode = country2code($country, $outset);
-    return $outcode;
+
+sub all_country_codes {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_codes("country",$codeset);
 }
 
 
 #=======================================================================
 #
-# all_country_codes ( [ CODESET ] )
+# all_country_names ( [CODESET] )
 #
 #=======================================================================
-sub all_country_codes
-{
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 
-    return keys %{ $CODES->[$codeset] };
-}
+sub all_country_names {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
 
+   return Locale::Codes::_all_names("country",$codeset);
+}
 
 #=======================================================================
 #
-# all_country_names ( [ CODESET ] )
+# rename_country ( CODE,NAME [,CODESET] )
 #
 #=======================================================================
-sub all_country_names
-{
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 
-    return values %{ $CODES->[$codeset] };
-}
+sub rename_country {
+   my($code,$new_name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
 
+   return Locale::Codes::_rename("country",$code,$new_name,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# alias_code ( ALIAS => CODE [ , CODESET ] )
+# add_country ( CODE,NAME [,CODESET] )
 #
-# Add an alias for an existing code. If the CODESET isn't specified,
-# then we use the default (currently the alpha-2 codeset).
+#=======================================================================
+
+sub add_country {
+   my($code,$name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_add_code("country",$code,$name,$codeset,$nowarn);
+}
+
+#=======================================================================
 #
-#   Locale::Country::alias_code('uk' => 'gb');
+# delete_country ( CODE [,CODESET] )
 #
 #=======================================================================
-sub alias_code
-{
-    my $alias = shift;
-    my $real  = shift;
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 
-    my $country;
+sub delete_country {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
 
+   return Locale::Codes::_delete_code("country",$code,$codeset,$nowarn);
+}
 
-    if (not exists $CODES->[$codeset]->{$real})
-    {
-        carp "attempt to alias \"$alias\" to unknown country code \"$real\"\n";
-        return undef;
-    }
-    $country = $CODES->[$codeset]->{$real};
-    $CODES->[$codeset]->{$alias} = $country;
-    $COUNTRIES->[$codeset]->{"\L$country"} = $alias;
+#=======================================================================
+#
+# add_country_alias ( NAME,NEW_NAME )
+#
+#=======================================================================
 
-    return $alias;
+sub add_country_alias {
+   my($name,$new_name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_add_alias("country",$name,$new_name,$nowarn);
 }
 
-# old name of function for backwards compatibility
-*_alias_code = *alias_code;
+#=======================================================================
+#
+# delete_country_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_country_alias {
+   my($name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
 
+   return Locale::Codes::_delete_alias("country",$name,$nowarn);
+}
 
 #=======================================================================
 #
-# rename_country
-#
-# change the official name for a country, eg:
-#      gb => 'Great Britain'
-# rather than the standard 'United Kingdom'. The original is retained
-# as an alias, but the new name will be returned if you lookup the
-# name from code.
+# rename_country_code ( CODE,NEW_CODE [,CODESET] )
 #
 #=======================================================================
-sub rename_country
-{
-    my $code     = shift;
-    my $new_name = shift;
-    my $codeset = @_ > 0 ? shift : _code2codeset($code);
-    my $country;
-    my $c;
-
-
-    if (not defined $codeset)
-    {
-        carp "rename_country(): unknown country code \"$code\"\n";
-        return 0;
-    }
-
-    $country = $CODES->[$codeset]->{$code};
-
-    foreach my $cset (LOCALE_CODE_ALPHA_2,
-                       LOCALE_CODE_ALPHA_3,
-                       LOCALE_CODE_NUMERIC)
-    {
-       if ($cset == $codeset)
-       {
-           $c = $code;
-       }
-       else
-       {
-           $c = country_code2code($code, $codeset, $cset);
-       }
-
-       $CODES->[$cset]->{$c} = $new_name;
-       $COUNTRIES->[$cset]->{"\L$new_name"} = $c;
-    }
-
-    return 1;
-}
 
+sub rename_country_code {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
+
+   return Locale::Codes::_rename_code("country",$code,$new_code,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# _code2codeset
-#
-# given a country code in an unknown codeset, return the codeset
-# it is from, or undef.
+# add_country_code_alias ( CODE,NEW_CODE [,CODESET] )
 #
 #=======================================================================
-sub _code2codeset
-{
-    my $code = shift;
-
 
-    foreach my $codeset (LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3,
-                       LOCALE_CODE_NUMERIC)
-    {
-       return $codeset if (exists $CODES->[$codeset]->{$code})
-    }
+sub add_country_code_alias {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
 
-    return undef;
+   return Locale::Codes::_add_code_alias("country",$code,$new_code,$codeset,$nowarn);
 }
 
+#=======================================================================
+#
+# delete_country_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_country_code_alias {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code_alias("country",$code,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# initialisation code - stuff the DATA into the ALPHA2 hash
+# Old function for backward compatibility
 #
 #=======================================================================
-{
-    my   ($alpha2, $alpha3, $numeric);
-    my   ($country, @countries);
-    local $_;
-
-
-    while (<DATA>)
-    {
-        next unless /\S/;
-        chop;
-        ($alpha2, $alpha3, $numeric, @countries) = split(/:/, $_);
-
-        $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $countries[0];
-       foreach $country (@countries)
-       {
-           $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$country"} = $alpha2;
-       }
-
-       if ($alpha3)
-       {
-            $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $countries[0];
-           foreach $country (@countries)
-           {
-               $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$country"} = $alpha3;
-           }
-       }
-
-       if ($numeric)
-       {
-            $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $countries[0];
-           foreach $country (@countries)
-           {
-               $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$country"} = $numeric;
-           }
-       }
-
-    }
-
-    close(DATA);
+
+sub alias_code {
+   my($alias,$code,@args) = @_;
+   my $success = rename_country_code($code,$alias,@args);
+   return 0  if (! $success);
+   return $alias;
 }
 
 1;
-
-__DATA__
-ad:and:020:Andorra
-ae:are:784:United Arab Emirates
-af:afg:004:Afghanistan
-ag:atg:028:Antigua and Barbuda
-ai:aia:660:Anguilla
-al:alb:008:Albania
-am:arm:051:Armenia
-an:ant:530:Netherlands Antilles
-ao:ago:024:Angola
-aq:ata:010:Antarctica
-ar:arg:032:Argentina
-as:asm:016:American Samoa
-at:aut:040:Austria
-au:aus:036:Australia
-aw:abw:533:Aruba
-ax:ala:248:Aland Islands
-az:aze:031:Azerbaijan
-ba:bih:070:Bosnia and Herzegovina
-bb:brb:052:Barbados
-bd:bgd:050:Bangladesh
-be:bel:056:Belgium
-bf:bfa:854:Burkina Faso
-bg:bgr:100:Bulgaria
-bh:bhr:048:Bahrain
-bi:bdi:108:Burundi
-bj:ben:204:Benin
-bm:bmu:060:Bermuda
-bn:brn:096:Brunei Darussalam
-bo:bol:068:Bolivia
-br:bra:076:Brazil
-bs:bhs:044:Bahamas
-bt:btn:064:Bhutan
-bv:bvt:074:Bouvet Island
-bw:bwa:072:Botswana
-by:blr:112:Belarus
-bz:blz:084:Belize
-ca:can:124:Canada
-cc:cck:166:Cocos (Keeling) Islands
-cd:cod:180:Congo, The Democratic Republic of the:Zaire:Congo, Democratic Republic of the
-cf:caf:140:Central African Republic
-cg:cog:178:Congo:Congo, Republic of the
-ch:che:756:Switzerland
-ci:civ:384:Cote D'Ivoire
-ck:cok:184:Cook Islands
-cl:chl:152:Chile
-cm:cmr:120:Cameroon
-cn:chn:156:China
-co:col:170:Colombia
-cr:cri:188:Costa Rica
-cs:scg:891:Serbia and Montenegro:Yugoslavia
-cu:cub:192:Cuba
-cv:cpv:132:Cape Verde
-cx:cxr:162:Christmas Island
-cy:cyp:196:Cyprus
-cz:cze:203:Czech Republic
-de:deu:276:Germany
-dj:dji:262:Djibouti
-dk:dnk:208:Denmark
-dm:dma:212:Dominica
-do:dom:214:Dominican Republic
-dz:dza:012:Algeria
-ec:ecu:218:Ecuador
-ee:est:233:Estonia
-eg:egy:818:Egypt
-eh:esh:732:Western Sahara
-er:eri:232:Eritrea
-es:esp:724:Spain
-et:eth:231:Ethiopia
-fi:fin:246:Finland
-fj:fji:242:Fiji
-fk:flk:238:Falkland Islands (Malvinas):Falkland Islands (Islas Malvinas)
-fm:fsm:583:Micronesia, Federated States of
-fo:fro:234:Faroe Islands
-fr:fra:250:France
-fx:fxx:249:France, Metropolitan
-ga:gab:266:Gabon
-gb:gbr:826:United Kingdom:Great Britain
-gd:grd:308:Grenada
-ge:geo:268:Georgia
-gf:guf:254:French Guiana
-gh:gha:288:Ghana
-gi:gib:292:Gibraltar
-gl:grl:304:Greenland
-gm:gmb:270:Gambia
-gn:gin:324:Guinea
-gp:glp:312:Guadeloupe
-gq:gnq:226:Equatorial Guinea
-gr:grc:300:Greece
-gs:sgs:239:South Georgia and the South Sandwich Islands
-gt:gtm:320:Guatemala
-gu:gum:316:Guam
-gw:gnb:624:Guinea-Bissau
-gy:guy:328:Guyana
-hk:hkg:344:Hong Kong
-hm:hmd:334:Heard Island and McDonald Islands
-hn:hnd:340:Honduras
-hr:hrv:191:Croatia
-ht:hti:332:Haiti
-hu:hun:348:Hungary
-id:idn:360:Indonesia
-ie:irl:372:Ireland
-il:isr:376:Israel
-in:ind:356:India
-io:iot:086:British Indian Ocean Territory
-iq:irq:368:Iraq
-ir:irn:364:Iran, Islamic Republic of:Iran
-is:isl:352:Iceland
-it:ita:380:Italy
-jm:jam:388:Jamaica
-jo:jor:400:Jordan
-jp:jpn:392:Japan
-ke:ken:404:Kenya
-kg:kgz:417:Kyrgyzstan
-kh:khm:116:Cambodia
-ki:kir:296:Kiribati
-km:com:174:Comoros
-kn:kna:659:Saint Kitts and Nevis
-kp:prk:408:Korea, Democratic People's Republic of:Korea, North:North Korea
-kr:kor:410:Korea, Republic of:Korea, South:South Korea
-kw:kwt:414:Kuwait
-ky:cym:136:Cayman Islands
-kz:kaz:398:Kazakhstan:Kazakstan
-la:lao:418:Lao People's Democratic Republic
-lb:lbn:422:Lebanon
-lc:lca:662:Saint Lucia
-li:lie:438:Liechtenstein
-lk:lka:144:Sri Lanka
-lr:lbr:430:Liberia
-ls:lso:426:Lesotho
-lt:ltu:440:Lithuania
-lu:lux:442:Luxembourg
-lv:lva:428:Latvia
-ly:lby:434:Libyan Arab Jamahiriya:Libya
-ma:mar:504:Morocco
-mc:mco:492:Monaco
-md:mda:498:Moldova, Republic of:Moldova
-mg:mdg:450:Madagascar
-mh:mhl:584:Marshall Islands
-mk:mkd:807:Macedonia, the Former Yugoslav Republic of:Macedonia, Former Yugoslav Republic of:Macedonia
-ml:mli:466:Mali
-mm:mmr:104:Myanmar:Burma
-mn:mng:496:Mongolia
-mo:mac:446:Macao:Macau
-mp:mnp:580:Northern Mariana Islands
-mq:mtq:474:Martinique
-mr:mrt:478:Mauritania
-ms:msr:500:Montserrat
-mt:mlt:470:Malta
-mu:mus:480:Mauritius
-mv:mdv:462:Maldives
-mw:mwi:454:Malawi
-mx:mex:484:Mexico
-my:mys:458:Malaysia
-mz:moz:508:Mozambique
-na:nam:516:Namibia
-nc:ncl:540:New Caledonia
-ne:ner:562:Niger
-nf:nfk:574:Norfolk Island
-ng:nga:566:Nigeria
-ni:nic:558:Nicaragua
-nl:nld:528:Netherlands
-no:nor:578:Norway
-np:npl:524:Nepal
-nr:nru:520:Nauru
-nu:niu:570:Niue
-nz:nzl:554:New Zealand
-om:omn:512:Oman
-pa:pan:591:Panama
-pe:per:604:Peru
-pf:pyf:258:French Polynesia
-pg:png:598:Papua New Guinea
-ph:phl:608:Philippines
-pk:pak:586:Pakistan
-pl:pol:616:Poland
-pm:spm:666:Saint Pierre and Miquelon
-pn:pcn:612:Pitcairn:Pitcairn Island
-pr:pri:630:Puerto Rico
-ps:pse:275:Palestinian Territory, Occupied
-pt:prt:620:Portugal
-pw:plw:585:Palau
-py:pry:600:Paraguay
-qa:qat:634:Qatar
-re:reu:638:Reunion
-ro:rou:642:Romania
-ru:rus:643:Russian Federation:Russia
-rw:rwa:646:Rwanda
-sa:sau:682:Saudi Arabia
-sb:slb:090:Solomon Islands
-sc:syc:690:Seychelles
-sd:sdn:736:Sudan
-se:swe:752:Sweden
-sg:sgp:702:Singapore
-sh:shn:654:Saint Helena
-si:svn:705:Slovenia
-sj:sjm:744:Svalbard and Jan Mayen:Jan Mayen:Svalbard
-sk:svk:703:Slovakia
-sl:sle:694:Sierra Leone
-sm:smr:674:San Marino
-sn:sen:686:Senegal
-so:som:706:Somalia
-sr:sur:740:Suriname
-st:stp:678:Sao Tome and Principe
-sv:slv:222:El Salvador
-sy:syr:760:Syrian Arab Republic:Syria
-sz:swz:748:Swaziland
-tc:tca:796:Turks and Caicos Islands
-td:tcd:148:Chad
-tf:atf:260:French Southern Territories:French Southern and Antarctic Lands
-tg:tgo:768:Togo
-th:tha:764:Thailand
-tj:tjk:762:Tajikistan
-tk:tkl:772:Tokelau
-tm:tkm:795:Turkmenistan
-tn:tun:788:Tunisia
-to:ton:776:Tonga
-tl:tls:626:Timor-Leste:East Timor
-tr:tur:792:Turkey
-tt:tto:780:Trinidad and Tobago
-tv:tuv:798:Tuvalu
-tw:twn:158:Taiwan, Province of China:Taiwan
-tz:tza:834:Tanzania, United Republic of:Tanzania
-ua:ukr:804:Ukraine
-ug:uga:800:Uganda
-um:umi:581:United States Minor Outlying Islands
-us:usa:840:United States:USA:United States of America
-uy:ury:858:Uruguay
-uz:uzb:860:Uzbekistan
-va:vat:336:Holy See (Vatican City State):Holy See (Vatican City)
-vc:vct:670:Saint Vincent and the Grenadines
-ve:ven:862:Venezuela
-vg:vgb:092:Virgin Islands, British:British Virgin Islands
-vi:vir:850:Virgin Islands, U.S.
-vn:vnm:704:Vietnam
-vu:vut:548:Vanuatu
-wf:wlf:876:Wallis and Futuna
-ws:wsm:882:Samoa
-ye:yem:887:Yemen
-yt:myt:175:Mayotte
-za:zaf:710:South Africa
-zm:zmb:894:Zambia
-zw:zwe:716:Zimbabwe
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
index b13cd22..a31e78c 100644 (file)
+=pod
 
 =head1 NAME
 
-Locale::Country - ISO codes for country identification (ISO 3166)
+Locale::Country - standard codes for country identification
 
 =head1 SYNOPSIS
 
-    use Locale::Country;
-    
-    $country = code2country('jp');        # $country gets 'Japan'
-    $code    = country2code('Norway');    # $code gets 'no'
-    
-    @codes   = all_country_codes();
-    @names   = all_country_names();
-    
-    # semi-private routines
-    Locale::Country::alias_code('uk' => 'gb');
-    Locale::Country::rename_country('gb' => 'Great Britain');
+   use Locale::Country;
 
+   $country = code2country('jp' [,CODESET]);        # $country gets 'Japan'
+   $code    = country2code('Norway' [,CODESET]);    # $code gets 'no'
 
-=head1 DESCRIPTION
-
-The C<Locale::Country> module provides access to the ISO
-codes for identifying countries, as defined in ISO 3166-1.
-You can either access the codes via the L<conversion routines>
-(described below), or with the two functions which return lists
-of all country codes or all country names.
-
-There are three different code sets you can use for identifying
-countries:
-
-=over 4
-
-=item B<alpha-2>
-
-Two letter codes, such as 'tv' for Tuvalu.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
+   @codes   = all_country_codes( [CODESET]);
+   @names   = all_country_names();
 
-=item B<alpha-3>
+   # semi-private routines
+   Locale::Country::alias_code('uk' => 'gb');
+   Locale::Country::rename_country('gb' => 'Great Britain');
 
-Three letter codes, such as 'brb' for Barbados.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
+=head1 DESCRIPTION
 
-=item B<numeric>
+The C<Locale::Country> module provides access to several code sets
+that can be used for identifying countries, such as those defined in
+ISO 3166-1.
 
-Numeric codes, such as 064 for Bhutan.
-This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+3166-1 two-letter codes will be used.
 
-=back
+=head1 SUPPORTED CODE SETS
 
-All of the routines take an optional additional argument
-which specifies the code set to use.
-If not specified, it defaults to the two-letter codes.
-This is partly for backwards compatibility (previous versions
-of this module only supported the alpha-2 codes), and
-partly because they are the most widely used codes.
+There are several different code sets you can use for identifying
+countries. The ones currently supported are:
 
-The alpha-2 and alpha-3 codes are not case-dependent,
-so you can use 'BO', 'Bo', 'bO' or 'bo' for Bolivia.
-When a code is returned by one of the functions in
-this module, it will always be lower-case.
+=over 4
 
-As of version 2.00, Locale::Country supports variant
-names for countries. So, for example, the country code for "United States"
-is "us", so country2code('United States') returns 'us'.
-Now the following will also return 'us':
+=item B<alpha-2>
 
-    country2code('United States of America') 
-    country2code('USA') 
+This is the set of two-letter (lowercase) codes from ISO 3166-1, such
+as 'tv' for Tuvalu.
 
+This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
 
-=head1 CONVERSION ROUTINES
+This is the default code set.
 
-There are three conversion routines: C<code2country()>, C<country2code()>,
-and C<country_code2code()>.
+=item B<alpha-3>
 
-=over 4
+This is the set of three-letter (lowercase) codes from ISO 3166-1,
+such as 'brb' for Barbados. These codes are actually defined and
+maintained by the U.N. Statistics division.
 
-=item code2country( CODE, [ CODESET ] )
+This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
 
-This function takes a country code and returns a string
-which contains the name of the country identified.
-If the code is not a valid country code, as defined by ISO 3166,
-then C<undef> will be returned:
+=item B<numeric>
 
-    $country = code2country('fi');
+This is the set of three-digit numeric codes from ISO 3166-1, such as
+064 for Bhutan. These codes are actually defined and maintained by the
+U.N. Statistics division.
 
-=item country2code( STRING, [ CODESET ] )
+If a 2-digit code is entered, it is converted to 3 digits by prepending
+a 0.
 
-This function takes a country name and returns the corresponding
-country code, if such exists.
-If the argument could not be identified as a country name,
-then C<undef> will be returned:
+This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
 
-    $code = country2code('Norway', LOCALE_CODE_ALPHA_3);
-    # $code will now be 'nor'
+=item B<fips-10>
 
-The case of the country name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
+The FIPS 10 data are two-letter (uppercase) codes assigned by the
+National Geospatial-Intelligence Agency.
 
-=item country_code2code( CODE, CODESET, CODESET )
+This code set is identified with the symbol C<LOCALE_CODE_FIPS>.
 
-This function takes a country code from one code set,
-and returns the corresponding code from another code set.
+=item B<dom>
 
-    $alpha2 = country_code2code('fin',
-                LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2);
-    # $alpha2 will now be 'fi'
+The IANA is responsible for assigning two-letter (uppercase) top-level
+domain names to each country.
 
-If the code passed is not a valid country code in
-the first code set, or if there isn't a code for the
-corresponding country in the second code set,
-then C<undef> will be returned.
+This code set is identified with the symbol C<LOCALE_CODE_DOM>.
 
 =back
 
-
-=head1 QUERY ROUTINES
-
-There are two function which can be used to obtain a list of all codes,
-or all country names:
+=head1 ROUTINES
 
 =over 4
 
-=item C<all_country_codes( [ CODESET ] )>
-
-Returns a list of all two-letter country codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
-
-=item C<all_country_names( [ CODESET ] )>
-
-Returns a list of all country names for which there is a corresponding
-country code in the specified code set.
-The names are capitalised, and not returned in any particular order.
-
-Not all countries have alpha-3 and numeric codes -
-some just have an alpha-2 code,
-so you'll get a different number of countries
-depending on which code set you specify.
-
-=back
+=item B<code2country ( CODE [,CODESET] )>
 
+=item B<country2code ( NAME [,CODESET] )>
 
-=head1 SEMI-PRIVATE ROUTINES
+=item B<country_code2code ( CODE ,CODESET ,CODESET2 )>
 
-Locale::Country provides two semi-private routines for modifying
-the internal data.
-Given their status, they aren't exported by default,
-and so need to be called by prefixing the function name with the
-package name.
+=item B<all_country_codes ( [CODESET] )>
 
-=head2 alias_code
+=item B<all_country_names ( [CODESET] )>
 
-Define a new code as an alias for an existing code:
+=item B<Locale::Country::rename_country  ( CODE ,NEW_NAME [,CODESET] )>
 
-    Locale::Country::alias_code( ALIAS => CODE [, CODESET ] )
+=item B<Locale::Country::add_country  ( CODE ,NAME [,CODESET] )>
 
-This feature was added as a mechanism for handling
-a "uk" code. The ISO standard says that the two-letter code for
-"United Kingdom" is "gb", whereas domain names are all .uk.
+=item B<Locale::Country::delete_country  ( CODE [,CODESET] )>
 
-By default the module does not understand "uk", since it is implementing
-an ISO standard. If you would like 'uk' to work as the two-letter
-code for United Kingdom, use the following:
+=item B<Locale::Country::add_country_alias  ( NAME ,NEW_NAME )>
 
-    Locale::Country::alias_code('uk' => 'gb');
+=item B<Locale::Country::delete_country_alias  ( NAME )>
 
-With this code, both "uk" and "gb" are valid codes for United Kingdom,
-with the reverse lookup returning "uk" rather than the usual "gb".
+=item B<Locale::Country::rename_country_code  ( CODE ,NEW_CODE [,CODESET] )>
 
-B<Note:> this function was previously called _alias_code,
-but the leading underscore has been dropped.
-The old name will be supported for all 2.X releases for
-backwards compatibility.
+=item B<Locale::Country::add_country_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
 
-=head2 rename_country
+=item B<Locale::Country::delete_country_code_alias  ( CODE [,CODESET] )>
 
-If the official country name just isn't good enough for you,
-you can rename a country. For example, the official country
-name for code 'gb' is 'United Kingdom'.
-If you want to change that, you might call:
+These routines are all documented in the Locale::Codes man page.
 
-    Locale::Country::rename_country('gb' => 'Great Britain');
+=item B<alias_code ( ALIAS, CODE [,CODESET] )>
 
-This means that calling code2country('gb') will now return
-'Great Britain' instead of 'United Kingdom'.
-The original country name is retained as an alias,
-so for the above example, country2code('United Kingdom')
-will still return 'gb'.
+Version 2.07 included 2 functions for modifying the internal data:
+rename_country and alias_code. Both of these could be used only to
+modify the internal data for country codes.
 
+As of 3.10, the internal data for all types of codes can be modified.
 
-=head1 EXAMPLES
+The alias_code function is preserved for backwards compatibility, but
+the following two are identical:
 
-The following example illustrates use of the C<code2country()> function.
-The user is prompted for a country code, and then told the corresponding
-country name:
+   alias_code(ALIAS,CODE [,CODESET]);
+   rename_country_code(CODE,ALIAS [,CODESET]);
 
-    $| = 1;   # turn off buffering
-    
-    print "Enter country code: ";
-    chop($code = <STDIN>);
-    $country = code2country($code, LOCALE_CODE_ALPHA_2);
-    if (defined $country)
-    {
-        print "$code = $country\n";
-    }
-    else
-    {
-        print "'$code' is not a valid country code!\n";
-    }
+and the latter should be used for consistency.
 
-=head1 DOMAIN NAMES
+The alias_code function is deprecated (though there is no currently no
+plan to remove it).
 
-Most top-level domain names are based on these codes,
-but there are certain codes which aren't.
-If you are using this module to identify country from hostname,
-your best bet is to preprocess the country code.
+B<Note:> this function was previously called _alias_code, but the
+leading underscore has been dropped. The old name was supported for
+all 2.X releases, but has been dropped as of 3.00.
 
-For example, B<edu>, B<com>, B<gov> and friends would map to B<us>;
-B<uk> would map to B<gb>. Any others?
+=back
 
-=head1 KNOWN BUGS AND LIMITATIONS
+=head1 SEE ALSO
 
 =over 4
 
-=item *
-
-When using C<country2code()>, the country name must currently appear
-exactly as it does in the source of the module. The module now supports
-a small number of variants.
-
-Possible extensions to this are: an interface for getting at the
-list of variant names, and regular expression matches.
-
-=item *
+=item B<Locale::Codes>
 
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+=item B<Locale::Constants>
 
-=item *
+=item B<Locale::SubCountry>
 
-Support for country names in different languages.
+ISO codes for country sub-divisions (states, counties, provinces,
+etc), as defined in ISO 3166-2.  This module is not part of the
+Locale-Codes distribution, but is available from CPAN in
+CPAN/modules/by-module/Locale/
 
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item Locale::Language
+=item B<http://www.iso.org/iso/country_codes>
 
-ISO two letter codes for identification of language (ISO 639).
+Official home page for the ISO 3166 maintenance agency.
 
-=item Locale::Script
+Unfortunately, they do not make the actual ISO available for free,
+so I cannot check the alpha-3 and numerical codes here.
 
-ISO codes for identification of scripts (ISO 15924).
+=item B<http://www.iso.org/iso/list-en1-semic-3.txt>
 
-=item Locale::Currency
+The source of ISO 3166-1 two-letter codes used by this
+module.
 
-ISO three letter codes for identification of currencies
-and funds (ISO 4217).
+=item B<http://unstats.un.org/unsd/methods/m49/m49alpha.htm>
 
-=item Locale::SubCountry
+The source of the official ISO 3166-1 three-letter codes and
+three-digit codes.
 
-ISO codes for country sub-divisions (states, counties, provinces, etc),
-as defined in ISO 3166-2.
-This module is not part of the Locale-Codes distribution,
-but is available from CPAN in CPAN/modules/by-module/Locale/
+For some reason, this table is incomplete! Several countries are
+missing from it, and I cannot find them anywhere on the UN site.  I
+get as much of the data from here as I can.
 
-=item ISO 3166-1
+=item B<http://earth-info.nga.mil/gns/html/digraphs.htm>
 
-The ISO standard which defines these codes.
+The official list of the FIPS 10 codes.
 
-=item http://www.iso.org/iso/en/prods-services/iso3166ma/index.html
+=item B<http://www.iana.org/domains/>
 
-Official home page for the ISO 3166 maintenance agency.
+Official source of the top-level domain names.
 
-=item http://www.egt.ie/standards/iso3166/iso3166-1-en.html
+=item B<https://www.cia.gov/library/publications/the-world-factbook/appendix/print_appendix-d.html>
 
-Another useful, but not official, home page.
+Although not the official source of any of the data, the World
+Factbook maintained by the CIA is a great source of the data,
+especially since I can't get the official data from the ISO. Since
+it's maintained by the CIA, and since it's updated every two weeks, I
+use this as the source for some missing data.
 
-=item http://www.cia.gov/cia/publications/factbook/docs/app-d-1.html
+=item B<http://www.statoids.com/wab.html>
 
-An appendix in the CIA world fact book which lists country codes
-as defined by ISO 3166, FIPS 10-4, and internet domain names.
+Another unofficial source of data. Currently, it is not used to get
+data, but the notes and explanatory material were very useful for
+understanding discrepancies between the sources.
 
 =back
 
-
 =head1 AUTHOR
 
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
 
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
 
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
 
-Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
 
 This module is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
 =cut
-
index 13cd048..fd32f2b 100644 (file)
-#
-# Locale::Currency - ISO three letter codes for currency identification
-#                    (ISO 4217)
-#
-# $Id: Currency.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
 package Locale::Currency;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
 use strict;
+use warnings;
 require 5.002;
 
 require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Constants;
+use Locale::Codes::Currency;
 
-#-----------------------------------------------------------------------
-#      Public Global Variables
-#-----------------------------------------------------------------------
-use vars qw($VERSION @ISA @EXPORT);
-$VERSION      = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA          = qw(Exporter);
-@EXPORT       = qw(&code2currency &currency2code
-                   &all_currency_codes &all_currency_names );
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
 
-#-----------------------------------------------------------------------
-#      Private Global Variables
-#-----------------------------------------------------------------------
-my %CODES      = ();
-my %CURRENCIES = ();
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+
+$VERSION='3.12';
+@ISA       = qw(Exporter);
+@EXPORT    = qw(code2currency
+                currency2code
+                all_currency_codes
+                all_currency_names
+                currency_code2code
+                LOCALE_CURR_ALPHA
+                LOCALE_CURR_NUMERIC
+               );
+
+sub _code {
+   my($code,$codeset) = @_;
+   $code = ""  if (! $code);
+
+   $codeset = LOCALE_CURR_DEFAULT  if (! defined($codeset)  ||  $codeset eq "");
+
+   if ($codeset =~ /^\d+$/) {
+      if      ($codeset ==  LOCALE_CURR_ALPHA) {
+         $codeset = "alpha";
+      } elsif ($codeset ==  LOCALE_CURR_NUMERIC) {
+         $codeset = "num";
+      } else {
+         return (1);
+      }
+   }
+
+   if      ($codeset eq "alpha") {
+      $code    = uc($code);
+   } elsif ($codeset eq "num") {
+      if (defined($code)  &&  $code ne "") {
+         return (1)  unless ($code =~ /^\d+$/);
+         $code    = sprintf("%.3d", $code);
+      }
+   } else {
+      return (1);
+   }
+
+   return (0,$code,$codeset);
+}
 
+#=======================================================================
+#
+# code2currency ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2currency {
+   my($err,$code,$codeset) = _code(@_);
+   return undef  if ($err  ||
+                     ! defined $code);
+
+   return Locale::Codes::_code2name("currency",$code,$codeset);
+}
 
 #=======================================================================
 #
-# code2currency( CODE )
+# currency2code ( CURRENCY [,CODESET] )
 #
 #=======================================================================
-sub code2currency
-{
-    my $code = shift;
-
-
-    return undef unless defined $code;
-    $code = lc($code);
-    if (exists $CODES{$code})
-    {
-        return $CODES{$code};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such currency code!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub currency2code {
+   my($currency,$codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err  ||
+                     ! defined $currency);
+
+   return Locale::Codes::_name2code("currency",$currency,$codeset);
 }
 
+#=======================================================================
+#
+# currency_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub currency_code2code {
+   (@_ == 3) or croak "currency_code2code() takes 3 arguments!";
+   my($code,$inset,$outset) = @_;
+   my($err,$tmp);
+   ($err,$code,$inset) = _code($code,$inset);
+   return undef  if ($err);
+   ($err,$tmp,$outset) = _code("",$outset);
+   return undef  if ($err);
+
+   return Locale::Codes::_code2code("currency",$code,$inset,$outset);
+}
 
 #=======================================================================
 #
-# currency2code ( CURRENCY )
+# all_currency_codes ( [CODESET] )
 #
 #=======================================================================
-sub currency2code
-{
-    my $curr = shift;
-
-
-    return undef unless defined $curr;
-    $curr = lc($curr);
-    if (exists $CURRENCIES{$curr})
-    {
-        return $CURRENCIES{$curr};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such currency!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub all_currency_codes {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_codes("currency",$codeset);
 }
 
 
 #=======================================================================
 #
-# all_currency_codes()
+# all_currency_names ( [CODESET] )
 #
 #=======================================================================
-sub all_currency_codes
-{
-    return keys %CODES;
+
+sub all_currency_names {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_names("currency",$codeset);
 }
 
+#=======================================================================
+#
+# rename_currency ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_currency {
+   my($code,$new_name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_rename("currency",$code,$new_name,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# all_currency_names()
+# add_currency ( CODE,NAME [,CODESET] )
 #
 #=======================================================================
-sub all_currency_names
-{
-    return values %CODES;
+
+sub add_currency {
+   my($code,$name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_add_code("currency",$code,$name,$codeset,$nowarn);
 }
 
+#=======================================================================
+#
+# delete_currency ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_currency {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code("currency",$code,$codeset,$nowarn);
+}
 
 #=======================================================================
-# initialisation code - stuff the DATA into the CODES hash
+#
+# add_currency_alias ( NAME,NEW_NAME )
+#
 #=======================================================================
-{
-    my    $code;
-    my    $currency;
-    local $_;
-
-
-    while (<DATA>)
-    {
-        next unless /\S/;
-        chop;
-        ($code, $currency) = split(/:/, $_, 2);
-        $CODES{$code} = $currency;
-        $CURRENCIES{"\L$currency"} = $code;
-    }
-
-    close(DATA);
+
+sub add_currency_alias {
+   my($name,$new_name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_add_alias("currency",$name,$new_name,$nowarn);
 }
 
-1;
+#=======================================================================
+#
+# delete_currency_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_currency_alias {
+   my($name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_delete_alias("currency",$name,$nowarn);
+}
+
+#=======================================================================
+#
+# rename_currency_code ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
 
-__DATA__
-adp:Andorran Peseta
-aed:UAE Dirham
-afa:Afghani
-all:Lek
-amd:Armenian Dram
-ang:Netherlands Antillean Guilder
-aoa:Kwanza
-aon:New Kwanza
-aor:Kwanza Reajustado
-ars:Argentine Peso
-ats:Schilling
-aud:Australian Dollar
-awg:Aruban Guilder
-azm:Azerbaijanian Manat
-
-bam:Convertible Marks
-bbd:Barbados Dollar
-bdt:Taka
-bef:Belgian Franc
-bgl:Lev
-bgn:Bulgarian Lev
-bhd:Bahraini Dinar
-bhd:Dinar
-bif:Burundi Franc
-bmd:Bermudian Dollar
-bnd:Brunei Dollar
-bob:Boliviano
-bov:MVDol
-brl:Brazilian Real
-bsd:Bahamian Dollar
-btn:Ngultrum
-bwp:Pula
-byb:Belarussian Ruble
-byr:Belarussian Ruble
-bzd:Belize Dollar
-
-cad:Canadian Dollar
-cdf:Franc Congolais
-chf:Swiss Franc
-clf:Unidades de Formento
-clp:Chilean Peso
-cny:Yuan Renminbi
-cop:Colombian Peso
-crc:Costa Rican Colon
-cup:Cuban Peso
-cve:Cape Verde Escudo
-cyp:Cyprus Pound
-czk:Czech Koruna
-
-dem:German Mark
-djf:Djibouti Franc
-dkk:Danish Krone
-dop:Dominican Peso
-dzd:Algerian Dinar
-
-ecs:Sucre
-ecv:Unidad de Valor Constante (UVC)
-eek:Kroon
-egp:Egyptian Pound
-ern:Nakfa
-esp:Spanish Peseta
-etb:Ethiopian Birr
-eur:Euro
-
-fim:Markka
-fjd:Fiji Dollar
-fkp:Falkland Islands Pound
-frf:French Franc
-
-gbp:Pound Sterling
-gel:Lari
-ghc:Cedi
-gip:Gibraltar Pound
-gmd:Dalasi
-gnf:Guinea Franc
-grd:Drachma
-gtq:Quetzal
-gwp:Guinea-Bissau Peso
-gyd:Guyana Dollar
-
-hkd:Hong Kong Dollar
-hnl:Lempira
-hrk:Kuna
-htg:Gourde
-huf:Forint
-
-idr:Rupiah
-iep:Irish Pound
-ils:Shekel
-inr:Indian Rupee
-iqd:Iraqi Dinar
-irr:Iranian Rial
-isk:Iceland Krona
-itl:Italian Lira
-
-jmd:Jamaican Dollar
-jod:Jordanian Dinar
-jpy:Yen
-
-kes:Kenyan Shilling
-kgs:Som
-khr:Riel
-kmf:Comoro Franc
-kpw:North Korean Won
-krw:Won
-kwd:Kuwaiti Dinar
-kyd:Cayman Islands Dollar
-kzt:Tenge
-
-lak:Kip
-lbp:Lebanese Pound
-lkr:Sri Lanka Rupee
-lrd:Liberian Dollar
-lsl:Loti
-ltl:Lithuanian Litas
-luf:Luxembourg Franc
-lvl:Latvian Lats
-lyd:Libyan Dinar
-
-mad:Moroccan Dirham
-mdl:Moldovan Leu
-mgf:Malagasy Franc
-mkd:Denar
-mmk:Kyat
-mnt:Tugrik
-mop:Pataca
-mro:Ouguiya
-mtl:Maltese Lira
-mur:Mauritius Rupee
-mvr:Rufiyaa
-mwk:Kwacha
-mxn:Mexican Nuevo Peso
-myr:Malaysian Ringgit
-mzm:Metical
-
-nad:Namibia Dollar
-ngn:Naira
-nio:Cordoba Oro
-nlg:Netherlands Guilder
-nok:Norwegian Krone
-npr:Nepalese Rupee
-nzd:New Zealand Dollar
-
-omr:Rial Omani
-
-pab:Balboa
-pen:Nuevo Sol
-pgk:Kina
-php:Philippine Peso
-pkr:Pakistan Rupee
-pln:Zloty
-pte:Portuguese Escudo
-pyg:Guarani
-
-qar:Qatari Rial
-
-rol:Leu
-rub:Russian Ruble
-rur:Russian Ruble
-rwf:Rwanda Franc
-
-sar:Saudi Riyal
-sbd:Solomon Islands Dollar
-scr:Seychelles Rupee
-sdd:Sudanese Dinar
-sek:Swedish Krona
-sgd:Singapore Dollar
-shp:St. Helena Pound
-sit:Tolar
-skk:Slovak Koruna
-sll:Leone
-sos:Somali Shilling
-srg:Surinam Guilder
-std:Dobra
-svc:El Salvador Colon
-syp:Syrian Pound
-szl:Lilangeni
-
-thb:Baht
-tjr:Tajik Ruble
-tmm:Manat
-tnd:Tunisian Dollar
-top:Pa'anga
-tpe:Timor Escudo
-trl:Turkish Lira
-ttd:Trinidad and Tobago Dollar
-twd:New Taiwan Dollar
-tzs:Tanzanian Shilling
-
-uah:Hryvnia
-uak:Karbovanets
-ugx:Uganda Shilling
-usd:US Dollar
-usn:US Dollar (Next day)
-uss:US Dollar (Same day)
-uyu:Peso Uruguayo
-uzs:Uzbekistan Sum
-
-veb:Bolivar
-vnd:Dong
-vuv:Vatu
-
-wst:Tala
-
-xaf:CFA Franc BEAC
-xag:Silver
-xau:Gold
-xba:European Composite Unit
-xbb:European Monetary Unit
-xbc:European Unit of Account 9
-xb5:European Unit of Account 17
-xcd:East Caribbean Dollar
-xdr:SDR
-xeu:ECU (until 1998-12-31)
-xfu:UIC-Franc
-xfo:Gold-Franc
-xof:CFA Franc BCEAO
-xpd:Palladium
-xpf:CFP Franc
-xpt:Platinum
-
-yer:Yemeni Rial
-yum:New Dinar
-
-zal:Financial Rand
-zar:Rand
-zmk:Kwacha
-zrn:New Zaire
-zwd:Zimbabwe Dollar
+sub rename_currency_code {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
+
+   return Locale::Codes::_rename_code("currency",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# add_currency_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
+
+sub add_currency_code_alias {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
+
+   return Locale::Codes::_add_code_alias("currency",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# delete_currency_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_currency_code_alias {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code_alias("currency",$code,$codeset,$nowarn);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
index dce3261..1df4280 100644 (file)
@@ -1,7 +1,8 @@
+=pod
 
 =head1 NAME
 
-Locale::Currency - ISO three letter codes for currency identification (ISO 4217)
+Locale::Currency - standard codes for currency identification
 
 =head1 SYNOPSIS
 
@@ -16,135 +17,72 @@ Locale::Currency - ISO three letter codes for currency identification (ISO 4217)
 
 =head1 DESCRIPTION
 
-The C<Locale::Currency> module provides access to the ISO three-letter
-codes for identifying currencies and funds, as defined in ISO 4217.
-You can either access the codes via the L<conversion routines>
-(described below),
-or with the two functions which return lists of all currency codes or
-all currency names.
+The C<Locale::Currency> module provides access to standard codes used
+for identifying currencies and funds, such as those defined in ISO 4217.
 
-There are two special codes defined by the standard which aren't
-understood by this module:
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+4217 three-letter codes will be used.
 
-=over 4
-
-=item XTS
-
-Specifically reserved for testing purposes.
-
-=item XXX
-
-For transactions where no currency is involved.
-
-=back
+=head1 SUPPORTED CODE SETS
 
-
-=head1 CONVERSION ROUTINES
-
-There are two conversion routines: C<code2currency()> and C<currency2code()>.
+There are several different code sets you can use for identifying
+currencies. The ones currently supported are:
 
 =over 4
 
-=item code2currency()
+=item B<alpha>
 
-This function takes a three letter currency code and returns a string
-which contains the name of the currency identified. If the code is
-not a valid currency code, as defined by ISO 4217, then C<undef>
-will be returned.
+This is a set of three-letter (uppercase) codes from ISO 4217 such
+as EUR for Euro.
 
-    $curr = code2currency($code);
+Two of the codes specified by the standard (XTS which is reserved
+for testing purposes and XXX which is for transactions where no
+currency is involved) are omitted.
 
-=item currency2code()
+This code set is identified with the symbol C<LOCALE_CURR_ALPHA>.
 
-This function takes a currency name and returns the corresponding
-three letter currency code, if such exists.
-If the argument could not be identified as a currency name,
-then C<undef> will be returned.
+This is the default code set.
 
-    $code = currency2code('French Franc');
+=item B<num>
 
-The case of the currency name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
-
-=back
+This is the set of three-digit numeric codes from ISO 4217.
 
+This code set is identified with the symbol C<LOCALE_CURR_NUMERIC>.
 
-=head1 QUERY ROUTINES
+=back
 
-There are two function which can be used to obtain a list of all
-currency codes, or all currency names:
+=head1 ROUTINES
 
 =over 4
 
-=item C<all_currency_codes()>
+=item B<code2currency ( CODE [,CODESET] )>
 
-Returns a list of all three-letter currency codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<currency2code ( NAME [,CODESET] )>
 
-=item C<all_currency_names()>
+=item B<currency_code2code ( CODE ,CODESET ,CODESET2 )>
 
-Returns a list of all currency names for which there is a corresponding
-three-letter currency code. The names are capitalised, and not returned
-in any particular order.
+=item B<all_currency_codes ( [CODESET] )>
 
-=back
+=item B<all_currency_names ( [CODESET] )>
 
+=item B<Locale::Currency::rename_currency  ( CODE ,NEW_NAME [,CODESET] )>
 
-=head1 EXAMPLES
+=item B<Locale::Currency::add_currency  ( CODE ,NAME [,CODESET] )>
 
-The following example illustrates use of the C<code2currency()> function.
-The user is prompted for a currency code, and then told the corresponding
-currency name:
+=item B<Locale::Currency::delete_currency  ( CODE [,CODESET] )>
 
-    $| = 1;    # turn off buffering
+=item B<Locale::Currency::add_currency_alias  ( NAME ,NEW_NAME )>
 
-    print "Enter currency code: ";
-    chop($code = <STDIN>);
-    $curr = code2currency($code);
-    if (defined $curr)
-    {
-        print "$code = $curr\n";
-    }
-    else
-    {
-        print "'$code' is not a valid currency code!\n";
-    }
+=item B<Locale::Currency::delete_currency_alias  ( NAME )>
 
-=head1 KNOWN BUGS AND LIMITATIONS
+=item B<Locale::Currency::rename_currency_code  ( CODE ,NEW_CODE [,CODESET] )>
 
-=over 4
+=item B<Locale::Currency::add_currency_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
 
-=item *
+=item B<Locale::Currency::delete_currency_code_alias  ( CODE [,CODESET] )>
 
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
-
-=item *
-
-This module also includes the special codes which are
-not for a currency, such as Gold, Platinum, etc.
-This might cause a problem if you're using this module
-to display a list of currencies.
-Let Neil know if this does cause a problem, and we can
-do something about it.
-
-=item *
-
-ISO 4217 also defines a numeric code for each currency.
-Currency codes are not currently supported by this module,
-in the same way Locale::Country supports multiple codesets.
-
-=item *
-
-There are three cases where there is more than one
-code for the same currency name.
-Kwacha has two codes: mwk for Malawi, and zmk for Zambia.
-The Russian Ruble has two codes: rub and rur.
-The Belarussian Ruble has two codes: byr and byb.
-The currency2code() function only returns one code, so
-you might not get back the code you expected.
+These routines are all documented in the Locale::Codes man page.
 
 =back
 
@@ -152,40 +90,30 @@ you might not get back the code you expected.
 
 =over 4
 
-=item Locale::Country
-
-ISO codes for identification of country (ISO 3166).
+=item B<Locale::Codes>
 
-=item Locale::Script
+=item B<Locale::Constants>
 
-ISO codes for identification of written scripts (ISO 15924).
+=item B<http://www.iso.org/iso/support/currency_codes_list-1.htm>
 
-=item ISO 4217:1995
-
-Code for the representation of currencies and funds.
-
-=item http://www.bsi-global.com/iso4217currency
-
-Official web page for the ISO 4217 maintenance agency.
-This has the latest list of codes, in MS Word format. Boo.
+The ISO 4217 data.
 
 =back
 
 =head1 AUTHOR
 
-Michael Hennecke E<lt>hennecke@rz.uni-karlsruhe.deE<gt>
-and
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
 
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
 
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
 
-Copyright (c) 2001 Michael Hennecke and
-Canon Research Centre Europe (CRE).
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001      Michael Hennecke
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
 
 This module is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
 =cut
-
index e8454c3..5920eee 100644 (file)
-#
-# Locale::Language - ISO two letter codes for language identification (ISO 639)
-#
-# $Id: Language.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
 package Locale::Language;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
 use strict;
+use warnings;
 require 5.002;
 
 require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Constants;
+use Locale::Codes::Language;
 
-#-----------------------------------------------------------------------
-#      Public Global Variables
-#-----------------------------------------------------------------------
-use vars qw($VERSION @ISA @EXPORT);
-$VERSION      = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA          = qw(Exporter);
-@EXPORT       = qw(&code2language &language2code
-                   &all_language_codes &all_language_names );
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
 
-#-----------------------------------------------------------------------
-#      Private Global Variables
-#-----------------------------------------------------------------------
-my %CODES     = ();
-my %LANGUAGES = ();
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+
+$VERSION='3.12';
+@ISA       = qw(Exporter);
+@EXPORT    = qw(code2language
+                language2code
+                all_language_codes
+                all_language_names
+                language_code2code
+                LOCALE_LANG_ALPHA_2
+                LOCALE_LANG_ALPHA_3
+                LOCALE_LANG_TERM
+               );
+
+sub _code {
+   my($code,$codeset) = @_;
+   $code = ""  if (! $code);
+
+   $codeset = LOCALE_LANG_DEFAULT  if (! defined($codeset)  ||  $codeset eq "");
+
+   if ($codeset =~ /^\d+$/) {
+      if      ($codeset ==  LOCALE_LANG_ALPHA_2) {
+         $codeset = "alpha2";
+      } elsif ($codeset ==  LOCALE_LANG_ALPHA_3) {
+         $codeset = "alpha3";
+      } elsif ($codeset ==  LOCALE_LANG_TERM) {
+         $codeset = "term";
+      } else {
+         return (1);
+      }
+   }
+
+   if      ($codeset eq "alpha2"  ||
+            $codeset eq "alpha3"  ||
+            $codeset eq "term") {
+      $code    = lc($code);
+   } else {
+      return (1);
+   }
+
+   return (0,$code,$codeset);
+}
 
+#=======================================================================
+#
+# code2language ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2language {
+   my($err,$code,$codeset) = _code(@_);
+   return undef  if ($err  ||
+                     ! defined $code);
+
+   return Locale::Codes::_code2name("language",$code,$codeset);
+}
 
 #=======================================================================
 #
-# code2language ( CODE )
+# language2code ( LANGUAGE [,CODESET] )
 #
 #=======================================================================
-sub code2language
-{
-    my $code = shift;
-
-
-    return undef unless defined $code;
-    $code = lc($code);
-    if (exists $CODES{$code})
-    {
-        return $CODES{$code};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such language code!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub language2code {
+   my($language,$codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err  ||
+                     ! defined $language);
+
+   return Locale::Codes::_name2code("language",$language,$codeset);
 }
 
+#=======================================================================
+#
+# language_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub language_code2code {
+   (@_ == 3) or croak "language_code2code() takes 3 arguments!";
+   my($code,$inset,$outset) = @_;
+   my($err,$tmp);
+   ($err,$code,$inset) = _code($code,$inset);
+   return undef  if ($err);
+   ($err,$tmp,$outset) = _code("",$outset);
+   return undef  if ($err);
+
+   return Locale::Codes::_code2code("language",$code,$inset,$outset);
+}
 
 #=======================================================================
 #
-# language2code ( LANGUAGE )
+# all_language_codes ( [CODESET] )
 #
 #=======================================================================
-sub language2code
-{
-    my $lang = shift;
-
-
-    return undef unless defined $lang;
-    $lang = lc($lang);
-    if (exists $LANGUAGES{$lang})
-    {
-        return $LANGUAGES{$lang};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such language!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub all_language_codes {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_codes("language",$codeset);
 }
 
 
 #=======================================================================
 #
-# all_language_codes()
+# all_language_names ( [CODESET] )
 #
 #=======================================================================
-sub all_language_codes
-{
-    return keys %CODES;
+
+sub all_language_names {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_names("language",$codeset);
 }
 
+#=======================================================================
+#
+# rename_language ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_language {
+   my($code,$new_name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_rename("language",$code,$new_name,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# all_language_names()
+# add_language ( CODE,NAME [,CODESET] )
 #
 #=======================================================================
-sub all_language_names
-{
-    return values %CODES;
+
+sub add_language {
+   my($code,$name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_add_code("language",$code,$name,$codeset,$nowarn);
 }
 
+#=======================================================================
+#
+# delete_language ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_language {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code("language",$code,$codeset,$nowarn);
+}
 
 #=======================================================================
-# initialisation code - stuff the DATA into the CODES hash
+#
+# add_language_alias ( NAME,NEW_NAME )
+#
 #=======================================================================
-{
-    my    $code;
-    my    $language;
-    local $_;
-
-
-    while (<DATA>)
-    {
-        next unless /\S/;
-        chop;
-        ($code, $language) = split(/:/, $_, 2);
-        $CODES{$code} = $language;
-        $LANGUAGES{"\L$language"} = $code;
-    }
-
-    close(DATA);
+
+sub add_language_alias {
+   my($name,$new_name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_add_alias("language",$name,$new_name,$nowarn);
 }
 
-1;
+#=======================================================================
+#
+# delete_language_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_language_alias {
+   my($name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_delete_alias("language",$name,$nowarn);
+}
+
+#=======================================================================
+#
+# rename_language_code ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
 
-__DATA__
-aa:Afar
-ab:Abkhazian
-ae:Avestan
-af:Afrikaans
-am:Amharic
-ar:Arabic
-as:Assamese
-ay:Aymara
-az:Azerbaijani
-
-ba:Bashkir
-be:Belarusian
-bg:Bulgarian
-bh:Bihari
-bi:Bislama
-bn:Bengali
-bo:Tibetan
-br:Breton
-bs:Bosnian
-
-ca:Catalan
-ce:Chechen
-ch:Chamorro
-co:Corsican
-cs:Czech
-cu:Church Slavic
-cv:Chuvash
-cy:Welsh
-
-da:Danish
-de:German
-dz:Dzongkha
-
-el:Greek
-en:English
-eo:Esperanto
-es:Spanish
-et:Estonian
-eu:Basque
-
-fa:Persian
-fi:Finnish
-fj:Fijian
-fo:Faeroese
-fr:French
-fy:Frisian
-
-ga:Irish
-gd:Gaelic (Scots)
-gl:Gallegan
-gn:Guarani
-gu:Gujarati
-gv:Manx
-
-ha:Hausa
-he:Hebrew
-hi:Hindi
-ho:Hiri Motu
-hr:Croatian
-hu:Hungarian
-hy:Armenian
-hz:Herero
-
-ia:Interlingua
-id:Indonesian
-ie:Interlingue
-ik:Inupiaq
-is:Icelandic
-it:Italian
-iu:Inuktitut
-
-ja:Japanese
-jw:Javanese
-
-ka:Georgian
-ki:Kikuyu
-kj:Kuanyama
-kk:Kazakh
-kl:Kalaallisut
-km:Khmer
-kn:Kannada
-ko:Korean
-ks:Kashmiri
-ku:Kurdish
-kv:Komi
-kw:Cornish
-ky:Kirghiz
-
-la:Latin
-lb:Letzeburgesch
-ln:Lingala
-lo:Lao
-lt:Lithuanian
-lv:Latvian
-
-mg:Malagasy
-mh:Marshall
-mi:Maori
-mk:Macedonian
-ml:Malayalam
-mn:Mongolian
-mo:Moldavian
-mr:Marathi
-ms:Malay
-mt:Maltese
-my:Burmese
-
-na:Nauru
-nb:Norwegian Bokmal
-nd:Ndebele, North
-ne:Nepali
-ng:Ndonga
-nl:Dutch
-nn:Norwegian Nynorsk
-no:Norwegian
-nr:Ndebele, South
-nv:Navajo
-ny:Chichewa; Nyanja
-
-oc:Occitan (post 1500)
-om:Oromo
-or:Oriya
-os:Ossetian; Ossetic
-
-pa:Panjabi
-pi:Pali
-pl:Polish
-ps:Pushto
-pt:Portuguese
-
-qu:Quechua
-
-rm:Rhaeto-Romance
-rn:Rundi
-ro:Romanian
-ru:Russian
-rw:Kinyarwanda
-
-sa:Sanskrit
-sc:Sardinian
-sd:Sindhi
-se:Sami
-sg:Sango
-si:Sinhalese
-sk:Slovak
-sl:Slovenian
-sm:Samoan
-sn:Shona
-so:Somali
-sq:Albanian
-sr:Serbian
-ss:Swati
-st:Sotho
-su:Sundanese
-sv:Swedish
-sw:Swahili
-
-ta:Tamil
-te:Telugu
-tg:Tajik
-th:Thai
-ti:Tigrinya
-tk:Turkmen
-tl:Tagalog
-tn:Tswana
-to:Tonga
-tr:Turkish
-ts:Tsonga
-tt:Tatar
-tw:Twi
-
-ug:Uighur
-uk:Ukrainian
-ur:Urdu
-uz:Uzbek
-
-vi:Vietnamese
-vo:Volapuk
-
-wo:Wolof
-
-xh:Xhosa
-
-yi:Yiddish
-yo:Yoruba
-
-za:Zhuang
-zh:Chinese
-zu:Zulu
+sub rename_language_code {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
+
+   return Locale::Codes::_rename_code("language",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# add_language_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
+
+sub add_language_code_alias {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
+
+   return Locale::Codes::_add_code_alias("language",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# delete_language_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_language_code_alias {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code_alias("language",$code,$codeset,$nowarn);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
index ce7b378..fb8df77 100644 (file)
+=pod
 
 =head1 NAME
 
-Locale::Language - ISO two letter codes for language identification (ISO 639)
+Locale::Language - standard codes for language identification
 
 =head1 SYNOPSIS
 
-    use Locale::Language;
-    
-    $lang = code2language('en');        # $lang gets 'English'
-    $code = language2code('French');    # $code gets 'fr'
-    
-    @codes   = all_language_codes();
-    @names   = all_language_names();
+   use Locale::Language;
 
+   $lang = code2language('en');        # $lang gets 'English'
+   $code = language2code('French');    # $code gets 'fr'
+
+   @codes   = all_language_codes();
+   @names   = all_language_names();
 
 =head1 DESCRIPTION
 
-The C<Locale::Language> module provides access to the ISO two-letter
-codes for identifying languages, as defined in ISO 639. You can either
-access the codes via the L<conversion routines> (described below),
-or via the two functions which return lists of all language codes or
-all language names.
+The C<Locale::Language> module provides access to standard codes used
+for identifying languages, such as those as defined in ISO 639.
 
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+639 two-letter codes will be used.
 
-=head1 CONVERSION ROUTINES
+=head1 SUPPORTED CODE SETS
 
-There are two conversion routines: C<code2language()> and C<language2code()>.
+There are several different code sets you can use for identifying
+languages. The ones currently supported are:
 
 =over 4
 
-=item code2language()
+=item B<alpha-2>
 
-This function takes a two letter language code and returns a string
-which contains the name of the language identified. If the code is
-not a valid language code, as defined by ISO 639, then C<undef>
-will be returned.
+This is the set of two-letter (lowercase) codes from ISO 639, such
+as 'he' for Hebrew.
 
-    $lang = code2language($code);
+This code set is identified with the symbol C<LOCALE_LANG_ALPHA_2>.
 
-=item language2code()
+This is the default code set.
 
-This function takes a language name and returns the corresponding
-two letter language code, if such exists.
-If the argument could not be identified as a language name,
-then C<undef> will be returned.
+=item B<alpha-3>
 
-    $code = language2code('French');
+This is the set of three-letter (lowercase) bibliographic codes from
+ISO 639, such as 'heb' for Hebrew.
 
-The case of the language name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
+This code set is identified with the symbol C<LOCALE_LANG_ALPHA_3>.
 
-=back
+=item B<term>
 
+This is the set of three-letter (lowercase) terminologic codes from
+ISO 639.
 
-=head1 QUERY ROUTINES
+This code set is identified with the symbol C<LOCALE_LANG_TERM>.
 
-There are two function which can be used to obtain a list of all
-language codes, or all language names:
+=back
+
+=head1 ROUTINES
 
 =over 4
 
-=item C<all_language_codes()>
+=item B<code2language ( CODE [,CODESET] )>
 
-Returns a list of all two-letter language codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<language2code ( NAME [,CODESET] )>
 
-=item C<all_language_names()>
+=item B<language_code2code ( CODE ,CODESET ,CODESET2 )>
 
-Returns a list of all language names for which there is a corresponding
-two-letter language code. The names are capitalised, and not returned
-in any particular order.
+=item B<all_language_codes ( [CODESET] )>
 
-=back
+=item B<all_language_names ( [CODESET] )>
 
+=item B<Locale::Language::rename_language  ( CODE ,NEW_NAME [,CODESET] )>
 
-=head1 EXAMPLES
+=item B<Locale::Language::add_language  ( CODE ,NAME [,CODESET] )>
 
-The following example illustrates use of the C<code2language()> function.
-The user is prompted for a language code, and then told the corresponding
-language name:
+=item B<Locale::Language::delete_language  ( CODE [,CODESET] )>
 
-    $| = 1;    # turn off buffering
-    
-    print "Enter language code: ";
-    chop($code = <STDIN>);
-    $lang = code2language($code);
-    if (defined $lang)
-    {
-        print "$code = $lang\n";
-    }
-    else
-    {
-        print "'$code' is not a valid language code!\n";
-    }
+=item B<Locale::Language::add_language_alias  ( NAME ,NEW_NAME )>
 
-=head1 KNOWN BUGS AND LIMITATIONS
+=item B<Locale::Language::delete_language_alias  ( NAME )>
 
-=over 4
-
-=item *
+=item B<Locale::Language::rename_language_code  ( CODE ,NEW_CODE [,CODESET] )>
 
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+=item B<Locale::Language::add_language_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
 
-=item *
+=item B<Locale::Language::delete_language_code_alias  ( CODE [,CODESET] )>
 
-Currently just supports the two letter language codes -
-there are also three-letter codes, and numbers.
-Would these be of any use to anyone?
+These routines are all documented in the Locale::Codes man page.
 
 =back
 
@@ -117,42 +93,29 @@ Would these be of any use to anyone?
 
 =over 4
 
-=item Locale::Country
-
-ISO codes for identification of country (ISO 3166).
-Supports 2-letter, 3-letter, and numeric country codes.
-
-=item Locale::Script
+=item B<Locale::Codes>
 
-ISO codes for identification of written scripts (ISO 15924).
+=item B<Locale::Constants>
 
-=item Locale::Currency
+=item B<http://www.loc.gov/standards/iso639-2/>
 
-ISO three letter codes for identification of currencies and funds (ISO 4217).
-
-=item ISO 639:1988 (E/F)
-
-Code for the representation of names of languages.
-
-=item http://lcweb.loc.gov/standards/iso639-2/langhome.html
-
-Home page for ISO 639-2.
+Source of the ISO 639 codes.
 
 =back
 
-
 =head1 AUTHOR
 
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
 
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
 
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
 
-Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
 
 This module is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
 =cut
-
index f5fdbab..ab09c3a 100644 (file)
-#
-# Locale::Script - ISO codes for script identification (ISO 15924)
-#
-# $Id: Script.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
 package Locale::Script;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
 use strict;
+use warnings;
 require 5.002;
 
 require Exporter;
 use Carp;
+use Locale::Codes;
 use Locale::Constants;
+use Locale::Codes::Script;
 
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
 
-#-----------------------------------------------------------------------
-#      Public Global Variables
-#-----------------------------------------------------------------------
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION   = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
+
+$VERSION='3.12';
 @ISA       = qw(Exporter);
-@EXPORT    = qw(code2script script2code
-                all_script_codes all_script_names
-               script_code2code
-               LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
+@EXPORT    = qw(code2script
+                script2code
+                all_script_codes
+                all_script_names
+                script_code2code
+                LOCALE_SCRIPT_ALPHA
+                LOCALE_SCRIPT_NUMERIC
+               );
+
+sub _code {
+   my($code,$codeset) = @_;
+   $code = ""  if (! $code);
+
+   $codeset = LOCALE_SCRIPT_DEFAULT  if (! defined($codeset)  ||  $codeset eq "");
+
+   if ($codeset =~ /^\d+$/) {
+      if      ($codeset ==  LOCALE_SCRIPT_ALPHA) {
+         $codeset = "alpha";
+      } elsif ($codeset ==  LOCALE_SCRIPT_NUMERIC) {
+         $codeset = "num";
+      } else {
+         return (1);
+      }
+   }
+
+   if      ($codeset eq "alpha") {
+      $code    = ucfirst(lc($code));
+   } elsif ($codeset eq "num") {
+      if (defined($code)  &&  $code ne "") {
+         return (1)  unless ($code =~ /^\d+$/);
+         $code    = sprintf("%.3d", $code);
+      }
+   } else {
+      return (1);
+   }
+
+   return (0,$code,$codeset);
+}
+
+#=======================================================================
+#
+# code2script ( CODE [,CODESET] )
+#
+#=======================================================================
 
-#-----------------------------------------------------------------------
-#      Private Global Variables
-#-----------------------------------------------------------------------
-my $CODES     = [];
-my $COUNTRIES = [];
+sub code2script {
+   my($err,$code,$codeset) = _code(@_);
+   return undef  if ($err  ||
+                     ! defined $code);
 
+   return Locale::Codes::_code2name("script",$code,$codeset);
+}
 
 #=======================================================================
 #
-# code2script ( CODE [, CODESET ] )
+# script2code ( SCRIPT [,CODESET] )
 #
 #=======================================================================
-sub code2script
-{
-    my $code = shift;
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
-    return undef unless defined $code;
-
-    #-------------------------------------------------------------------
-    # Make sure the code is in the right form before we use it
-    # to look up the corresponding script.
-    # We have to sprintf because the codes are given as 3-digits,
-    # with leading 0's. Eg 070 for Egyptian demotic.
-    #-------------------------------------------------------------------
-    if ($codeset == LOCALE_CODE_NUMERIC)
-    {
-       return undef if ($code =~ /\D/);
-       $code = sprintf("%.3d", $code);
-    }
-    else
-    {
-       $code = lc($code);
-    }
-
-    if (exists $CODES->[$codeset]->{$code})
-    {
-        return $CODES->[$codeset]->{$code};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such script code!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub script2code {
+   my($script,$codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err  ||
+                     ! defined $script);
+
+   return Locale::Codes::_name2code("script",$script,$codeset);
 }
 
+#=======================================================================
+#
+# script_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub script_code2code {
+   (@_ == 3) or croak "script_code2code() takes 3 arguments!";
+   my($code,$inset,$outset) = @_;
+   my($err,$tmp);
+   ($err,$code,$inset) = _code($code,$inset);
+   return undef  if ($err);
+   ($err,$tmp,$outset) = _code("",$outset);
+   return undef  if ($err);
+
+   return Locale::Codes::_code2code("script",$code,$inset,$outset);
+}
 
 #=======================================================================
 #
-# script2code ( SCRIPT [, CODESET ] )
+# all_script_codes ( [CODESET] )
 #
 #=======================================================================
-sub script2code
-{
-    my $script = shift;
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
-    return undef unless defined $script;
-    $script = lc($script);
-    if (exists $COUNTRIES->[$codeset]->{$script})
-    {
-        return $COUNTRIES->[$codeset]->{$script};
-    }
-    else
-    {
-        #---------------------------------------------------------------
-        # no such script!
-        #---------------------------------------------------------------
-        return undef;
-    }
+
+sub all_script_codes {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_codes("script",$codeset);
 }
 
 
 #=======================================================================
 #
-# script_code2code ( CODE, IN-CODESET, OUT-CODESET )
+# all_script_names ( [CODESET] )
 #
 #=======================================================================
-sub script_code2code
-{
-    (@_ == 3) or croak "script_code2code() takes 3 arguments!";
-
-    my $code = shift;
-    my $inset = shift;
-    my $outset = shift;
-    my $outcode;
-    my $script;
-
-
-    return undef if $inset == $outset;
-    $script = code2script($code, $inset);
-    return undef if not defined $script;
-    $outcode = script2code($script, $outset);
-    return $outcode;
+
+sub all_script_names {
+   my($codeset) = @_;
+   my($err,$tmp);
+   ($err,$tmp,$codeset) = _code("",$codeset);
+   return undef  if ($err);
+
+   return Locale::Codes::_all_names("script",$codeset);
 }
 
+#=======================================================================
+#
+# rename_script ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_script {
+   my($code,$new_name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_rename("script",$code,$new_name,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# all_script_codes()
+# add_script ( CODE,NAME [,CODESET] )
 #
 #=======================================================================
-sub all_script_codes
-{
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 
-    return keys %{ $CODES->[$codeset] };
+sub add_script {
+   my($code,$name,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_add_code("script",$code,$name,$codeset,$nowarn);
 }
 
+#=======================================================================
+#
+# delete_script ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_script {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset) = _code($code,$codeset);
+
+   return Locale::Codes::_delete_code("script",$code,$codeset,$nowarn);
+}
 
 #=======================================================================
 #
-# all_script_names()
+# add_script_alias ( NAME,NEW_NAME )
 #
 #=======================================================================
-sub all_script_names
-{
-    my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 
-    return values %{ $CODES->[$codeset] };
+sub add_script_alias {
+   my($name,$new_name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_add_alias("script",$name,$new_name,$nowarn);
 }
 
+#=======================================================================
+#
+# delete_script_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_script_alias {
+   my($name,$nowarn) = @_;
+   $nowarn   = (defined($nowarn)  &&  $nowarn eq "nowarn" ? 1 : 0);
+
+   return Locale::Codes::_delete_alias("script",$name,$nowarn);
+}
 
 #=======================================================================
 #
-# initialisation code - stuff the DATA into the ALPHA2 hash
+# rename_script_code ( CODE,NEW_CODE [,CODESET] )
 #
 #=======================================================================
-{
-    my   ($alpha2, $alpha3, $numeric);
-    my    $script;
-    local $_;
 
+sub rename_script_code {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
 
-    while (<DATA>)
-    {
-        next unless /\S/;
-        chop;
-        ($alpha2, $alpha3, $numeric, $script) = split(/:/, $_, 4);
+   return Locale::Codes::_rename_code("script",$code,$new_code,$codeset,$nowarn);
+}
 
-        $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $script;
-        $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$script"} = $alpha2;
+#=======================================================================
+#
+# add_script_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
 
-       if ($alpha3)
-       {
-            $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $script;
-            $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$script"} = $alpha3;
-       }
+sub add_script_code_alias {
+   my($code,$new_code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
+   ($err,$new_code,$codeset) = _code($new_code,$codeset)  if (! $err);
 
-       if ($numeric)
-       {
-            $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $script;
-            $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$script"} = $numeric;
-       }
+   return Locale::Codes::_add_code_alias("script",$code,$new_code,$codeset,$nowarn);
+}
 
-    }
+#=======================================================================
+#
+# delete_script_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_script_code_alias {
+   my($code,@args) = @_;
+   my $nowarn   = 0;
+   $nowarn      = 1, pop(@args)  if ($args[$#args] eq "nowarn");
+   my $codeset  = shift(@args);
+   my $err;
+   ($err,$code,$codeset)     = _code($code,$codeset);
 
-    close(DATA);
+   return Locale::Codes::_delete_code_alias("script",$code,$codeset,$nowarn);
 }
 
 1;
-
-__DATA__
-am:ama:130:Aramaic
-ar:ara:160:Arabic
-av:ave:151:Avestan
-bh:bhm:300:Brahmi (Ashoka)
-bi:bid:372:Buhid
-bn:ben:325:Bengali
-bo:bod:330:Tibetan
-bp:bpm:285:Bopomofo
-br:brl:570:Braille
-bt:btk:365:Batak
-bu:bug:367:Buginese (Makassar)
-by:bys:550:Blissymbols
-ca:cam:358:Cham
-ch:chu:221:Old Church Slavonic
-ci:cir:291:Cirth
-cm:cmn:402:Cypro-Minoan
-co:cop:205:Coptic
-cp:cpr:403:Cypriote syllabary
-cy:cyr:220:Cyrillic
-ds:dsr:250:Deserel (Mormon)
-dv:dvn:315:Devanagari (Nagari)
-ed:egd:070:Egyptian demotic
-eg:egy:050:Egyptian hieroglyphs
-eh:egh:060:Egyptian hieratic
-el:ell:200:Greek
-eo:eos:210:Etruscan and Oscan
-et:eth:430:Ethiopic
-gl:glg:225:Glagolitic
-gm:gmu:310:Gurmukhi
-gt:gth:206:Gothic
-gu:guj:320:Gujarati
-ha:han:500:Han ideographs
-he:heb:125:Hebrew
-hg:hgl:420:Hangul
-hm:hmo:450:Pahawh Hmong
-ho:hoo:371:Hanunoo
-hr:hrg:410:Hiragana
-hu:hun:176:Old Hungarian runic
-hv:hvn:175:Kok Turki runic
-hy:hye:230:Armenian
-iv:ivl:610:Indus Valley
-ja:jap:930:(alias for Han + Hiragana + Katakana)
-jl:jlg:445:Cherokee syllabary
-jw:jwi:360:Javanese
-ka:kam:241:Georgian (Mxedruli)
-kh:khn:931:(alias for Hangul + Han)
-kk:kkn:411:Katakana
-km:khm:354:Khmer
-kn:kan:345:Kannada
-kr:krn:357:Karenni (Kayah Li)
-ks:kst:305:Kharoshthi
-kx:kax:240:Georgian (Xucuri)
-la:lat:217:Latin
-lf:laf:215:Latin (Fraktur variant)
-lg:lag:216:Latin (Gaelic variant)
-lo:lao:356:Lao
-lp:lpc:335:Lepcha (Rong)
-md:mda:140:Mandaean
-me:mer:100:Meroitic
-mh:may:090:Mayan hieroglyphs
-ml:mlm:347:Malayalam
-mn:mon:145:Mongolian
-my:mya:350:Burmese
-na:naa:400:Linear A
-nb:nbb:401:Linear B
-og:ogm:212:Ogham
-or:ory:327:Oriya
-os:osm:260:Osmanya
-ph:phx:115:Phoenician
-ph:pah:150:Pahlavi
-pl:pld:282:Pollard Phonetic
-pq:pqd:295:Klingon plQaD
-pr:prm:227:Old Permic
-ps:pst:600:Phaistos Disk
-rn:rnr:211:Runic (Germanic)
-rr:rro:620:Rongo-rongo
-sa:sar:110:South Arabian
-si:sin:348:Sinhala
-sj:syj:137:Syriac (Jacobite variant)
-sl:slb:440:Unified Canadian Aboriginal Syllabics
-sn:syn:136:Syriac (Nestorian variant)
-sw:sww:281:Shavian (Shaw)
-sy:syr:135:Syriac (Estrangelo)
-ta:tam:346:Tamil
-tb:tbw:373:Tagbanwa
-te:tel:340:Telugu
-tf:tfn:120:Tifnagh
-tg:tag:370:Tagalog
-th:tha:352:Thai
-tn:tna:170:Thaana
-tw:twr:290:Tengwar
-va:vai:470:Vai
-vs:vsp:280:Visible Speech
-xa:xas:000:Cuneiform, Sumero-Akkadian
-xf:xfa:105:Cuneiform, Old Persian
-xk:xkn:412:(alias for Hiragana + Katakana)
-xu:xug:106:Cuneiform, Ugaritic
-yi:yii:460:Yi
-zx:zxx:997:Unwritten language
-zy:zyy:998:Undetermined script
-zz:zzz:999:Uncoded script
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
index 93ff882..8d51bcf 100644 (file)
+=pod
 
 =head1 NAME
 
-Locale::Script - ISO codes for script identification (ISO 15924)
+Locale::Script - standard codes for script identification
 
 =head1 SYNOPSIS
 
-    use Locale::Script;
-    use Locale::Constants;
-    
-    $script  = code2script('ph');                       # 'Phoenician'
-    $code    = script2code('Tibetan');                  # 'bo'
-    $code3   = script2code('Tibetan',
-                           LOCALE_CODE_ALPHA_3);        # 'bod'
-    $codeN   = script2code('Tibetan',
-                           LOCALE_CODE_ALPHA_NUMERIC);  # 330
-    
-    @codes   = all_script_codes();
-    @scripts = all_script_names();
-    
+   use Locale::Script;
 
-=head1 DESCRIPTION
-
-The C<Locale::Script> module provides access to the ISO
-codes for identifying scripts, as defined in ISO 15924.
-For example, Egyptian hieroglyphs are denoted by the two-letter
-code 'eg', the three-letter code 'egy', and the numeric code 050.
-
-You can either access the codes via the conversion routines
-(described below), or with the two functions which return lists
-of all script codes or all script names.
-
-There are three different code sets you can use for identifying
-scripts:
-
-=over 4
-
-=item B<alpha-2>
-
-Two letter codes, such as 'bo' for Tibetan.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
-
-=item B<alpha-3>
-
-Three letter codes, such as 'ell' for Greek.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
-
-=item B<numeric>
-
-Numeric codes, such as 410 for Hiragana.
-This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
-
-=back
-
-All of the routines take an optional additional argument
-which specifies the code set to use.
-If not specified, it defaults to the two-letter codes.
-This is partly for backwards compatibility (previous versions
-of Locale modules only supported the alpha-2 codes), and
-partly because they are the most widely used codes.
-
-The alpha-2 and alpha-3 codes are not case-dependent,
-so you can use 'BO', 'Bo', 'bO' or 'bo' for Tibetan.
-When a code is returned by one of the functions in
-this module, it will always be lower-case.
-
-=head2 SPECIAL CODES
-
-The standard defines various special codes.
-
-=over 4
-
-=item *
-
-The standard reserves codes in the ranges B<qa> - B<qt>,
-B<qaa> - B<qat>, and B<900> - B<919>, for private use.
-
-=item *
-
-B<zx>, B<zxx>, and B<997>, are the codes for unwritten languages.
-
-=item *
-
-B<zy>, B<zyy>, and B<998>, are the codes for an undetermined script.
+   $script  = code2script('phnx');                     # 'Phoenician'
+   $code    = script2code('Phoenician');               # 'Phnx'
+   $code    = script2code('Phoenician',
+                          LOCALE_CODE_NUMERIC);        # 115
 
-=item *
+   @codes   = all_script_codes();
+   @scripts = all_script_names();
 
-B<zz>, B<zzz>, and B<999>, are the codes for an uncoded script.
-
-=back
+=head1 DESCRIPTION
 
-The private codes are not recognised by Locale::Script,
-but the others are.
+The C<Locale::Script> module provides access to standards codes used
+for identifying scripts, such as those defined in ISO 15924.
 
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+15924 four-letter codes will be used.
 
-=head1 CONVERSION ROUTINES
+=head1 SUPPORTED CODE SETS
 
-There are three conversion routines: C<code2script()>, C<script2code()>,
-and C<script_code2code()>.
+There are several different code sets you can use for identifying
+scripts. The ones currently supported are:
 
 =over 4
 
-=item code2script( CODE, [ CODESET ] )
-
-This function takes a script code and returns a string
-which contains the name of the script identified.
-If the code is not a valid script code, as defined by ISO 15924,
-then C<undef> will be returned:
+=item B<alpha>
 
-    $script = code2script('cy');   # Cyrillic
+This is a set of four-letter (capitalized) codes from ISO 15924
+such as 'Phnx' for Phoenician.
 
-=item script2code( STRING, [ CODESET ] )
+This code set is identified with the symbol C<LOCALE_SCRIPT_ALPHA>.
 
-This function takes a script name and returns the corresponding
-script code, if such exists.
-If the argument could not be identified as a script name,
-then C<undef> will be returned:
+The Zxxx, Zyyy, and Zzzz codes are not used.
 
-    $code = script2code('Gothic', LOCALE_CODE_ALPHA_3);
-    # $code will now be 'gth'
+This is the default code set.
 
-The case of the script name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
-
-=item script_code2code( CODE, CODESET, CODESET )
-
-This function takes a script code from one code set,
-and returns the corresponding code from another code set.
+=item B<numeric>
 
-    $alpha2 = script_code2code('jwi',
-                LOCALE_CODE_ALPHA_3 => LOCALE_CODE_ALPHA_2);
-    # $alpha2 will now be 'jw' (Javanese)
+This is a set of three-digit numeric codes from ISO 15924 such as 115
+for Phoenician.
 
-If the code passed is not a valid script code in
-the first code set, or if there isn't a code for the
-corresponding script in the second code set,
-then C<undef> will be returned.
+This code set is identified with the symbol C<LOCALE_SCRIPT_NUMERIC>.
 
 =back
 
-
-=head1 QUERY ROUTINES
-
-There are two function which can be used to obtain a list of all codes,
-or all script names:
+=head1 ROUTINES
 
 =over 4
 
-=item C<all_script_codes ( [ CODESET ] )>
+=item B<code2script ( CODE [,CODESET] )>
 
-Returns a list of all two-letter script codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<script2code ( NAME [,CODESET] )>
 
-=item C<all_script_names ( [ CODESET ] )>
+=item B<script_code2code ( CODE ,CODESET ,CODESET2 )>
 
-Returns a list of all script names for which there is a corresponding
-script code in the specified code set.
-The names are capitalised, and not returned in any particular order.
-
-=back
+=item B<all_script_codes ( [CODESET] )>
 
+=item B<all_script_names ( [CODESET] )>
 
-=head1 EXAMPLES
+=item B<Locale::Script::rename_script  ( CODE ,NEW_NAME [,CODESET] )>
 
-The following example illustrates use of the C<code2script()> function.
-The user is prompted for a script code, and then told the corresponding
-script name:
+=item B<Locale::Script::add_script  ( CODE ,NAME [,CODESET] )>
 
-    $| = 1;   # turn off buffering
-    
-    print "Enter script code: ";
-    chop($code = <STDIN>);
-    $script = code2script($code, LOCALE_CODE_ALPHA_2);
-    if (defined $script)
-    {
-        print "$code = $script\n";
-    }
-    else
-    {
-        print "'$code' is not a valid script code!\n";
-    }
+=item B<Locale::Script::delete_script  ( CODE [,CODESET] )>
 
+=item B<Locale::Script::add_script_alias  ( NAME ,NEW_NAME )>
 
-=head1 KNOWN BUGS AND LIMITATIONS
-
-=over 4
-
-=item *
+=item B<Locale::Script::delete_script_alias  ( NAME )>
 
-When using C<script2code()>, the script name must currently appear
-exactly as it does in the source of the module. For example,
+=item B<Locale::Script::rename_script_code  ( CODE ,NEW_CODE [,CODESET] )>
 
-    script2code('Egyptian hieroglyphs')
+=item B<Locale::Script::add_script_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
 
-will return B<eg>, as expected. But the following will all return C<undef>:
+=item B<Locale::Script::delete_script_code_alias  ( CODE [,CODESET] )>
 
-    script2code('hieroglyphs')
-    script2code('Egyptian Hieroglypics')
-
-If there's need for it, a future version could have variants
-for script names.
-
-=item *
-
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+These routines are all documented in the Locale::Codes man page.
 
 =back
 
@@ -213,41 +90,29 @@ A lazy implementation would be more memory friendly.
 
 =over 4
 
-=item Locale::Language
-
-ISO two letter codes for identification of language (ISO 639).
-
-=item Locale::Currency
-
-ISO three letter codes for identification of currencies
-and funds (ISO 4217).
-
-=item Locale::Country
+=item B<Locale::Codes>
 
-ISO three letter codes for identification of countries (ISO 3166)
+=item B<Locale::Constants>
 
-=item ISO 15924
-
-The ISO standard which defines these codes.
-
-=item http://www.evertype.com/standards/iso15924/
+=item B<http://www.unicode.org/iso15924/>
 
 Home page for ISO 15924.
 
-
 =back
 
-
 =head1 AUTHOR
 
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
 
 =head1 COPYRIGHT
 
-Copyright (c) 2002-2004 Neil Bowers.
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2010 Sullivan Beck
 
 This module is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
 =cut
-
diff --git a/cpan/Locale-Codes/t/alias_code.t b/cpan/Locale-Codes/t/alias_code.t
new file mode 100755 (executable)
index 0000000..b763372
--- /dev/null
@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if ($test[0] eq "alias_code") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::alias_code(@test,"nowarn");
+
+   } elsif ($test[0] eq "country2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return country2code(@test);
+
+   } else {
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2country(@test);
+   }
+}
+
+$tests = "
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   _undef_
+
+country2code
+United Kingdom
+   ~
+   gb
+
+alias_code uk gb LOCALE_CODE_FOO ~ 0
+
+alias_code uk x1 ~ 0
+
+alias_code us gb ~ 0
+
+alias_code uk gb LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   _undef_
+
+country2code
+United Kingdom
+   ~
+   gb
+
+alias_code uk gb ~ uk
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   United Kingdom
+
+country2code
+United Kingdom
+   ~
+   uk
+
+";
+
+print "alias_code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/all.t b/cpan/Locale-Codes/t/all.t
deleted file mode 100644 (file)
index f70727c..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-#!./perl
-#
-# all.t - tests for all_* routines in
-#      Locale::Country
-#      Locale::Language
-#      Locale::Currency
-#      Locale::Script
-#
-# There are four tests. We get a list of all codes, convert to
-# language/country/currency, # convert back to code,
-# and check that they're the same. Then we do the same,
-# starting with list of languages/countries/currencies.
-#
-
-use Locale::Country;
-use Locale::Language;
-use Locale::Currency;
-use Locale::Script;
-
-print "1..20\n";
-
-my $code;
-my $language;
-my $country;
-my $ok;
-my $reverse;
-my $currency;
-my $script;
-
-
-#-----------------------------------------------------------------------
-# Old API - without codeset specified, default to ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes())
-{
-    $country = code2country($code);
-    if (!defined $country)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = country2code($country);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 1\n" : "not ok 1\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for ALPHA2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_ALPHA_2))
-{
-    $country = code2country($code, LOCALE_CODE_ALPHA_2);
-    if (!defined $country)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = country2code($country, LOCALE_CODE_ALPHA_2);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 2\n" : "not ok 2\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for ALPHA3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_ALPHA_3))
-{
-    $country = code2country($code, LOCALE_CODE_ALPHA_3);
-    if (!defined $country)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = country2code($country, LOCALE_CODE_ALPHA_3);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 3\n" : "not ok 3\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_NUMERIC))
-{
-    $country = code2country($code, LOCALE_CODE_NUMERIC);
-    if (!defined $country)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = country2code($country, LOCALE_CODE_NUMERIC);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 4\n" : "not ok 4\n");
-
-
-#-----------------------------------------------------------------------
-# Old API - country to code, back to country, using default of ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
-    $code = country2code($country);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2country($code);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $country)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 5\n" : "not ok 5\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
-    $code = country2code($country, LOCALE_CODE_ALPHA_2);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2country($code, LOCALE_CODE_ALPHA_2);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $country)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 6\n" : "not ok 6\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_ALPHA_3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
-    $code = country2code($country, LOCALE_CODE_ALPHA_3);
-    if (!defined $code)
-    {
-       next if ($country eq 'Antarctica'
-                || $country eq 'Bouvet Island'
-                || $country eq 'Cocos (Keeling) Islands'
-                || $country eq 'Christmas Island'
-                || $country eq 'France, Metropolitan'
-                || $country eq 'South Georgia and the South Sandwich Islands'
-                || $country eq 'Heard Island and McDonald Islands'
-                || $country eq 'British Indian Ocean Territory'
-                || $country eq 'French Southern Territories'
-                || $country eq 'United States Minor Outlying Islands'
-                || $country eq 'Mayotte'
-                || $country eq 'Zaire');
-        $ok = 0;
-        last;
-    }
-    $reverse = code2country($code, LOCALE_CODE_ALPHA_3);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $country)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 7\n" : "not ok 7\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
-    $code = country2code($country, LOCALE_CODE_NUMERIC);
-    if (!defined $code)
-    {
-       next if ($country eq 'Antarctica'
-                || $country eq 'Bouvet Island'
-                || $country eq 'Cocos (Keeling) Islands'
-                || $country eq 'Christmas Island'
-                || $country eq 'France, Metropolitan'
-                || $country eq 'South Georgia and the South Sandwich Islands'
-                || $country eq 'Heard Island and McDonald Islands'
-                || $country eq 'British Indian Ocean Territory'
-                || $country eq 'French Southern Territories'
-                || $country eq 'United States Minor Outlying Islands'
-                || $country eq 'Mayotte'
-                || $country eq 'Zaire');
-        $ok = 0;
-        last;
-    }
-    $reverse = code2country($code, LOCALE_CODE_NUMERIC);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $country)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 8\n" : "not ok 8\n");
-
-
-$ok = 1;
-foreach $code (all_language_codes())
-{
-    $language = code2language($code);
-    if (!defined $language)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = language2code($language);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 9\n" : "not ok 9\n");
-
-
-$ok = 1;
-foreach $language (all_language_names())
-{
-    $code = language2code($language);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2language($code);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $language)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 10\n" : "not ok 10\n");
-
-$ok = 1;
-foreach $code (all_currency_codes())
-{
-    $currency = code2currency($code);
-    if (!defined $currency)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = currency2code($currency);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    #
-    # three special cases:
-    #  The Kwacha has two codes - used in Zambia and Malawi
-    #  The Russian Ruble has two codes - rub and rur
-    #  The Belarussian Ruble has two codes - byb and byr
-    if ($reverse ne $code
-       && $code ne 'mwk' && $code ne 'zmk'
-       && $code ne 'byr' && $code ne 'byb'
-       && $code ne 'rub' && $code ne 'rur')
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 11\n" : "not ok 11\n");
-
-$ok = 1;
-foreach $currency (all_currency_names())
-{
-    $code = currency2code($currency);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2currency($code);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $currency)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 12\n" : "not ok 12\n");
-
-#=======================================================================
-#
-#      Locale::Script tests
-#
-#=======================================================================
-
-#-----------------------------------------------------------------------
-# Old API - without codeset specified, default to ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes())
-{
-    $script = code2script($code);
-    if (!defined $script)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = script2code($script);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 13\n" : "not ok 13\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for ALPHA2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_ALPHA_2))
-{
-    $script = code2script($code, LOCALE_CODE_ALPHA_2);
-    if (!defined $script)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = script2code($script, LOCALE_CODE_ALPHA_2);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 14\n" : "not ok 14\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for ALPHA3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_ALPHA_3))
-{
-    $script = code2script($code, LOCALE_CODE_ALPHA_3);
-    if (!defined $script)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = script2code($script, LOCALE_CODE_ALPHA_3);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 15\n" : "not ok 15\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_NUMERIC))
-{
-    $script = code2script($code, LOCALE_CODE_NUMERIC);
-    if (!defined $script)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = script2code($script, LOCALE_CODE_NUMERIC);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $code)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 16\n" : "not ok 16\n");
-
-
-#-----------------------------------------------------------------------
-# Old API - script to code, back to script, using default of ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
-    $code = script2code($script);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2script($code);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $script)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 17\n" : "not ok 17\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
-    $code = script2code($script, LOCALE_CODE_ALPHA_2);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2script($code, LOCALE_CODE_ALPHA_2);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $script)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 18\n" : "not ok 18\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_ALPHA_3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
-    $code = script2code($script, LOCALE_CODE_ALPHA_3);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2script($code, LOCALE_CODE_ALPHA_3);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $script)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 19\n" : "not ok 19\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
-    $code = script2code($script, LOCALE_CODE_NUMERIC);
-    if (!defined $code)
-    {
-        $ok = 0;
-        last;
-    }
-    $reverse = code2script($code, LOCALE_CODE_NUMERIC);
-    if (!defined $reverse)
-    {
-        $ok = 0;
-        last;
-    }
-    if ($reverse ne $script)
-    {
-        $ok = 0;
-        last;
-    }
-}
-print ($ok ? "ok 20\n" : "not ok 20\n");
-
diff --git a/cpan/Locale-Codes/t/code2country.t b/cpan/Locale-Codes/t/code2country.t
new file mode 100755 (executable)
index 0000000..43c06a0
--- /dev/null
@@ -0,0 +1,144 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2country(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+zz ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_NUMERIC ~ _undef_
+
+ja ~ _undef_
+
+uk ~ _undef_
+
+BO
+   ~
+   Bolivia, Plurinational State of
+
+BO
+LOCALE_CODE_ALPHA_2
+   ~
+   Bolivia, Plurinational State of
+
+bol
+LOCALE_CODE_ALPHA_3
+   ~
+   Bolivia (Plurinational State of)
+
+pk ~ Pakistan
+
+sn ~ Senegal
+
+us
+   ~
+   United States
+
+ad ~ Andorra
+
+ad LOCALE_CODE_ALPHA_2 ~ Andorra
+
+and LOCALE_CODE_ALPHA_3 ~ Andorra
+
+020 LOCALE_CODE_NUMERIC ~ Andorra
+
+48 LOCALE_CODE_NUMERIC ~ Bahrain
+
+zw ~ Zimbabwe
+
+gb
+   ~
+   United Kingdom
+
+kz ~ Kazakhstan
+
+mo ~ Macao
+
+tl LOCALE_CODE_ALPHA_2 ~ Timor-Leste
+
+tls LOCALE_CODE_ALPHA_3 ~ Timor-Leste
+
+626 LOCALE_CODE_NUMERIC ~ Timor-Leste
+
+BO LOCALE_CODE_ALPHA_3 ~ _undef_
+
+BO LOCALE_CODE_NUMERIC ~ _undef_
+
+ax
+   ~
+   Aland Islands
+
+ala
+LOCALE_CODE_ALPHA_3
+   ~
+   Aland Islands
+
+248
+LOCALE_CODE_NUMERIC
+   ~
+   Aland Islands
+
+scg
+LOCALE_CODE_ALPHA_3
+   ~
+   _undef_
+
+891
+LOCALE_CODE_NUMERIC
+   ~
+   _undef_
+
+rou LOCALE_CODE_ALPHA_3 ~ Romania
+
+";
+
+print "code2country...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/t/code2currency.t b/cpan/Locale-Codes/t/code2currency.t
new file mode 100755 (executable)
index 0000000..6b32b31
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Currency;
+
+%type = ( "LOCALE_CODE_ALPHA"    => LOCALE_CODE_ALPHA,
+          "LOCALE_CODE_NUMERIC"  => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2currency(@test);
+}
+
+$tests = "
+
+ukp ~ _undef_
+
+zz ~ _undef_
+
+zzz ~ _undef_
+
+zzzz ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+BOB
+   ~
+   Boliviano
+
+all
+   ~
+   Lek
+
+bnd
+   ~
+   Brunei Dollar
+
+bob
+   ~
+   Boliviano
+
+byr
+   ~
+   Belarussian Ruble
+
+chf
+   ~
+   Swiss Franc
+
+cop
+   ~
+   Colombian Peso
+
+dkk
+   ~
+   Danish Krone
+
+fjd
+   ~
+   Fiji Dollar
+
+idr
+   ~
+   Rupiah
+
+mmk
+   ~
+   Kyat
+
+mvr
+   ~
+   Rufiyaa
+
+mwk
+   ~
+   Kwacha
+
+rub
+   ~
+   Russian Ruble
+
+zmk
+   ~
+   Zambian Kwacha
+
+zwl
+   ~
+   Zimbabwe Dollar
+
+";
+
+print "code2currency...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/code2language.t b/cpan/Locale-Codes/t/code2language.t
new file mode 100755 (executable)
index 0000000..a0308d4
--- /dev/null
@@ -0,0 +1,222 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Language;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_TERM"    => LOCALE_CODE_TERM,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2language(@test);
+}
+
+$tests = "
+
+in ~ _undef_
+
+iw ~ _undef_
+
+ji ~ _undef_
+
+jp ~ _undef_
+
+sh ~ _undef_
+
+zz ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+DA
+   ~
+   Danish
+
+aa
+   ~
+   Afar
+
+ae
+   ~
+   Avestan
+
+bs
+   ~
+   Bosnian
+
+ce
+   ~
+   Chechen
+
+ch
+   ~
+   Chamorro
+
+cu
+   ~
+   Church Slavic
+
+cv
+   ~
+   Chuvash
+
+en
+   ~
+   English
+
+eo
+   ~
+   Esperanto
+
+fi
+   ~
+   Finnish
+
+gv
+   ~
+   Manx
+
+he
+   ~
+   Hebrew
+
+ho
+   ~
+   Hiri Motu
+
+hz
+   ~
+   Herero
+
+id
+   ~
+   Indonesian
+
+iu
+   ~
+   Inuktitut
+
+ki
+   ~
+   Kikuyu
+
+kj
+   ~
+   Kuanyama
+
+kv
+   ~
+   Komi
+
+kw
+   ~
+   Cornish
+
+lb
+   ~
+   Luxembourgish
+
+mh
+   ~
+   Marshallese
+
+nb
+   ~
+   Bokmal, Norwegian
+
+nd
+   ~
+   Ndebele, North
+
+ng
+   ~
+   Ndonga
+
+nn
+   ~
+   Norwegian Nynorsk
+
+nr
+   ~
+   Ndebele, South
+
+nv
+   ~
+   Navajo
+
+ny
+   ~
+   Chichewa
+
+oc
+   ~
+   Occitan (post 1500)
+
+os
+   ~
+   Ossetian
+
+pi
+   ~
+   Pali
+
+sc
+   ~
+   Sardinian
+
+se
+   ~
+   Northern Sami
+
+ug
+   ~
+   Uighur
+
+yi
+   ~
+   Yiddish
+
+za
+   ~
+   Zhuang
+
+zu
+   ~
+   Zulu
+
+";
+
+print "code2language...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/code2script.t b/cpan/Locale-Codes/t/code2script.t
new file mode 100755 (executable)
index 0000000..ba700f9
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Script;
+
+%type = ( "LOCALE_SCRIPT_ALPHA"   => LOCALE_SCRIPT_ALPHA,
+          "LOCALE_SCRIPT_NUMERIC" => LOCALE_SCRIPT_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2script(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+Phnx ~ Phoenician
+
+phnx ~ Phoenician
+
+115 LOCALE_SCRIPT_NUMERIC ~ Phoenician
+
+";
+
+print "code2script...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/constants.t b/cpan/Locale-Codes/t/constants.t
deleted file mode 100644 (file)
index e71103d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!./perl
-#
-# constants.t - tests for Locale::Constants
-#
-
-use Locale::Constants;
-
-print "1..3\n";
-
-if (defined LOCALE_CODE_ALPHA_2
-    && defined LOCALE_CODE_ALPHA_3
-    && defined LOCALE_CODE_NUMERIC)
-{
-    print "ok 1\n";
-}
-else
-{
-    print "not ok 1\n";
-}
-
-if (LOCALE_CODE_ALPHA_2 != LOCALE_CODE_ALPHA_3
-    && LOCALE_CODE_ALPHA_2 != LOCALE_CODE_NUMERIC
-    && LOCALE_CODE_ALPHA_3 != LOCALE_CODE_NUMERIC)
-{
-    print "ok 2\n";
-}
-else
-{
-    print "not ok 2\n";
-}
-
-if (defined LOCALE_CODE_DEFAULT
-    && (LOCALE_CODE_DEFAULT == LOCALE_CODE_ALPHA_2
-       || LOCALE_CODE_DEFAULT == LOCALE_CODE_ALPHA_3
-       || LOCALE_CODE_DEFAULT == LOCALE_CODE_NUMERIC))
-{
-    print "ok 3\n";
-}
-else
-{
-    print "not ok 3\n";
-}
-
-exit 0;
old mode 100644 (file)
new mode 100755 (executable)
index 0c9fda8..830fa55
-#!./perl
-#
-# country.t - tests for Locale::Country
-#
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
 
+unshift(@INC,$dir);
 use Locale::Country;
 
-#-----------------------------------------------------------------------
-# This is an array of tests specs. Each spec is [TEST, OK_TO_DIE]
-# Each TEST is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N". If the eval dies, then the OK_TO_DIE flag is checked.
-# If it is true (1), the test is treated as passing, otherwise it failed.
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2country
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2country()', 0],                  # no argument
- ['!defined code2country(undef)', 0],             # undef argument
- ['!defined code2country("zz")', 0],              # illegal code
- ['!defined code2country("zz", LOCALE_CODE_ALPHA_2)', 0],        # illegal code
- ['!defined code2country("zz", LOCALE_CODE_ALPHA_3)', 0],        # illegal code
- ['!defined code2country("zz", LOCALE_CODE_NUMERIC)', 0],        # illegal code
- ['!defined code2country("ja")', 0],              # should be jp for country
- ['!defined code2country("uk")', 0],              # should be jp for country
-
- #---- some successful examples -----------------------------------------
- ['code2country("BO") eq "Bolivia"', 0],
- ['code2country("BO", LOCALE_CODE_ALPHA_2) eq "Bolivia"', 0],
- ['code2country("bol", LOCALE_CODE_ALPHA_3) eq "Bolivia"', 0],
- ['code2country("pk") eq "Pakistan"', 0],
- ['code2country("sn") eq "Senegal"', 0],
- ['code2country("us") eq "United States"', 0],
- ['code2country("ad") eq "Andorra"', 0],          # first in DATA segment
- ['code2country("ad", LOCALE_CODE_ALPHA_2) eq "Andorra"', 0],
- ['code2country("and", LOCALE_CODE_ALPHA_3) eq "Andorra"', 0],
- ['code2country("020", LOCALE_CODE_NUMERIC) eq "Andorra"', 0],
- ['code2country(48, LOCALE_CODE_NUMERIC) eq "Bahrain"', 0],
- ['code2country("zw") eq "Zimbabwe"', 0],         # last in DATA segment
- ['code2country("gb") eq "United Kingdom"', 0],   # United Kingdom is "gb", not "uk"
-
- #-- tests added after changes in the standard 2002-05-20 ------
- ['code2country("kz") eq "Kazakhstan"', 0],
- ['country2code("kazakhstan")               eq "kz"', 0],
- ['country2code("kazakstan")                eq "kz"', 0],
-
- ['code2country("mo") eq "Macao"', 0],
- ['country2code("macao")                    eq "mo"', 0],
- ['country2code("macau")                    eq "mo"', 0],
-
- ['code2country("tl", LOCALE_CODE_ALPHA_2) eq "Timor-Leste"', 0],
- ['code2country("tls", LOCALE_CODE_ALPHA_3) eq "Timor-Leste"', 0],
- ['code2country("626", LOCALE_CODE_NUMERIC) eq "Timor-Leste"', 0],
-
-       #================================================
-       # TESTS FOR country2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2country("BO", LOCALE_CODE_ALPHA_3)', 0],
- ['!defined code2country("BO", LOCALE_CODE_NUMERIC)', 0],
- ['!defined country2code()', 0],                  # no argument
- ['!defined country2code(undef)', 0],             # undef argument
- ['!defined country2code("Banana")', 0],          # illegal country name
-
- #---- some successful examples -----------------------------------------
- ['country2code("japan")                    eq "jp"', 0],
- ['country2code("japan")                    ne "ja"', 0],
- ['country2code("Japan")                    eq "jp"', 0],
- ['country2code("United States")            eq "us"', 0],
- ['country2code("United Kingdom")           eq "gb"', 0],
- ['country2code("Andorra")                  eq "ad"', 0],    # first in DATA
- ['country2code("Zimbabwe")                 eq "zw"', 0],    # last in DATA
- ['country2code("Iran")                     eq "ir"', 0],    # alias
- ['country2code("North Korea")              eq "kp"', 0],    # alias
- ['country2code("South Korea")              eq "kr"', 0],    # alias
- ['country2code("Libya")                    eq "ly"', 0],    # alias
- ['country2code("Syria")                    eq "sy"', 0],    # alias
- ['country2code("Svalbard")                 eq "sj"', 0],    # alias
- ['country2code("Jan Mayen")                eq "sj"', 0],    # alias
- ['country2code("USA")                      eq "us"', 0],    # alias
- ['country2code("United States of America") eq "us"', 0],    # alias
- ['country2code("Great Britain")                       eq "gb"', 0],    # alias
-
-       #================================================
-       # TESTS FOR country_code2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined country_code2code("bo", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined country_code2code("bo", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined country_code2code()', 1],                  # no argument
- ['!defined country_code2code(undef)', 1],             # undef argument
-
- #---- some successful examples -----------------------------------------
- ['country_code2code("BO", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3) eq "bol"', 0],
- ['country_code2code("bol", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "bo"', 0],
- ['country_code2code("zwe", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "zw"', 0],
- ['country_code2code("858", LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "ury"', 0],
- ['country_code2code(858, LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "ury"', 0],
- ['country_code2code("tr", LOCALE_CODE_ALPHA_2, LOCALE_CODE_NUMERIC) eq "792"', 0],
-
- #-- tests added for 2.07 release
- ['country2code("Burma")                               eq "mm"', 0],    # alias
- ['country2code("French Southern and Antarctic Lands")  eq "tf"', 0],    # alias
- ['code2country("ax") eq "Aland Islands"', 0],
- ['country2code("Aland Islands")                       eq "ax"', 0],
- ['code2country("ala", LOCALE_CODE_ALPHA_3) eq "Aland Islands"', 0],
- ['code2country("248", LOCALE_CODE_NUMERIC) eq "Aland Islands"', 0],
-
- ['country2code("Yugoslavia")                          eq "cs"', 0],   # alias (old name)
- ['country2code("Serbia and Montenegro")               eq "cs"', 0],   # new name
- ['code2country("scg", LOCALE_CODE_ALPHA_3) eq "Serbia and Montenegro"', 0],
- ['code2country("891", LOCALE_CODE_NUMERIC) eq "Serbia and Montenegro"', 0],
-
- ['country2code("East Timor")                          eq "tl"', 0],   # alias (provisional name)
- ['code2country("rou", LOCALE_CODE_ALPHA_3) eq "Romania"', 0],
-
- ['country2code("Zaire")                               eq "cd"', 0],   # alias (old name)
- ['country2code("Congo, The Democratic Republic of the")       eq "cd"', 0],   # new name
- ['country2code("Congo, The Democratic Republic of the", LOCALE_CODE_ALPHA_3)  eq "cod"', 0],  # new name
- ['country2code("Congo, The Democratic Republic of the", LOCALE_CODE_NUMERIC)  eq "180"', 0],  # new name
-
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test->[0]) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    if ($@)
-    {
-       if (!$test->[1])
-       {
-           print "not ok $testid\n";
-       }
-       else
-       {
-           print "ok $testid\n";
-       }
-    }
-    ++$testid;
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+          "LOCALE_CODE_FIPS"    => LOCALE_CODE_FIPS,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if      ($test[0] eq "rename_country") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::rename_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::add_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Country::delete_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country_alias") {
+      shift(@test);
+      return Locale::Country::add_country_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country_alias") {
+      shift(@test);
+      return Locale::Country::delete_country_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "rename_country_code") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::rename_country_code(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country_code_alias") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::add_country_code_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country_code_alias") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Country::delete_country_code_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "country2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return country2code(@test);
+
+   } else {
+      shift(@test)  if ($test[0] eq "code2country");
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2country(@test);
+   }
 }
 
-exit 0;
+$tests = "
+
+###################################
+# Test rename_country
+
+gb
+   ~
+   United Kingdom
+
+rename_country x1 NewName ~ 0
+
+rename_country gb NewName LOCALE_CODE_FOO ~ 0
+
+rename_country gb Macao ~ 0
+
+rename_country gb NewName LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+   ~
+   United Kingdom
+
+rename_country gb NewName ~ 1
+
+gb
+   ~
+   NewName
+
+###################################
+# Test add_country
+
+xx ~ _undef_
+
+add_country xx Bolivia ~ 0
+
+add_country fi Xxxxx ~ 0
+
+add_country xx Xxxxx ~ 1
+
+xx ~ Xxxxx
+
+###################################
+# Test add_country_alias
+
+add_country_alias FooBar NewName ~ 0
+
+add_country_alias Australia Angola ~ 0
+
+country2code Australia ~ au
+
+country2code DownUnder ~ _undef_
+
+add_country_alias Australia DownUnder ~ 1
+
+country2code DownUnder ~ au
+
+###################################
+# Test delete_country_alias
+
+country2code uk ~ gb
+
+delete_country_alias Foobar ~ 0
+
+delete_country_alias UK ~ 1
+
+country2code uk ~ _undef_
+
+delete_country_alias Angola ~ 0
+
+###################################
+# Test delete_country
+
+country2code Angola                     ~ ao
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+delete_country ao                       ~ 1
+
+country2code Angola                     ~ _undef_
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+###################################
+# Test rename_country_code
+
+code2country zz           ~ _undef_
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ ar
+
+rename_country_code ar us ~ 0
+
+rename_country_code ar zz ~ 1
+
+rename_country_code us ar ~ 0
+
+code2country zz           ~ Argentina
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ zz
+
+rename_country_code zz ar ~ 1
+
+code2country zz           ~ Argentina
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ ar
+
+###################################
+# Test add_country_code_alias and
+# delete_country_code_alias
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ _undef_
+
+country2code Bermuda         ~ bm
+
+add_country_code_alias bm us ~ 0
+
+add_country_code_alias bm zz ~ 0
+
+add_country_code_alias bm yy ~ 1
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ Bermuda
+
+country2code Bermuda         ~ bm
+
+delete_country_code_alias us ~ 0
+
+delete_country_code_alias ww ~ 0
+
+delete_country_code_alias yy ~ 1
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ _undef_
+
+country2code Bermuda         ~ bm
+
+";
+
+print "country (semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/country2code.t b/cpan/Locale-Codes/t/country2code.t
new file mode 100755 (executable)
index 0000000..1eacf46
--- /dev/null
@@ -0,0 +1,183 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return country2code(@test);
+}
+
+$tests = "
+
+kazakhstan
+   ~
+   kz
+
+kazakstan
+   ~
+   kz
+
+macao
+   ~
+   mo
+
+macau
+   ~
+   mo
+
+
+~ _undef_
+
+_undef_
+   ~
+   _undef_
+
+Banana
+   ~
+   _undef_
+
+japan
+   ~
+   jp
+
+Japan
+   ~
+   jp
+
+United States
+   ~
+   us
+
+United Kingdom
+   ~
+   gb
+
+Andorra
+   ~
+   ad
+
+Zimbabwe
+   ~
+   zw
+
+Iran
+   ~
+   ir
+
+North Korea
+   ~
+   kp
+
+South Korea
+   ~
+   kr
+
+Libya
+   ~
+   ly
+
+Syria
+   ~
+   sy
+
+Svalbard
+   ~
+   _undef_
+
+Jan Mayen
+   ~
+   _undef_
+
+USA
+   ~
+   us
+
+United States of America
+   ~
+   us
+
+Great Britain
+   ~
+   gb
+
+Burma
+   ~
+   mm
+
+French Southern and Antarctic Lands
+   ~
+   tf
+
+Aland Islands
+   ~
+   ax
+
+Yugoslavia
+   ~
+   _undef_
+
+Serbia and Montenegro
+   ~
+   _undef_
+
+East Timor
+   ~
+   tl
+
+Zaire
+   ~
+   _undef_
+
+Congo, The Democratic Republic of the
+   ~
+   cd
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_ALPHA_3
+   ~
+   cod
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_NUMERIC
+   ~
+   180
+
+";
+
+print "country2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/t/country_code2code.t b/cpan/Locale-Codes/t/country_code2code.t
new file mode 100755 (executable)
index 0000000..5ec8117
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+use Locale::Constants;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my($code,$type_in,$type_out) = @_;
+   $type_in  = $type{$type_in}   if ($type_in   &&  exists $type{$type_in});
+   $type_out = $type{$type_out}  if ($type_out  &&  exists $type{$type_out});
+
+   return country_code2code($code,$type_in,$type_out);
+}
+
+$tests = "
+
+bo LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_2 ~ bo
+
+bo LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+bo LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+_blank_ 0 0 ~ _undef_
+
+BO  LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ bol
+
+bol LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ bo
+
+zwe LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ zw
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+tr  LOCALE_CODE_ALPHA_2 LOCALE_CODE_NUMERIC ~ 792
+
+";
+
+print "country_code2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/currency.t b/cpan/Locale-Codes/t/currency.t
deleted file mode 100644 (file)
index adb844e..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!./perl
-#
-# currency.t - tests for Locale::Currency
-#
-use Locale::Currency;
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2currency
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2currency()',                 # no argument => undef returned
- '!defined code2currency(undef)',            # undef arg   => undef returned
- '!defined code2currency("zz")',             # illegal code => undef
- '!defined code2currency("zzzz")',           # illegal code => undef
- '!defined code2currency("zzz")',            # illegal code => undef
- '!defined code2currency("ukp")',            # gbp for sterling, not ukp
-
- #---- misc tests -------------------------------------------------------
- 'code2currency("all") eq "Lek"',
- 'code2currency("ats") eq "Schilling"',
- 'code2currency("bob") eq "Boliviano"',
- 'code2currency("bnd") eq "Brunei Dollar"',
- 'code2currency("cop") eq "Colombian Peso"',
- 'code2currency("dkk") eq "Danish Krone"',
- 'code2currency("fjd") eq "Fiji Dollar"',
- 'code2currency("idr") eq "Rupiah"',
- 'code2currency("chf") eq "Swiss Franc"',
- 'code2currency("mvr") eq "Rufiyaa"',
- 'code2currency("mmk") eq "Kyat"',
- 'code2currency("mwk") eq "Kwacha"',   # two different codes for Kwacha
- 'code2currency("zmk") eq "Kwacha"',    # used in Zambia and Malawi
- 'code2currency("byr") eq "Belarussian Ruble"',        # 2 codes for belarussian ruble
- 'code2currency("byb") eq "Belarussian Ruble"', #
- 'code2currency("rub") eq "Russian Ruble"',    # 2 codes for russian ruble
- 'code2currency("rur") eq "Russian Ruble"',     #
-
- #---- some successful examples -----------------------------------------
- 'code2currency("BOB") eq "Boliviano"',
- 'code2currency("adp") eq "Andorran Peseta"',  # first in DATA segment
- 'code2currency("zwd") eq "Zimbabwe Dollar"',  # last in DATA segment
-
-       #================================================
-       # TESTS FOR currency2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined currency2code()',                 # no argument => undef returned
- '!defined currency2code(undef)',            # undef arg   => undef returned
- '!defined currency2code("")',               # empty string => undef returned
- '!defined currency2code("Banana")',         # illegal curr name => undef
-
- #---- some successful examples -----------------------------------------
- 'currency2code("Kroon")           eq "eek"',
- 'currency2code("Markka")         eq "fim"',
- 'currency2code("Riel")            eq "khr"',
- 'currency2code("PULA")            eq "bwp"',
- 'currency2code("Andorran Peseta") eq "adp"',       # first in DATA segment
- 'currency2code("Zimbabwe Dollar") eq "zwd"',       # last in DATA segment
- 'currency2code("Canadian Dollar") eq "cad"',       # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    print "not ok $testid\n" if $@;
-    ++$testid;
-}
-
-exit 0;
diff --git a/cpan/Locale-Codes/t/currency2code.t b/cpan/Locale-Codes/t/currency2code.t
new file mode 100755 (executable)
index 0000000..6df23cd
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Currency;
+
+%type = ( "LOCALE_CODE_ALPHA"    => LOCALE_CODE_ALPHA,
+          "LOCALE_CODE_NUMERIC"  => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return currency2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Banana ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+
+Canadian Dollar
+   ~
+   CAD
+
+Kroon
+   ~
+   EEK
+
+PULA
+   ~
+   BWP
+
+Riel
+   ~
+   KHR
+
+Zimbabwe Dollar
+   ~
+   ZWL
+
+";
+
+print "currency2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
old mode 100644 (file)
new mode 100755 (executable)
index 88edcee..14364e7
-#!./perl
-#
-# language.t - tests for Locale::Language
-#
-
-BEGIN {
-       chdir 't' if -d 't';
-       #@INC = '../lib';
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
 }
 
+unshift(@INC,$dir);
 use Locale::Language;
 
-no utf8; # we contain Latin-1
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2language
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2language()',                 # no argument => undef returned
- '!defined code2language(undef)',            # undef arg   => undef returned
- '!defined code2language("zz")',             # illegal code => undef
- '!defined code2language("jp")',             # ja for lang, jp for country
-
- #---- test recent changes ----------------------------------------------
- 'code2language("ae") eq "Avestan"',
- 'code2language("bs") eq "Bosnian"',
- 'code2language("ch") eq "Chamorro"',
- 'code2language("ce") eq "Chechen"',
- 'code2language("cu") eq "Church Slavic"',
- 'code2language("cv") eq "Chuvash"',
- 'code2language("hz") eq "Herero"',
- 'code2language("ho") eq "Hiri Motu"',
- 'code2language("ki") eq "Kikuyu"',
- 'code2language("kj") eq "Kuanyama"',
- 'code2language("kv") eq "Komi"',
- 'code2language("mh") eq "Marshall"',
- 'code2language("nv") eq "Navajo"',
- 'code2language("nr") eq "Ndebele, South"',
- 'code2language("nd") eq "Ndebele, North"',
- 'code2language("ng") eq "Ndonga"',
- 'code2language("nn") eq "Norwegian Nynorsk"',
- 'code2language("nb") eq "Norwegian Bokmal"',
- 'code2language("ny") eq "Chichewa; Nyanja"',
- 'code2language("oc") eq "Occitan (post 1500)"',
- 'code2language("os") eq "Ossetian; Ossetic"',
- 'code2language("pi") eq "Pali"',
- '!defined code2language("sh")',             # Serbo-Croatian withdrawn
- 'code2language("se") eq "Sami"',
- 'code2language("sc") eq "Sardinian"',
- 'code2language("kw") eq "Cornish"',
- 'code2language("gv") eq "Manx"',
- 'code2language("lb") eq "Letzeburgesch"',
- 'code2language("he") eq "Hebrew"',
- '!defined code2language("iw")',             # Hebrew withdrawn
- 'code2language("id") eq "Indonesian"',
- '!defined code2language("in")',             # Indonesian withdrawn
- 'code2language("iu") eq "Inuktitut"',
- 'code2language("ug") eq "Uighur"',
- '!defined code2language("ji")',             # Yiddish withdrawn
- 'code2language("yi") eq "Yiddish"',
- 'code2language("za") eq "Zhuang"',
-
- #---- some successful examples -----------------------------------------
- 'code2language("DA") eq "Danish"',
- 'code2language("eo") eq "Esperanto"',
- 'code2language("fi") eq "Finnish"',
- 'code2language("en") eq "English"',
- 'code2language("aa") eq "Afar"',            # first in DATA segment
- 'code2language("zu") eq "Zulu"',            # last in DATA segment
-
-       #================================================
-       # TESTS FOR language2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined language2code()',                 # no argument => undef returned
- '!defined language2code(undef)',            # undef arg   => undef returned
- '!defined language2code("Banana")',         # illegal lang name => undef
-
- #---- some successful examples -----------------------------------------
- 'language2code("Japanese")  eq "ja"',
- 'language2code("japanese")  eq "ja"',
- 'language2code("japanese")  ne "jp"',
- 'language2code("French")    eq "fr"',
- 'language2code("Greek")     eq "el"',
- 'language2code("english")   eq "en"',
- 'language2code("ESTONIAN")  eq "et"',
- 'language2code("Afar")      eq "aa"',       # first in DATA segment
- 'language2code("Zulu")      eq "zu"',       # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    print "not ok $testid\n" if $@;
-    ++$testid;
+%type = ( "LOCALE_LANG_ALPHA_2" => LOCALE_LANG_ALPHA_2,
+          "LOCALE_LANG_ALPHA_3" => LOCALE_LANG_ALPHA_3,
+          "LOCALE_LANG_TERM"    => LOCALE_LANG_TERM,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if      ($test[0] eq "rename_language") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Language::rename_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_language") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Language::add_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_language") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Language::delete_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_language_alias") {
+      shift(@test);
+      return Locale::Language::add_language_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_language_alias") {
+      shift(@test);
+      return Locale::Language::delete_language_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "language2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return language2code(@test);
+
+   } else {
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2language(@test);
+   }
 }
 
-exit 0;
+$tests = "
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_FOO ~ 0
+
+rename_language zu English LOCALE_LANG_ALPHA_2 ~ 0
+
+rename_language zu NewName LOCALE_LANG_ALPHA_3 ~ 0
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_ALPHA_2 ~ 1
+
+zu ~ NewName
+
+";
+
+print "language (semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/language2code.t b/cpan/Locale-Codes/t/language2code.t
new file mode 100755 (executable)
index 0000000..2e5bb23
--- /dev/null
@@ -0,0 +1,88 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Language;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_TERM"    => LOCALE_CODE_TERM,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return language2code(@test);
+}
+
+$tests = "
+
+Banana ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+Afar
+   ~
+   aa
+
+ESTONIAN
+   ~
+   et
+
+French
+   ~
+   fr
+
+Greek
+   ~
+   el
+
+Japanese
+   ~
+   ja
+
+Zulu
+   ~
+   zu
+
+english
+   ~
+   en
+
+japanese
+   ~
+   ja
+
+";
+
+print "language2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/rename.t b/cpan/Locale-Codes/t/rename.t
deleted file mode 100644 (file)
index 27f506c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!./perl
-#
-# rename.t - tests for Locale::Country with "uk" aliases to "gb"
-#
-
-use Locale::Country;
-
-local $SIG{__WARN__} = sub { };                # muffle warnings from carp
-
-Locale::Country::rename_country('gb' => 'Great Britain');
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2country
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2country()',                  # no argument
- '!defined code2country(undef)',             # undef argument
- '!defined code2country("zz")',              # illegal code
- '!defined code2country("ja")',              # should be jp for country
- '!defined code2country("uk")',              # code for United Kingdom is 'gb'
-
- #---- this call should return 0, since code doesn't exist --------------
- '!Locale::Country::rename_country("ukz", "United Karz")',
-
- #---- some successful examples -----------------------------------------
- 'code2country("BO") eq "Bolivia"',
- 'code2country("pk") eq "Pakistan"',
- 'code2country("sn") eq "Senegal"',
- 'code2country("us") eq "United States"',
- 'code2country("ad") eq "Andorra"',          # first in DATA segment
- 'code2country("zw") eq "Zimbabwe"',         # last in DATA segment
- 'code2country("gb") eq "Great Britain"',    # normally "United Kingdom"
-
-       #================================================
-       # TESTS FOR country2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined country2code()',                  # no argument
- '!defined country2code(undef)',             # undef argument
- '!defined country2code("Banana")',          # illegal country name
-
- #---- some successful examples -----------------------------------------
- 'country2code("japan")          eq "jp"',
- 'country2code("japan")          ne "ja"',
- 'country2code("Japan")          eq "jp"',
- 'country2code("United States")  eq "us"',
-
- 'country2code("Great Britain") eq "gb"',
- 'country2code("Great Britain", LOCALE_CODE_ALPHA_3) eq "gbr"',
- 'country2code("Great Britain", LOCALE_CODE_NUMERIC) eq "826"',
-
- 'country2code("United Kingdom") eq "gb"',
- 'country2code("United Kingdom", LOCALE_CODE_ALPHA_3)  eq "gbr"',
- 'country2code("United Kingdom", LOCALE_CODE_NUMERIC)  eq "826"',
-
- 'country2code("Andorra")        eq "ad"',    # first in DATA segment
- 'country2code("Zimbabwe")       eq "zw"',    # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    print "not ok $testid\n" if $@;
-    ++$testid;
-}
-
-exit 0;
diff --git a/cpan/Locale-Codes/t/script.t b/cpan/Locale-Codes/t/script.t
deleted file mode 100644 (file)
index 989b778..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#!./perl
-#
-# script.t - tests for Locale::Script
-#
-
-use Locale::Script;
-
-#-----------------------------------------------------------------------
-# This is an array of tests specs. Each spec is [TEST, OK_TO_DIE]
-# Each TEST is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N". If the eval dies, then the OK_TO_DIE flag is checked.
-# If it is true (1), the test is treated as passing, otherwise it failed.
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2script
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2script()', 0],                  # no argument
- ['!defined code2script(undef)', 0],             # undef argument
- ['!defined code2script("aa")', 0],              # illegal code
- ['!defined code2script("aa", LOCALE_CODE_ALPHA_2)', 0],        # illegal code
- ['!defined code2script("aa", LOCALE_CODE_ALPHA_3)', 0],        # illegal code
- ['!defined code2script("aa", LOCALE_CODE_NUMERIC)', 0],        # illegal code
-
- #---- some successful examples -----------------------------------------
- ['code2script("BO") eq "Tibetan"', 0],
- ['code2script("Bo") eq "Tibetan"', 0],
- ['code2script("bo") eq "Tibetan"', 0],
- ['code2script("bo", LOCALE_CODE_ALPHA_2) eq "Tibetan"', 0],
- ['code2script("bod", LOCALE_CODE_ALPHA_3) eq "Tibetan"', 0],
- ['code2script("330", LOCALE_CODE_NUMERIC) eq "Tibetan"', 0],
-
- ['code2script("yi", LOCALE_CODE_ALPHA_2) eq "Yi"', 0], # last in DATA
- ['code2script("Yii", LOCALE_CODE_ALPHA_3) eq "Yi"', 0],
- ['code2script("460", LOCALE_CODE_NUMERIC) eq "Yi"', 0],
-
- ['code2script("am") eq "Aramaic"', 0],          # first in DATA segment
-
-
-       #================================================
-       # TESTS FOR script2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2script("BO", LOCALE_CODE_ALPHA_3)', 0],
- ['!defined code2script("BO", LOCALE_CODE_NUMERIC)', 0],
- ['!defined script2code()', 0],                  # no argument
- ['!defined script2code(undef)', 0],             # undef argument
- ['!defined script2code("Banana")', 0],          # illegal script name
-
- #---- some successful examples -----------------------------------------
- ['script2code("meroitic")                   eq "me"', 0],
- ['script2code("burmese")                    eq "my"', 0],
- ['script2code("Pahlavi")                    eq "ph"', 0],
- ['script2code("Vai", LOCALE_CODE_ALPHA_3)   eq "vai"', 0],
- ['script2code("Tamil", LOCALE_CODE_NUMERIC) eq "346"', 0],
- ['script2code("Latin")                      eq "la"', 0],
- ['script2code("Latin", LOCALE_CODE_ALPHA_3) eq "lat"', 0],
-
-       #================================================
-       # TESTS FOR script_code2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined script_code2code("bo", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined script_code2code()', 1],                  # no argument
- ['!defined script_code2code(undef)', 1],             # undef argument
-
- #---- some successful examples -----------------------------------------
- ['script_code2code("BO", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3) eq "bod"', 0],
- ['script_code2code("bod", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "bo"', 0],
- ['script_code2code("Phx", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "ph"', 0],
- ['script_code2code("295", LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "pqd"', 0],
- ['script_code2code(170, LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "tna"', 0],
- ['script_code2code("rr", LOCALE_CODE_ALPHA_2, LOCALE_CODE_NUMERIC) eq "620"', 0],
-
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test->[0]) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    if ($@)
-    {
-       if (!$test->[1])
-       {
-           print "not ok $testid\n";
-       }
-       else
-       {
-           print "ok $testid\n";
-       }
-    }
-    ++$testid;
-}
-
-exit 0;
diff --git a/cpan/Locale-Codes/t/script2code.t b/cpan/Locale-Codes/t/script2code.t
new file mode 100755 (executable)
index 0000000..415e1a6
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Script;
+
+%type = ( "LOCALE_SCRIPT_ALPHA"     => LOCALE_SCRIPT_ALPHA,
+          "LOCALE_SCRIPT_NUMERIC" => LOCALE_SCRIPT_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return script2code(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+Phoenician ~ Phnx
+
+Phoenician LOCALE_SCRIPT_NUMERIC ~ 115
+
+";
+
+print "script2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
diff --git a/cpan/Locale-Codes/t/testfunc.pl b/cpan/Locale-Codes/t/testfunc.pl
new file mode 100644 (file)
index 0000000..affbf95
--- /dev/null
@@ -0,0 +1,480 @@
+#!/usr/bin/perl -w
+# Copyright (c) 1996-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# SB_TEST.PL
+###############################################################################
+# HISTORY
+#
+# 1996-??-??  Wrote initial version for Date::Manip module
+#
+# 1996-2001   Numerous changes
+#
+# 2001-03-29  Rewrote to make it easier to drop in for any module.
+#
+# 2001-06-19  Modifications to make space delimited stuff work better.
+#
+# 2001-08-23  Added support for undef args.
+#
+# 2007-08-14  Better support for undef/blank args.
+#
+# 2008-01-02  Better handling of $runtests.
+#
+# 2008-01-24  Better handling of undef/blank args when arguements are
+#             entered as lists instead of strings.
+#
+# 2008-01-25  Created a global $testnum variable to store the test number
+#             in.
+#
+# 2008-11-05  Slightly better handling of blank/undef in returned values.
+#
+# 2009-09-01  Added "-l" value to $runtests.
+#
+# 2009-09-30  Much better support for references.
+#
+# 2010-02-05  Fixed bug in passing tests as lists
+#
+# 2010-04-05  Renamed to testfunc.pl to avoid being called in a core module
+
+###############################################################################
+
+use Storable qw(dclone);
+
+# Usage: test_Func($funcref,$tests,$runtests,@extra)=@_;
+#
+# This takes a series of tests, runs them, compares the output of the tests
+# with expected output, and reports any differences.  Each test consists of
+# several parts:
+#    a function passed in as a reference ($funcref)
+#    a series of arguments to be passed to the function
+#    the expected output from the function call
+#
+# Tests may be passed in in two methods: as a string, or as a reference.
+#
+# Using the string case, $tests is a newline delimited string.  Each test
+# takes one or more lines of the string.  Tests are separated from each
+# other by a blank line.
+#
+# Arguments and return value(s) may be written as a single line:
+#    ARG1 ARG2 ... ARGn ~ VAL1 VAL2 ... VALm
+# or as multiple lines:
+#    ARG1
+#    ARG2
+#    ...
+#    ARGn
+#    ~
+#    VAL1
+#    VAL2
+#    ...
+#    VALm
+#
+# If any of the arguments OR values have spaces in them, only the multiline
+# form may be used.
+#
+# If there is exactly one return value, the separating tilde is
+# optional:
+#    ARG1 ARG2 ... ARGn VAL1
+# or:
+#    ARG1
+#    ARG2
+#    ...
+#    ARGn
+#    VAL
+#
+# It is valid to have a function with no arguments or with no return
+# value (or both).  The "~" must be used:
+#
+#    ARG1 ARG2 ... ARGn ~
+#
+#    ~ VAL1 VAL2 ... VALm
+#
+#    ~
+#
+# Leading and trailing space is ignored in the multi-line format.
+#
+# If desired, any of the ARGs or VALs may be the word "_undef_" which
+# will be strictly interpreted as the perl undef value. The word "_blank_"
+# may also be used to designate a defined but empty string.
+#
+# They may also be (in the multiline format) of the form:
+#
+#   \ STRING           : a string reference
+#
+#   [] LIST            : a list reference (where LIST is a
+#                        comma separated list)
+#
+#   [SEP] LIST         : a list reference (where SEP is a
+#                        single character separator)
+#
+#   {} HASH            : a hash reference (where HASH is
+#                        a comma separated list)
+#
+#   {SEP} HASH         : a hash reference (where SEP is a
+#                        single character separator)
+#
+# Alternately, the tests can be passed in as a list reference:
+#    $tests = [
+#               [
+#                 [ @ARGS1 ],
+#                 [ @VALS1 ]
+#               ],
+#               [
+#                 [ @ARGS2 ],
+#                 [ @VALS2 ]
+#               ], ...
+#             ]
+#
+# @extra are extra arguments which are added to the function call.
+#
+# There are several ways to run the tests, depending on the value of
+# $runtests.
+#
+# If $runtests is 0, the tests are run in a non-interactive way suitable
+# for running as part of a "make test".
+#
+# If $runtests is a positive number, it runs runs all tests starting at
+# that value in a way suitable for running interactively.
+#
+# If $runtests is a negative number, it runs all tests starting at that
+# value, but providing feedback at each test.
+#
+# If $runtests is a string "=N" (where N is a number), it runs only
+# that test.
+#
+# If $runtests is the string "-l", it lists the tests and the expected
+# output without running any.
+
+sub test_Func {
+   my($funcref,$tests,$runtests,@extra)=@_;
+   my(@tests);
+
+   $runtests     = 0  if (! $runtests);
+   my($starttest,$feedback,$endtest,$runtest);
+   if      ($runtests eq "0"  or  $runtests eq "-0") {
+      $starttest = 1;
+      $feedback  = 1;
+      $endtest   = 0;
+      $runtest   = 1;
+   } elsif ($runtests =~ /^\d+$/){
+      $starttest = $runtests;
+      $feedback  = 0;
+      $endtest   = 0;
+      $runtest   = 1;
+   } elsif ($runtests =~ /^-(\d+)$/) {
+      $starttest = $1;
+      $feedback  = 1;
+      $endtest   = 0;
+      $runtest   = 1;
+   } elsif ($runtests =~ /^=(\d+)$/) {
+      $starttest = $1;
+      $feedback  = 1;
+      $endtest   = $1;
+      $runtest   = 1;
+   } elsif ($runtests eq "-l") {
+      $starttest = 1;
+      $feedback  = 1;
+      $endtest   = 0;
+      $runtest   = 0;
+   } else {
+      die "ERROR: unknown argument(s): $runtests";
+   }
+
+   my($tests_as_list) = 0;
+   if (ref($tests) eq "ARRAY") {
+      @tests   = @$tests;
+      $tests_as_list = 1;
+
+   } else {
+      # Separate tests.
+
+      my($comment)="#";
+      my(@lines)=split(/\n/,$tests);
+      my(@test);
+      while (@lines) {
+         my $line = shift(@lines);
+         $line =~ s/^\s*//;
+         $line =~ s/\s*$//;
+         next  if ($line =~ /^$comment/);
+
+         if ($line ne "") {
+            push(@test,$line);
+            next;
+         }
+
+         if (@test) {
+            push(@tests,[ @test ]);
+            @test=();
+         }
+      }
+      if (@test) {
+         push(@tests,[ @test ]);
+      }
+
+      # Get arg/val lists for each test.
+
+      foreach my $test (@tests) {
+         my(@tmp)=@$test;
+         my(@arg,@val);
+
+         # single line test
+         @tmp = split(/\s+/,$tmp[0])  if ($#tmp == 0);
+
+         my($sep)=-1;
+         my($i);
+         for ($i=0; $i<=$#tmp; $i++) {
+            if ($tmp[$i] eq "~") {
+               $sep=$i;
+               last;
+            }
+         }
+
+         if ($sep<0) {
+            @val=pop(@tmp);
+            @arg=@tmp;
+         } else {
+            @arg=@tmp[0..($sep-1)];
+            @val=@tmp[($sep+1)..$#tmp];
+         }
+         $test = [ [@arg],[@val] ];
+      }
+   }
+
+   my($ntest)=$#tests + 1;
+   print "1..$ntest\n"  if ($feedback  &&  $runtest);
+
+   my(@t);
+   if ($endtest) {
+      @t = ($starttest..$endtest);
+   } else {
+      @t = ($starttest..$ntest);
+   }
+
+   foreach my $t (@t) {
+      $::testnum  = $t;
+
+      my (@arg);
+      if ($tests_as_list) {
+         @arg     = @{ $tests[$t-1][0] };
+      } else {
+         my $arg  = dclone($tests[$t-1][0]);
+         @arg     = @$arg;
+         print_to_vals(\@arg);
+      }
+
+      my $argprt  = dclone(\@arg);
+      my @argprt  = @$argprt;
+      vals_to_print(\@argprt);
+
+      my $exp     = dclone($tests[$t-1][1]);
+      my @exp     = @$exp;
+      print_to_vals(\@exp);
+      vals_to_print(\@exp);
+
+      # Run the test
+
+      my ($ans,@ans);
+      if ($runtest) {
+         @ans = &$funcref(@arg,@extra);
+      }
+      vals_to_print(\@ans);
+
+      # Compare the results
+
+      foreach my $arg (@arg) {
+         $arg = "_undef_"  if (! defined $arg);
+         $arg = "_blank_"  if ($arg eq "");
+      }
+      $arg = join("\n           ",@argprt,@extra);
+      $ans = join("\n           ",@ans);
+      $exp = join("\n           ",@exp);
+
+      if (! $runtest) {
+         print "########################\n";
+         print "Test     = $t\n";
+         print "Args     = $arg\n";
+         print "Expected = $exp\n";
+      } elsif ($ans ne $exp) {
+         print "not ok $t\n";
+         warn "########################\n";
+         warn "Args     = $arg\n";
+         warn "Expected = $exp\n";
+         warn "Got      = $ans\n";
+         warn "########################\n";
+      } else {
+         print "ok $t\n"  if ($feedback);
+      }
+   }
+}
+
+# The following is similar but it takes input from an input file and
+# sends output to an output file.
+#
+# $files is a reference to a list of tests.  If one of the tests is named
+# "foobar", the input is from "foobar.in", output is to "foobar.out", and
+# the expected output is in "foobar.exp".
+#
+# The function stored in $funcref is called as:
+#    &$funcref($in,$out,@extra)
+# where $in is the name of the input file, $out is the name of the output
+# file, and @extra are any additional arguments that are required.
+#
+# The function should return 0 on success, or an error message.
+
+sub test_File {
+   my($funcref,$files,$runtests,@extra)=@_;
+   my(@files)=@$files;
+
+   $runtests=0  if (! $runtests);
+
+   my($ntest)=$#files + 1;
+   print "1..$ntest\n"  if (! $runtests);
+
+   my(@t);
+   if ($runtests > 0) {
+      @t = ($runtests..$ntest);
+   } elsif ($runtests < 0) {
+      @t = (-$runtests);
+   } else {
+      @t = (1..$ntest);
+   }
+
+   foreach my $t (@t) {
+      $::testnum = $t;
+      my $test = $files[$t-1];
+      my $expf = "$test.exp";
+      my $outf = "$test.out";
+
+      if (! -f $test  ||  ! -f $expf) {
+         print "not ok $t\n";
+         warn  "Test: $test: missing input/outpuf information\n";
+         next;
+      }
+
+      my $err  = &$funcref($test,$outf,@extra);
+      if ($err) {
+         print "not ok $t\n";
+         warn  "Test: $test: $err\n";
+         next;
+      }
+
+      local *FH;
+      open(FH,$expf)  ||  do {
+         print "not ok $t\n";
+         warn  "Test: $test: $!\n";
+         next;
+      };
+      my @exp = <FH>;
+      close(FH);
+      my $exp = join("",@exp);
+      open(FH,$outf)  ||  do {
+         print "not ok $t\n";
+         warn  "Test: $test: $!\n";
+         next;
+      };
+      my @out = <FH>;
+      close(FH);
+      my $out = join("",@out);
+
+      if ($out ne $exp) {
+         print "not ok $t\n";
+         warn  "Test: $test: output differs from expected value\n";
+         next;
+      }
+
+      print "ok $t\n"  if (! $runtests);
+   }
+}
+
+# Converts a printable version of arguments to actual arguments
+sub print_to_vals {
+   my($listref) = @_;
+
+   foreach my $arg (@$listref) {
+      next  if (! defined($arg));
+      if ($arg eq "_undef_") {
+         $arg = undef;
+
+      } elsif ($arg eq "_blank_") {
+         $arg = "";
+
+      } elsif ($arg =~ /^\\\s*(.*)/) {
+         $str = $1;
+         $arg = \$str;
+
+      } elsif ($arg =~ /^\[(.?)\]\s*(.*)/) {
+         my($sep,$str) = ($1,$2);
+         $sep = ","  if (! $sep);
+         my @list = split(/\Q$sep\E/,$str);
+         foreach my $e (@list) {
+            $e = ""     if ($e eq "_blank_");
+            $e = undef  if ($e eq "_undef_");
+         }
+         $arg = \@list;
+
+      } elsif ($arg =~ /^\{(.?)\}\s*(.*)/) {
+         my($sep,$str) = ($1,$2);
+         $sep = ","  if (! $sep);
+         my %hash = split(/\Q$sep\E/,$str);
+         foreach my $key (keys %hash) {
+            my $val = $hash{$key};
+            $hash{$key} = undef  if ($val eq "_undef_");
+            $hash{$key} = ""     if ($val eq "_blank_");
+         }
+         $arg = \%hash;
+      }
+   }
+}
+
+# Converts arguments to a printable version.
+sub vals_to_print {
+   my($listref) = @_;
+
+   foreach my $arg (@$listref) {
+      if (! defined $arg) {
+         $arg = "_undef_";
+
+      } elsif (! ref($arg)) {
+         $arg = "_blank_"  if ($arg eq "");
+
+      } else {
+         my $ref = ref($arg);
+         if      ($ref eq "SCALAR") {
+            $arg = "\\ $$arg";
+
+         } elsif ($ref eq "ARRAY") {
+            my @list = @$arg;
+            foreach my $e (@list) {
+               $e = "_undef_", next   if (! defined($e));
+               $e = "_blank_"         if ($e eq "");
+            }
+            $arg = join(" ","[",join(", ",@list),"]");
+
+         } elsif ($ref eq "HASH") {
+            %hash = %$arg;
+            foreach my $key (keys %hash) {
+               my $val = $hash{$key};
+               $hash{$key} = "_undef_", next  if (! defined($val));
+               $hash{$key} = "_blank_"        if ($val eq "_blank_");
+            }
+            $arg = join(" ","{",
+                        join(", ",map { "$_ => $hash{$_}" }
+                             (sort keys %hash)), "}");
+            $arg =~ s/  +/ /g;
+         }
+      }
+   }
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
diff --git a/cpan/Locale-Codes/t/uk.t b/cpan/Locale-Codes/t/uk.t
deleted file mode 100644 (file)
index 95c2118..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!./perl
-#
-# uk.t - tests for Locale::Country with "uk" aliases to "gb"
-#
-
-use Locale::Country;
-
-Locale::Country::alias_code('uk' => 'gb');
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
-       #================================================
-       # TESTS FOR code2country
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2country()',                  # no argument
- '!defined code2country(undef)',             # undef argument
- '!defined code2country("zz")',              # illegal code
- '!defined code2country("ja")',              # should be jp for country
-
- #---- some successful examples -----------------------------------------
- 'code2country("BO") eq "Bolivia"',
- 'code2country("pk") eq "Pakistan"',
- 'code2country("sn") eq "Senegal"',
- 'code2country("us") eq "United States"',
- 'code2country("ad") eq "Andorra"',          # first in DATA segment
- 'code2country("zw") eq "Zimbabwe"',         # last in DATA segment
- 'code2country("uk") eq "United Kingdom"',   # normally "gb"
-
-       #================================================
-       # TESTS FOR country2code
-       #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined country2code()',                  # no argument
- '!defined country2code(undef)',             # undef argument
- '!defined country2code("Banana")',          # illegal country name
-
- #---- some successful examples -----------------------------------------
- 'country2code("japan")          eq "jp"',
- 'country2code("japan")          ne "ja"',
- 'country2code("Japan")          eq "jp"',
- 'country2code("United States")  eq "us"',
- 'country2code("United Kingdom") eq "uk"',
- 'country2code("Andorra")        eq "ad"',    # first in DATA segment
- 'country2code("Zimbabwe")       eq "zw"',    # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
-    eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
-    print "not ok $testid\n" if $@;
-    ++$testid;
-}
-
-exit 0;