Imported Upstream version 1.8 upstream/1.8
authorDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 23 Feb 2021 00:26:15 +0000 (09:26 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 23 Feb 2021 00:26:15 +0000 (09:26 +0900)
22 files changed:
.gitignore
AUTHORS [deleted file]
BinariesCheck.py
FilesCheck.py
Makefile
Pkg.py
PostCheck.py
README
README.devel
TagsCheck.py
__isocodes__.py
config
rpmdiff.1
rpmlint.1
test/binary/cyrus-imapd-2.4.17-9.fc22.x86_64.rpm [new file with mode: 0644]
test/binary/dovecot-2.2.9-1.fc20.x86_64.rpm [new file with mode: 0644]
test/binary/ngircd-22-2.fc22.x86_64.rpm [new file with mode: 0644]
test/test.config [new file with mode: 0644]
test/test_binaries.py [new file with mode: 0644]
test/test_scl.py
tools/Testing.py
tools/generate-isocodes.py

index 45f462a..04b7299 100644 (file)
@@ -2,5 +2,4 @@
 *.pyc
 *.flog
 *.xz
-/ChangeLog
 /__version__.py
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644 (file)
index c58470e..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,14 +0,0 @@
-Chmouel Boudjnah <chmouel@mandriva.com>
-Christian Belisle <cbelisle@mandriva.com>
-David Baudens <baudens@mandriva.com>
-Frederic Crozat <fcrozat@mandriva.com>
-Frédéric Lepied <flepied@mandriva.com>
-Guillaume Rousse <guillomovitch@mandriva.org>
-Gwenole Beauchesne <gbeauchesne@mandriva.com>
-Michael Scherer <misc@mandriva.org>
-Nicolas Planel <nplanel@mandriva.com>
-Pablo Saratxaga <pablo@mandriva.com>
-Pixel <pixel@mandriva.com>
-Rafael Garcia-Suarez <rgarciasuarez@mandriva.com>
-Thierry Vignaud <tvignaud@mandriva.com>
-Ville Skyttä <ville.skytta@iki.fi>
index b80a3fa..d2ed87a 100644 (file)
@@ -32,6 +32,13 @@ def create_regexp_call(call):
     return re.compile(r)
 
 
+def create_nonlibc_regexp_call(call):
+    if type(call) == type([]):
+        call = '(?:' + '|'.join(call) + ')'
+    r = "\s+FUNC\s+.*?\s+UND\s+(%s)\s?.*$" % call
+    return re.compile(r)
+
+
 class BinaryInfo:
 
     needed_regex = re.compile('\s+\(NEEDED\).*\[(\S+)\]')
@@ -51,6 +58,18 @@ class BinaryInfo:
     setuid_call_regex = create_regexp_call(['setresuid', 'seteuid', 'setuid'])
     setgroups_call_regex = create_regexp_call(['initgroups', 'setgroups'])
     chroot_call_regex = create_regexp_call('chroot')
+
+    forbidden_functions = Config.getOption("WarnOnFunction")
+    if forbidden_functions:
+        for name, func in forbidden_functions.items():
+            # precompile regexps
+            f_name = func['f_name']
+            func['f_regex'] = create_nonlibc_regexp_call(f_name)
+            if 'good_param' in func:
+                func['waiver_regex'] = re.compile(func['good_param'])
+            # register descriptions
+            addDetails(name, func['description'])
+
     chdir_call_regex = create_regexp_call('chdir')
     mktemp_call_regex = create_regexp_call('mktemp')
 
@@ -66,6 +85,7 @@ class BinaryInfo:
         self.stack = False
         self.exec_stack = False
         self.exit_calls = []
+        self.forbidden_calls = []
         fork_called = False
         self.tail = ''
 
@@ -84,7 +104,6 @@ class BinaryInfo:
         res = Pkg.getstatusoutput(cmd)
         if not res[0]:
             for l in res[1].splitlines():
-
                 if BinaryInfo.mktemp_call_regex.search(l):
                     self.mktemp = True
 
@@ -135,6 +154,12 @@ class BinaryInfo:
                         self.exec_stack = True
                     continue
 
+                if BinaryInfo.forbidden_functions:
+                    for r_name, func in BinaryInfo.forbidden_functions.items():
+                        ret = func['f_regex'].search(l)
+                        if ret:
+                            self.forbidden_calls.append(r_name)
+
                 if is_shlib:
                     r = BinaryInfo.exit_call_regex.search(l)
                     if r:
@@ -145,6 +170,24 @@ class BinaryInfo:
                         fork_called = True
                         continue
 
+            # check if we don't have a string that will automatically
+            # waive the presence of a forbidden call
+            if self.forbidden_calls:
+                cmd = ['env', 'LC_ALL=C', 'strings']
+                cmd.append(path)
+                res = Pkg.getstatusoutput(cmd)
+                if not res[0]:
+                    for l in res[1].splitlines():
+                        # as we need to remove elements, iterate backwards
+                        for i in range(len(self.forbidden_calls)-1, -1, -1):
+                            func = self.forbidden_calls[i]
+                            f = BinaryInfo.forbidden_functions[func]
+                            if 'waiver_regex' not in f:
+                                continue
+                            r = f['waiver_regex'].search(l)
+                            if r:
+                                del self.forbidden_calls[i]
+
             if self.non_pic:
                 self.non_pic = 'TEXTREL' in res[1]
 
@@ -396,6 +439,10 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
                 for ec in bin_info.exit_calls:
                     printWarning(pkg, 'shared-lib-calls-exit', fname, ec)
 
+            for ec in bin_info.forbidden_calls:
+                printWarning(pkg, ec, fname,
+                             BinaryInfo.forbidden_functions[ec]['f_name'])
+
             # rpath ?
             if bin_info.rpath:
                 for p in bin_info.rpath:
index 1e43bf3..7fcacbd 100644 (file)
@@ -950,7 +950,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
 
                         # does the link go up and then down into the same
                         # directory?
-                        #if linktop == lastpop:
+                        # if linktop == lastpop:
                         #    printWarning(pkg, 'lengthy-symlink', f, link)
 
                         # have we reached the root directory?
index 1efe7b4..366352a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,13 +14,13 @@ MANDIR=/usr/share/man
 FILES = rpmlint *.py INSTALL README README.devel COPYING tools/*.py \
        Makefile config rpmdiff rpmdiff.1 rpmlint.bash-completion rpmlint.1 \
        test.sh test/*/*.rpm test/spec/*.spec test/*.py
-GENERATED = ChangeLog __version__.py
+GENERATED = __version__.py
 
 PACKAGE = rpmlint
 PYTHON = /usr/bin/python
 
 # update this variable to create a new release
-VERSION := 1.7
+VERSION := 1.8
 
 # for the [A-Z]* part
 LC_ALL:=C
@@ -61,37 +61,16 @@ install: all
 verify:
        pychecker --limit=100 [A-Z]*.py __*__.py
 
-.PHONY: check
-
 check:
        ./test.sh
 
-version:
-       @echo "$(VERSION)"
-
-
-dist: cleandist localcopy tar
-
-cleandist:
-       rm -rf $(PACKAGE)-$(VERSION) $(PACKAGE)-$(VERSION).tar.xz
-
-localcopy: $(FILES) $(GENERATED)
-       mkdir $(PACKAGE)-$(VERSION)
-       cp -p --parents $(FILES) $(GENERATED) $(PACKAGE)-$(VERSION)
-
-tar: localcopy
-       tar cv --owner=root --group=root -f $(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION)
-       xz -9evf $(PACKAGE)-$(VERSION).tar
-       rm -rf $(PACKAGE)-$(VERSION)
-
-ChangeLog: $(FILES)
-       git2cl > $@
-
 __version__.py: Makefile
        echo "# Automatically generated, do not edit" > $@
        echo "__version__ = '$(VERSION)'" >> $@
 
-__isocodes__.py:
+__isocodes__.py: tools/generate-isocodes.py
        tools/generate-isocodes.py > $@
 
+.PHONY: all clean install verify check
+
 # Makefile ends here
diff --git a/Pkg.py b/Pkg.py
index 7439a3f..8884dce 100644 (file)
--- a/Pkg.py
+++ b/Pkg.py
@@ -54,8 +54,9 @@ else:
 
 # utilities
 
-# 64: RPMSENSE_PREREQ is 0 with recent rpm versions, we want 64 here in order
-# to do the right thing with packages built with older rpm versions
+# 64: RPMSENSE_PREREQ is 0 with rpm 4.4..4.7, we want 64 here in order
+# to do the right thing with those versions and packages built with other
+# rpm versions
 PREREQ_FLAG = (rpm.RPMSENSE_PREREQ or 64) | \
               rpm.RPMSENSE_SCRIPT_PRE | \
               rpm.RPMSENSE_SCRIPT_POST | \
@@ -71,6 +72,13 @@ SCRIPT_TAGS = [
     (rpm.RPMTAG_PRETRANS,       rpm.RPMTAG_PRETRANSPROG,      '%pretrans'),
     (rpm.RPMTAG_POSTTRANS,      rpm.RPMTAG_POSTTRANSPROG,     '%posttrans'),
     (rpm.RPMTAG_VERIFYSCRIPT,   rpm.RPMTAG_VERIFYSCRIPTPROG,  '%verifyscript'),
+    # file triggers: rpm >= 4.12.90
+    (getattr(rpm, "RPMTAG_FILETRIGGERSCRIPTS", 5066),
+     getattr(rpm, "RPMTAG_FILETRIGGERSCRIPTPROG", 5067),
+     '%filetrigger'),
+    (getattr(rpm, "RPMTAG_TRANSFILETRIGGERSCRIPTS", 5076),
+     getattr(rpm, "RPMTAG_TRANSFILETRIGGERSCRIPTPROG", 5077),
+     '%transfiletrigger'),
     ]
 
 var_regex = re.compile('^(.*)\${?(\w+)}?(.*)$')
@@ -197,10 +205,13 @@ def get_default_valid_rpmgroups(filename=None):
     the rpm package (if installed) if no filename is given"""
     groups = []
     if not filename:
-        with InstalledPkg("rpm") as p:
-            groupsfiles = [x for x in p.files() if x.endswith('/GROUPS')]
-            if groupsfiles:
-                filename = groupsfiles[0]
+        try:
+            with InstalledPkg("rpm") as p:
+                groupsfiles = [x for x in p.files() if x.endswith('/GROUPS')]
+                if groupsfiles:
+                    filename = groupsfiles[0]
+        except:  # the rpm package might not be installed
+            pass
     if filename and os.path.exists(filename):
         with open(filename) as fobj:
             groups = fobj.read().strip().splitlines()
@@ -253,7 +264,7 @@ def rangeCompare(reqtuple, provtuple):
         r = None
     # rpmlint mod: don't mess with provided Epoch, doing so breaks e.g.
     # "Requires: foo < 1.0" should not be satisfied by "Provides: foo = 1:0.5"
-    #if reqe is None:
+    # if reqe is None:
     #    e = None
     if reqv is None:  # just for the record if ver is None then we're going to segfault
         v = None
index 71337fa..20b515e 100644 (file)
@@ -21,7 +21,11 @@ import Pkg
 
 RPM_SCRIPTLETS = ('pre', 'post', 'preun', 'postun', 'pretrans', 'posttrans',
                   'trigger', 'triggerin', 'triggerprein', 'triggerun',
-                  'triggerun', 'triggerpostun', 'verifyscript')
+                  'triggerpostun', 'verifyscript', 'filetriggerin',
+                  'filetrigger', 'filetriggerun', 'filetriggerpostun',
+                  'transfiletriggerin', 'transfiletrigger',
+                  'transfiletriggerun', 'transfiletriggerun',
+                  'transfiletriggerpostun')
 
 DEFAULT_VALID_SHELLS = ('<lua>',
                         '/bin/sh',
diff --git a/README b/README
index 33597ee..6afd40f 100644 (file)
--- a/README
+++ b/README
@@ -13,8 +13,7 @@ binary rpm files.
 The idea for rpmlint is from the lintian tool of the Debian project.
 
 Comments and new checks welcome. See the project home page at
-http://sourceforge.net/p/rpmlint/ for contact information, bug tracking
-system and other project resources.
+https://github.com/rpm-software-management/rpmlint
 
 Implemented checks:
 
index 531b448..c1ef8ff 100644 (file)
@@ -1,6 +1,6 @@
 The latest development version can be retrieved from anonymous Git:
 
-$ git clone git://git.code.sf.net/p/rpmlint/code rpmlint
+$ git clone git@github.com:rpm-software-management/rpmlint.git
 
 To run rpmlint from the working tree or in place from an unpacked tarball:
 
index b08b0d5..cdb8eb4 100644 (file)
@@ -586,15 +586,12 @@ class TagsCheck(AbstractCheck.AbstractCheck):
             epoch = str(epoch)
 
         if use_epoch:
-            for o in (x for x in pkg.obsoletes() if x[1] and x[2][0] is None):
-                printWarning(pkg, 'no-epoch-in-obsoletes',
-                             Pkg.formatRequire(*o))
-            for c in (x for x in pkg.conflicts() if x[1] and x[2][0] is None):
-                printWarning(pkg, 'no-epoch-in-conflicts',
-                             Pkg.formatRequire(*c))
-            for p in (x for x in pkg.provides() if x[1] and x[2][0] is None):
-                printWarning(pkg, 'no-epoch-in-provides',
-                             Pkg.formatRequire(*p))
+            for tag in "obsoletes", "conflicts", "provides", "recommends", \
+                "suggests", "enhances", "supplements":
+                for x in (x for x in getattr(pkg, tag)()
+                          if x[1] and x[2][0] is None):
+                    printWarning(pkg, 'no-epoch-in-%s' % tag,
+                                 Pkg.formatRequire(*x))
 
         name = pkg.name
         deps = pkg.requires() + pkg.prereq()
@@ -1081,15 +1078,6 @@ the Epoch tag.''',
 'unreasonable-epoch',
 '''The value of your Epoch tag is unreasonably large (> 99).''',
 
-'no-epoch-in-obsoletes',
-'''Your package contains a versioned Obsoletes entry without an Epoch.''',
-
-'no-epoch-in-conflicts',
-'''Your package contains a versioned Conflicts entry without an Epoch.''',
-
-'no-epoch-in-provides',
-'''Your package contains a versioned Provides entry without an Epoch.''',
-
 'no-epoch-in-dependency',
 '''Your package contains a versioned dependency without an Epoch.''',
 
@@ -1150,6 +1138,12 @@ by filtering it out during build.  Note that in some cases this may require
 disabling rpmbuild's internal dependency generator.''',
 )
 
+for i in "obsoletes", "conflicts", "provides", "recommends", "suggests", \
+    "enhances", "supplements":
+    addDetails("no-epoch-in-%s" % i,
+               "Your package contains a versioned %s entry without an Epoch."
+               % i.capitalize())
+
 # TagsCheck.py ends here
 
 # Local variables:
index cba3f4c..9050703 100644 (file)
 # Generated with tools/generate-isocodes.py
 
-LANGUAGES = set((
-    "aa",
   "aaa",
   "aab",
   "aac",
   "aad",
   "aae",
   "aaf",
   "aag",
   "aah",
   "aai",
   "aak",
   "aal",
   "aam",
   "aan",
   "aao",
   "aap",
   "aaq",
   "aas",
   "aat",
   "aau",
   "aaw",
   "aax",
   "aaz",
   "ab",
   "aba",
   "abb",
   "abc",
   "abd",
   "abe",
   "abf",
   "abg",
   "abh",
   "abi",
   "abj",
   "abl",
   "abm",
   "abn",
   "abo",
   "abp",
   "abq",
   "abr",
   "abs",
   "abt",
   "abu",
   "abv",
   "abw",
   "abx",
   "aby",
   "abz",
   "aca",
   "acb",
   "acd",
   "ace",
   "acf",
   "ach",
   "aci",
   "ack",
   "acl",
   "acm",
   "acn",
   "acp",
   "acq",
   "acr",
   "acs",
   "act",
   "acu",
   "acv",
   "acw",
   "acx",
   "acy",
   "acz",
   "ada",
   "adb",
   "add",
   "ade",
   "adf",
   "adg",
   "adh",
   "adi",
   "adj",
   "adl",
   "adn",
   "ado",
   "adp",
   "adq",
   "adr",
   "ads",
   "adt",
   "adu",
   "adw",
   "adx",
   "ady",
   "adz",
   "ae",
   "aea",
   "aeb",
   "aec",
   "aed",
   "aee",
   "aek",
   "ael",
   "aem",
   "aen",
   "aeq",
   "aer",
   "aes",
   "aeu",
   "aew",
   "aey",
   "aez",
   "af",
   "afa",
   "afb",
   "afd",
   "afe",
   "afg",
   "afh",
   "afi",
   "afk",
   "afn",
   "afo",
   "afp",
   "afs",
   "aft",
   "afu",
   "afz",
   "aga",
   "agb",
   "agc",
   "agd",
   "age",
   "agf",
   "agg",
   "agh",
   "agi",
   "agj",
   "agk",
   "agl",
   "agm",
   "agn",
   "ago",
   "agq",
   "agr",
   "ags",
   "agt",
   "agu",
   "agv",
   "agw",
   "agx",
   "agy",
   "agz",
   "aha",
   "ahb",
   "ahg",
   "ahh",
   "ahi",
   "ahk",
   "ahl",
   "ahm",
   "ahn",
   "aho",
   "ahp",
   "ahr",
   "ahs",
   "aht",
   "aia",
   "aib",
   "aic",
   "aid",
   "aie",
   "aif",
   "aig",
   "aih",
   "aii",
   "aij",
   "aik",
   "ail",
   "aim",
   "ain",
   "aio",
   "aip",
   "aiq",
   "air",
   "ais",
   "ait",
   "aiw",
   "aix",
   "aiy",
   "aja",
   "ajg",
   "aji",
   "ajn",
   "ajp",
   "ajt",
   "aju",
   "ajw",
   "ajz",
   "ak",
   "akb",
   "akc",
   "akd",
   "ake",
   "akf",
   "akg",
   "akh",
   "aki",
   "akj",
   "akk",
   "akl",
   "akm",
   "ako",
   "akp",
   "akq",
   "akr",
   "aks",
   "akt",
   "aku",
   "akv",
   "akw",
   "akx",
   "aky",
   "akz",
   "ala",
   "alc",
   "ald",
   "ale",
   "alf",
   "alg",
   "alh",
   "ali",
   "alj",
   "alk",
   "all",
   "alm",
   "aln",
   "alo",
   "alp",
   "alq",
   "alr",
   "als",
   "alt",
   "alu",
   "alw",
   "alx",
   "aly",
   "alz",
   "am",
   "ama",
   "amb",
   "amc",
   "ame",
   "amf",
   "amg",
   "ami",
   "amj",
   "amk",
   "aml",
   "amm",
   "amn",
   "amo",
   "amp",
   "amq",
   "amr",
   "ams",
   "amt",
   "amu",
   "amv",
   "amw",
   "amx",
   "amy",
   "amz",
   "an",
   "ana",
   "anb",
   "anc",
   "and",
   "ane",
   "anf",
   "ang",
   "anh",
   "ani",
   "anj",
   "ank",
   "anl",
   "anm",
   "ann",
   "ano",
   "anp",
   "anq",
   "anr",
   "ans",
   "ant",
   "anu",
   "anv",
   "anw",
   "anx",
   "any",
   "anz",
   "aoa",
   "aob",
   "aoc",
   "aod",
   "aoe",
   "aof",
   "aog",
   "aoh",
   "aoi",
   "aoj",
   "aok",
   "aol",
   "aom",
   "aon",
   "aor",
   "aos",
   "aot",
   "aou",
   "aox",
   "aoz",
   "apa",
   "apb",
   "apc",
   "apd",
   "ape",
   "apf",
   "apg",
   "aph",
   "api",
   "apj",
   "apk",
   "apl",
   "apm",
   "apn",
   "apo",
   "app",
   "apq",
   "apr",
   "aps",
   "apt",
   "apu",
   "apv",
   "apw",
   "apx",
   "apy",
   "apz",
   "aqc",
   "aqd",
   "aqg",
   "aqm",
   "aqn",
   "aqp",
   "aqr",
   "aqz",
   "ar",
   "arb",
   "arc",
   "ard",
   "are",
   "arh",
   "ari",
   "arj",
   "ark",
   "arl",
   "arn",
   "aro",
   "arp",
   "arq",
   "arr",
   "ars",
   "art",
   "aru",
   "arv",
   "arw",
   "arx",
   "ary",
   "arz",
   "as",
   "asa",
   "asb",
   "asc",
   "asd",
   "ase",
   "asf",
   "asg",
   "ash",
   "asi",
   "asj",
   "ask",
   "asl",
   "asn",
   "aso",
   "asp",
   "asq",
   "asr",
   "ass",
   "ast",
   "asu",
   "asv",
   "asw",
   "asx",
   "asy",
   "asz",
   "ata",
   "atb",
   "atc",
   "atd",
   "ate",
   "atg",
   "ath",
   "ati",
   "atj",
   "atk",
   "atl",
   "atm",
   "atn",
   "ato",
   "atp",
   "atq",
   "atr",
   "ats",
   "att",
   "atu",
   "atv",
   "atw",
   "atx",
   "aty",
   "atz",
   "aua",
   "aub",
   "auc",
   "aud",
   "aue",
   "aug",
   "auh",
   "aui",
   "auj",
   "auk",
   "aul",
   "aum",
   "aun",
   "auo",
   "aup",
   "auq",
   "aur",
   "aus",
   "aut",
   "auu",
   "auw",
   "aux",
   "auy",
   "auz",
   "av",
   "avb",
   "avd",
   "avi",
   "avk",
   "avl",
   "avm",
   "avn",
   "avo",
   "avs",
   "avt",
   "avu",
   "avv",
   "awa",
   "awb",
   "awc",
   "awe",
   "awg",
   "awh",
   "awi",
   "awk",
   "awm",
   "awn",
   "awo",
   "awr",
   "aws",
   "awt",
   "awu",
   "awv",
   "aww",
   "awx",
   "awy",
   "axb",
   "axe",
   "axg",
   "axk",
   "axl",
   "axm",
   "axx",
   "ay",
   "aya",
   "ayb",
   "ayc",
   "ayd",
   "aye",
   "ayg",
   "ayh",
   "ayi",
   "ayk",
   "ayl",
   "ayn",
   "ayo",
   "ayp",
   "ayq",
   "ayr",
   "ays",
   "ayt",
   "ayu",
   "ayy",
   "ayz",
   "az",
   "aza",
   "azb",
   "azd",
   "azg",
   "azj",
   "azm",
   "azn",
   "azo",
   "azt",
   "azz",
   "ba",
   "baa",
   "bab",
   "bac",
   "bad",
   "bae",
   "baf",
   "bag",
   "bah",
   "bai",
   "baj",
   "bal",
   "ban",
   "bao",
   "bap",
   "bar",
   "bas",
   "bat",
   "bau",
   "bav",
   "baw",
   "bax",
   "bay",
   "bba",
   "bbb",
   "bbc",
   "bbd",
   "bbe",
   "bbf",
   "bbg",
   "bbh",
   "bbi",
   "bbj",
   "bbk",
   "bbl",
   "bbm",
   "bbn",
   "bbo",
   "bbp",
   "bbq",
   "bbr",
   "bbs",
   "bbt",
   "bbu",
   "bbv",
   "bbw",
   "bbx",
   "bby",
   "bbz",
   "bca",
   "bcb",
   "bcc",
   "bcd",
   "bce",
   "bcf",
   "bcg",
   "bch",
   "bci",
   "bcj",
   "bck",
   "bcl",
   "bcm",
   "bcn",
   "bco",
   "bcp",
   "bcq",
   "bcr",
   "bcs",
   "bct",
   "bcu",
   "bcv",
   "bcw",
   "bcy",
   "bcz",
   "bda",
   "bdb",
   "bdc",
   "bdd",
   "bde",
   "bdf",
   "bdg",
   "bdh",
   "bdi",
   "bdj",
   "bdk",
   "bdl",
   "bdm",
   "bdn",
   "bdo",
   "bdp",
   "bdq",
   "bdr",
   "bds",
   "bdt",
   "bdu",
   "bdv",
   "bdw",
   "bdx",
   "bdy",
   "bdz",
   "be",
   "bea",
   "beb",
   "bec",
   "bed",
   "bee",
   "bef",
   "beg",
   "beh",
   "bei",
   "bej",
   "bek",
   "bem",
   "beo",
   "bep",
   "beq",
   "ber",
   "bes",
   "bet",
   "beu",
   "bev",
   "bew",
   "bex",
   "bey",
   "bez",
   "bfa",
   "bfb",
   "bfc",
   "bfd",
   "bfe",
   "bff",
   "bfg",
   "bfh",
   "bfi",
   "bfj",
   "bfk",
   "bfl",
   "bfm",
   "bfn",
   "bfo",
   "bfp",
   "bfq",
   "bfr",
   "bfs",
   "bft",
   "bfu",
   "bfw",
   "bfx",
   "bfy",
   "bfz",
   "bg",
   "bga",
   "bgb",
   "bgc",
   "bgd",
   "bge",
   "bgf",
   "bgg",
   "bgi",
   "bgj",
   "bgk",
   "bgl",
   "bgm",
   "bgn",
   "bgo",
   "bgp",
   "bgq",
   "bgr",
   "bgs",
   "bgt",
   "bgu",
   "bgv",
   "bgw",
   "bgx",
   "bgy",
   "bgz",
   "bh",
   "bha",
   "bhb",
   "bhc",
   "bhd",
   "bhe",
   "bhf",
   "bhg",
   "bhh",
   "bhi",
   "bhj",
   "bhl",
   "bhm",
   "bhn",
   "bho",
   "bhp",
   "bhq",
   "bhr",
   "bhs",
   "bht",
   "bhu",
   "bhv",
   "bhw",
   "bhx",
   "bhy",
   "bhz",
   "bi",
   "bia",
   "bib",
   "bic",
   "bid",
   "bie",
   "bif",
   "big",
   "bij",
   "bik",
   "bil",
   "bim",
   "bin",
   "bio",
   "bip",
   "biq",
   "bir",
   "bit",
   "biu",
   "biv",
   "biw",
   "bix",
   "biy",
   "biz",
   "bja",
   "bjb",
   "bjc",
   "bje",
   "bjf",
   "bjg",
   "bjh",
   "bji",
   "bjj",
   "bjk",
   "bjl",
   "bjm",
   "bjn",
   "bjo",
   "bjp",
   "bjr",
   "bjs",
   "bjt",
   "bju",
   "bjv",
   "bjw",
   "bjx",
   "bjy",
   "bjz",
   "bka",
   "bkc",
   "bkd",
   "bkf",
   "bkg",
   "bkh",
   "bki",
   "bkj",
   "bkk",
   "bkl",
   "bkm",
   "bkn",
   "bko",
   "bkp",
   "bkq",
   "bkr",
   "bks",
   "bkt",
   "bku",
   "bkv",
   "bkw",
   "bkx",
   "bky",
   "bkz",
   "bla",
   "blb",
   "blc",
   "bld",
   "ble",
   "blf",
   "blg",
   "blh",
   "bli",
   "blj",
   "blk",
   "bll",
   "blm",
   "bln",
   "blo",
   "blp",
   "blq",
   "blr",
   "bls",
   "blt",
   "blv",
   "blw",
   "blx",
   "bly",
   "blz",
   "bm",
   "bma",
   "bmb",
   "bmc",
   "bmd",
   "bme",
   "bmf",
   "bmg",
   "bmh",
   "bmi",
   "bmj",
   "bmk",
   "bml",
   "bmm",
   "bmn",
   "bmo",
   "bmp",
   "bmq",
   "bmr",
   "bms",
   "bmt",
   "bmu",
   "bmv",
   "bmw",
   "bmx",
   "bmy",
   "bmz",
   "bn",
   "bna",
   "bnb",
   "bnc",
   "bnd",
   "bne",
   "bnf",
   "bng",
   "bni",
   "bnj",
   "bnk",
   "bnl",
   "bnm",
   "bnn",
   "bno",
   "bnp",
   "bnq",
   "bnr",
   "bns",
   "bnt",
   "bnu",
   "bnv",
   "bnw",
   "bnx",
   "bny",
   "bnz",
   "bo",
   "boa",
   "bob",
   "boe",
   "bof",
   "bog",
   "boh",
   "boi",
   "boj",
   "bok",
   "bol",
   "bom",
   "bon",
   "boo",
   "bop",
   "boq",
   "bor",
   "bot",
   "bou",
   "bov",
   "bow",
   "box",
   "boy",
   "boz",
   "bpa",
   "bpb",
   "bpd",
   "bpg",
   "bph",
   "bpi",
   "bpj",
   "bpk",
   "bpl",
   "bpm",
   "bpn",
   "bpo",
   "bpp",
   "bpq",
   "bpr",
   "bps",
   "bpt",
   "bpu",
   "bpv",
   "bpw",
   "bpx",
   "bpy",
   "bpz",
   "bqa",
   "bqb",
   "bqc",
   "bqd",
   "bqf",
   "bqg",
   "bqh",
   "bqi",
   "bqj",
   "bqk",
   "bql",
   "bqm",
   "bqn",
   "bqo",
   "bqp",
   "bqq",
   "bqr",
   "bqs",
   "bqt",
   "bqu",
   "bqv",
   "bqw",
   "bqx",
   "bqy",
   "bqz",
   "br",
   "bra",
   "brb",
   "brc",
   "brd",
   "brf",
   "brg",
   "brh",
   "bri",
   "brj",
   "brk",
   "brl",
   "brm",
   "brn",
   "bro",
   "brp",
   "brq",
   "brr",
   "brs",
   "brt",
   "bru",
   "brv",
   "brw",
   "brx",
   "bry",
   "brz",
   "bs",
   "bsa",
   "bsb",
   "bsc",
   "bse",
   "bsf",
   "bsg",
   "bsh",
   "bsi",
   "bsj",
   "bsk",
   "bsl",
   "bsm",
   "bsn",
   "bso",
   "bsp",
   "bsq",
   "bsr",
   "bss",
   "bst",
   "bsu",
   "bsv",
   "bsw",
   "bsx",
   "bsy",
   "bta",
   "btc",
   "btd",
   "bte",
   "btf",
   "btg",
   "bth",
   "bti",
   "btj",
   "btk",
   "btl",
   "btm",
   "btn",
   "bto",
   "btp",
   "btq",
   "btr",
   "bts",
   "btt",
   "btu",
   "btv",
   "btw",
   "btx",
   "bty",
   "btz",
   "bua",
   "bub",
   "buc",
   "bud",
   "bue",
   "buf",
   "bug",
   "buh",
   "bui",
   "buj",
   "buk",
   "bum",
   "bun",
   "buo",
   "bup",
   "buq",
   "bus",
   "but",
   "buu",
   "buv",
   "buw",
   "bux",
   "buy",
   "buz",
   "bva",
   "bvb",
   "bvc",
   "bvd",
   "bve",
   "bvf",
   "bvg",
   "bvh",
   "bvi",
   "bvj",
   "bvk",
   "bvl",
   "bvm",
   "bvn",
   "bvo",
   "bvp",
   "bvq",
   "bvr",
   "bvt",
   "bvu",
   "bvv",
   "bvw",
   "bvx",
   "bvy",
   "bvz",
   "bwa",
   "bwb",
   "bwc",
   "bwd",
   "bwe",
   "bwf",
   "bwg",
   "bwh",
   "bwi",
   "bwj",
   "bwk",
   "bwl",
   "bwm",
   "bwn",
   "bwo",
   "bwp",
   "bwq",
   "bwr",
   "bws",
   "bwt",
   "bwu",
   "bww",
   "bwx",
   "bwy",
   "bwz",
   "bxa",
   "bxb",
   "bxc",
   "bxd",
   "bxe",
   "bxf",
   "bxg",
   "bxh",
   "bxi",
   "bxj",
   "bxk",
   "bxl",
   "bxm",
   "bxn",
   "bxo",
   "bxp",
   "bxq",
   "bxr",
   "bxs",
   "bxu",
   "bxv",
   "bxw",
   "bxx",
   "bxz",
   "bya",
   "byb",
   "byc",
   "byd",
   "bye",
   "byf",
   "byg",
   "byh",
   "byi",
   "byj",
   "byk",
   "byl",
   "bym",
   "byn",
   "byo",
   "byp",
   "byq",
   "byr",
   "bys",
   "byt",
   "byv",
   "byw",
   "byx",
   "byy",
   "byz",
   "bza",
   "bzb",
   "bzc",
   "bzd",
   "bze",
   "bzf",
   "bzg",
   "bzh",
   "bzi",
   "bzj",
   "bzk",
   "bzl",
   "bzm",
   "bzn",
   "bzo",
   "bzp",
   "bzq",
   "bzr",
   "bzs",
   "bzt",
   "bzu",
   "bzv",
   "bzw",
   "bzx",
   "bzy",
   "bzz",
   "ca",
   "caa",
   "cab",
   "cac",
   "cad",
   "cae",
   "caf",
   "cag",
   "cah",
   "cai",
   "caj",
   "cak",
   "cal",
   "cam",
   "can",
   "cao",
   "cap",
   "caq",
   "car",
   "cas",
   "cau",
   "cav",
   "caw",
   "cax",
   "cay",
   "caz",
   "cbb",
   "cbc",
   "cbd",
   "cbe",
   "cbg",
   "cbh",
   "cbi",
   "cbj",
   "cbk",
   "cbl",
   "cbn",
   "cbo",
   "cbr",
   "cbs",
   "cbt",
   "cbu",
   "cbv",
   "cbw",
   "cby",
   "cca",
   "ccc",
   "ccd",
   "cce",
   "ccg",
   "cch",
   "ccj",
   "ccl",
   "ccm",
   "cco",
   "ccp",
   "ccr",
   "cda",
   "cde",
   "cdf",
   "cdg",
   "cdh",
   "cdi",
   "cdj",
   "cdm",
   "cdn",
   "cdo",
   "cdr",
   "cds",
   "cdy",
   "cdz",
   "ce",
   "cea",
   "ceb",
   "ceg",
   "cek",
   "cel",
   "cen",
   "cet",
   "cfa",
   "cfd",
   "cfg",
   "cfm",
   "cga",
   "cgc",
   "cgg",
   "cgk",
   "ch",
   "chb",
   "chc",
   "chd",
   "chf",
   "chg",
   "chh",
   "chj",
   "chk",
   "chl",
   "chm",
   "chn",
   "cho",
   "chp",
   "chq",
   "chr",
   "cht",
   "chw",
   "chx",
   "chy",
   "chz",
   "cia",
   "cib",
   "cic",
   "cid",
   "cie",
   "cih",
   "cik",
   "cim",
   "cin",
   "cip",
   "cir",
   "ciw",
   "ciy",
   "cja",
   "cje",
   "cjh",
   "cji",
   "cjk",
   "cjm",
   "cjn",
   "cjo",
   "cjp",
   "cjs",
   "cjv",
   "cjy",
   "ckb",
   "ckh",
   "ckl",
   "ckn",
   "cko",
   "ckq",
   "ckr",
   "cks",
   "ckt",
   "cku",
   "ckv",
   "ckx",
   "cky",
   "ckz",
   "cla",
   "clc",
   "cld",
   "cle",
   "clh",
   "cli",
   "clj",
   "clk",
   "cll",
   "clm",
   "clo",
   "clt",
   "clu",
   "clw",
   "cly",
   "cma",
   "cmc",
   "cme",
   "cmg",
   "cmi",
   "cml",
   "cmm",
   "cmn",
   "cmo",
   "cmr",
   "cms",
   "cmt",
   "cna",
   "cnb",
   "cnc",
   "cng",
   "cnh",
   "cni",
   "cnk",
   "cnl",
   "cno",
   "cns",
   "cnt",
   "cnu",
   "cnw",
   "cnx",
   "co",
   "coa",
   "cob",
   "coc",
   "cod",
   "coe",
   "cof",
   "cog",
   "coh",
   "coj",
   "cok",
   "col",
   "com",
   "con",
   "coo",
   "cop",
   "coq",
   "cot",
   "cou",
   "cov",
   "cow",
   "cox",
   "coy",
   "coz",
   "cpa",
   "cpb",
   "cpc",
   "cpe",
   "cpf",
   "cpg",
   "cpi",
   "cpn",
   "cpo",
   "cpp",
   "cps",
   "cpu",
   "cpx",
   "cpy",
   "cqd",
   "cqu",
   "cr",
   "cra",
   "crb",
   "crc",
   "crd",
   "crf",
   "crg",
   "crh",
   "cri",
   "crj",
   "crk",
   "crl",
   "crm",
   "crn",
   "cro",
   "crp",
   "crq",
   "crr",
   "crs",
   "crt",
   "crv",
   "crw",
   "crx",
   "cry",
   "crz",
   "cs",
   "csa",
   "csb",
   "csc",
   "csd",
   "cse",
   "csf",
   "csg",
   "csh",
   "csi",
   "csj",
   "csk",
   "csl",
   "csm",
   "csn",
   "cso",
   "csq",
   "csr",
   "css",
   "cst",
   "csv",
   "csw",
   "csy",
   "csz",
   "cta",
   "ctc",
   "ctd",
   "cte",
   "ctg",
   "cth",
   "ctl",
   "ctm",
   "ctn",
   "cto",
   "ctp",
   "cts",
   "ctt",
   "ctu",
   "ctz",
   "cu",
   "cua",
   "cub",
   "cuc",
   "cug",
   "cuh",
   "cui",
   "cuj",
   "cuk",
   "cul",
   "cum",
   "cuo",
   "cup",
   "cuq",
   "cur",
   "cus",
   "cut",
   "cuu",
   "cuv",
   "cuw",
   "cux",
   "cv",
   "cvg",
   "cvn",
   "cwa",
   "cwb",
   "cwd",
   "cwe",
   "cwg",
   "cwt",
   "cy",
   "cya",
   "cyb",
   "cyo",
   "czh",
   "czk",
   "czn",
   "czo",
   "czt",
   "da",
   "daa",
   "dac",
   "dad",
   "dae",
   "dag",
   "dah",
   "dai",
   "daj",
   "dak",
   "dal",
   "dam",
   "dao",
   "daq",
   "dar",
   "das",
   "dau",
   "dav",
   "daw",
   "dax",
   "day",
   "daz",
   "dba",
   "dbb",
   "dbd",
   "dbe",
   "dbf",
   "dbg",
   "dbi",
   "dbj",
   "dbl",
   "dbm",
   "dbn",
   "dbo",
   "dbp",
   "dbq",
   "dbr",
   "dbt",
   "dbu",
   "dbv",
   "dbw",
   "dby",
   "dcc",
   "dcr",
   "dda",
   "ddd",
   "dde",
   "ddg",
   "ddi",
   "ddj",
   "ddn",
   "ddo",
   "ddr",
   "dds",
   "ddw",
   "de",
   "dec",
   "ded",
   "dee",
   "def",
   "deg",
   "deh",
   "dei",
   "dek",
   "del",
   "dem",
   "den",
   "dep",
   "deq",
   "der",
   "des",
   "dev",
   "dez",
   "dga",
   "dgb",
   "dgc",
   "dgd",
   "dge",
   "dgg",
   "dgh",
   "dgi",
   "dgk",
   "dgl",
   "dgn",
   "dgo",
   "dgr",
   "dgs",
   "dgt",
   "dgu",
   "dgw",
   "dgx",
   "dgz",
   "dhd",
   "dhg",
   "dhi",
   "dhl",
   "dhm",
   "dhn",
   "dho",
   "dhr",
   "dhs",
   "dhu",
   "dhv",
   "dhw",
   "dhx",
   "dia",
   "dib",
   "dic",
   "did",
   "dif",
   "dig",
   "dih",
   "dii",
   "dij",
   "dik",
   "dil",
   "dim",
   "din",
   "dio",
   "dip",
   "diq",
   "dir",
   "dis",
   "dit",
   "diu",
   "diw",
   "dix",
   "diy",
   "diz",
   "dja",
   "djb",
   "djc",
   "djd",
   "dje",
   "djf",
   "dji",
   "djj",
   "djk",
   "djm",
   "djn",
   "djo",
   "djr",
   "dju",
   "djw",
   "dka",
   "dkk",
   "dkr",
   "dks",
   "dkx",
   "dlg",
   "dlk",
   "dlm",
   "dln",
   "dma",
   "dmb",
   "dmc",
   "dmd",
   "dme",
   "dmg",
   "dmk",
   "dml",
   "dmm",
   "dmo",
   "dmr",
   "dms",
   "dmu",
   "dmv",
   "dmw",
   "dmx",
   "dmy",
   "dna",
   "dnd",
   "dne",
   "dng",
   "dni",
   "dnj",
   "dnk",
   "dnn",
   "dnr",
   "dnt",
   "dnu",
   "dnv",
   "dnw",
   "dny",
   "doa",
   "dob",
   "doc",
   "doe",
   "dof",
   "doh",
   "doi",
   "dok",
   "dol",
   "don",
   "doo",
   "dop",
   "doq",
   "dor",
   "dos",
   "dot",
   "dov",
   "dow",
   "dox",
   "doy",
   "doz",
   "dpp",
   "dra",
   "drb",
   "drc",
   "drd",
   "dre",
   "drg",
   "dri",
   "drl",
   "drn",
   "dro",
   "drq",
   "drr",
   "drs",
   "drt",
   "dru",
   "dry",
   "dsb",
   "dse",
   "dsh",
   "dsi",
   "dsl",
   "dsn",
   "dso",
   "dsq",
   "dta",
   "dtb",
   "dtd",
   "dth",
   "dti",
   "dtk",
   "dtm",
   "dto",
   "dtp",
   "dtr",
   "dts",
   "dtt",
   "dtu",
   "dty",
   "dua",
   "dub",
   "duc",
   "dud",
   "due",
   "duf",
   "dug",
   "duh",
   "dui",
   "duj",
   "duk",
   "dul",
   "dum",
   "dun",
   "duo",
   "dup",
   "duq",
   "dur",
   "dus",
   "duu",
   "duv",
   "duw",
   "dux",
   "duy",
   "duz",
   "dv",
   "dva",
   "dwa",
   "dwr",
   "dws",
   "dww",
   "dya",
   "dyb",
   "dyd",
   "dyg",
   "dyi",
   "dym",
   "dyn",
   "dyo",
   "dyu",
   "dyy",
   "dz",
   "dza",
   "dzd",
   "dze",
   "dzg",
   "dzl",
   "dzn",
   "eaa",
   "ebg",
   "ebk",
   "ebo",
   "ebr",
   "ebu",
   "ecr",
   "ecs",
   "ecy",
   "ee",
   "eee",
   "efa",
   "efe",
   "efi",
   "ega",
   "egl",
   "ego",
   "egy",
   "ehu",
   "eip",
   "eit",
   "eiv",
   "eja",
   "eka",
   "ekc",
   "eke",
   "ekg",
   "eki",
   "ekk",
   "ekl",
   "ekm",
   "eko",
   "ekp",
   "ekr",
   "eky",
   "el",
   "ele",
   "elh",
   "eli",
   "elk",
   "elm",
   "elo",
   "elu",
   "elx",
   "ema",
   "emb",
   "eme",
   "emg",
   "emi",
   "emk",
   "emm",
   "emn",
   "emo",
   "emp",
   "ems",
   "emu",
   "emw",
   "emx",
   "emy",
   "en",
   "ena",
   "enb",
   "enc",
   "end",
   "enf",
   "enh",
   "enm",
   "enn",
   "eno",
   "enq",
   "enr",
   "enu",
   "env",
   "enw",
   "eo",
   "eot",
   "epi",
   "era",
   "erg",
   "erh",
   "eri",
   "erk",
   "ero",
   "err",
   "ers",
   "ert",
   "erw",
   "es",
   "ese",
   "esh",
   "esi",
   "esk",
   "esl",
   "esm",
   "esn",
   "eso",
   "esq",
   "ess",
   "esu",
   "et",
   "etb",
   "etc",
   "eth",
   "etn",
   "eto",
   "etr",
   "ets",
   "ett",
   "etu",
   "etx",
   "etz",
   "eu",
   "eve",
   "evh",
   "evn",
   "ewo",
   "ext",
   "eya",
   "eyo",
   "eza",
   "eze",
   "fa",
   "faa",
   "fab",
   "fad",
   "faf",
   "fag",
   "fah",
   "fai",
   "faj",
   "fak",
   "fal",
   "fam",
   "fan",
   "fap",
   "far",
   "fat",
   "fau",
   "fax",
   "fay",
   "faz",
   "fbl",
   "fcs",
   "fer",
   "ff",
   "ffi",
   "ffm",
   "fgr",
   "fi",
   "fia",
   "fie",
   "fil",
   "fip",
   "fir",
   "fit",
   "fiu",
   "fiw",
   "fj",
   "fkk",
   "fkv",
   "fla",
   "flh",
   "fli",
   "fll",
   "fln",
   "flr",
   "fly",
   "fmp",
   "fmu",
   "fng",
   "fni",
   "fo",
   "fod",
   "foi",
   "fom",
   "fon",
   "for",
   "fos",
   "fpe",
   "fqs",
   "fr",
   "frc",
   "frd",
   "frk",
   "frm",
   "fro",
   "frp",
   "frq",
   "frr",
   "frs",
   "frt",
   "fse",
   "fsl",
   "fss",
   "fub",
   "fuc",
   "fud",
   "fue",
   "fuf",
   "fuh",
   "fui",
   "fuj",
   "fum",
   "fun",
   "fuq",
   "fur",
   "fut",
   "fuu",
   "fuv",
   "fuy",
   "fvr",
   "fwa",
   "fwe",
   "fy",
   "ga",
   "gaa",
   "gab",
   "gac",
   "gad",
   "gae",
   "gaf",
   "gag",
   "gah",
   "gai",
   "gaj",
   "gak",
   "gal",
   "gam",
   "gan",
   "gao",
   "gap",
   "gaq",
   "gar",
   "gas",
   "gat",
   "gau",
   "gaw",
   "gax",
   "gay",
   "gaz",
   "gba",
   "gbb",
   "gbd",
   "gbe",
   "gbf",
   "gbg",
   "gbh",
   "gbi",
   "gbj",
   "gbk",
   "gbl",
   "gbm",
   "gbn",
   "gbo",
   "gbp",
   "gbq",
   "gbr",
   "gbs",
   "gbu",
   "gbv",
   "gbw",
   "gbx",
   "gby",
   "gbz",
   "gcc",
   "gcd",
   "gce",
   "gcf",
   "gcl",
   "gcn",
   "gcr",
   "gct",
   "gd",
   "gda",
   "gdb",
   "gdc",
   "gdd",
   "gde",
   "gdf",
   "gdg",
   "gdh",
   "gdi",
   "gdj",
   "gdk",
   "gdl",
   "gdm",
   "gdn",
   "gdo",
   "gdq",
   "gdr",
   "gds",
   "gdt",
   "gdu",
   "gdx",
   "gea",
   "geb",
   "gec",
   "ged",
   "geg",
   "geh",
   "gei",
   "gej",
   "gek",
   "gel",
   "gem",
   "geq",
   "ges",
   "gew",
   "gex",
   "gey",
   "gez",
   "gfk",
   "gft",
   "gfx",
   "gga",
   "ggb",
   "ggd",
   "gge",
   "ggg",
   "ggk",
   "ggl",
   "ggm",
   "ggn",
   "ggo",
   "ggt",
   "ggu",
   "ggw",
   "gha",
   "ghc",
   "ghe",
   "ghh",
   "ghk",
   "ghl",
   "ghn",
   "gho",
   "ghr",
   "ghs",
   "ght",
   "gia",
   "gib",
   "gic",
   "gid",
   "gig",
   "gih",
   "gil",
   "gim",
   "gin",
   "gip",
   "giq",
   "gir",
   "gis",
   "git",
   "giu",
   "giw",
   "gix",
   "giy",
   "giz",
   "gji",
   "gjk",
   "gjm",
   "gjn",
   "gju",
   "gka",
   "gke",
   "gkn",
   "gko",
   "gkp",
   "gl",
   "glc",
   "gld",
   "glh",
   "gli",
   "glj",
   "glk",
   "gll",
   "glo",
   "glr",
   "glu",
   "glw",
   "gly",
   "gma",
   "gmb",
   "gmd",
   "gmh",
   "gml",
   "gmm",
   "gmn",
   "gmu",
   "gmv",
   "gmx",
   "gmy",
   "gmz",
   "gn",
   "gna",
   "gnb",
   "gnc",
   "gnd",
   "gne",
   "gng",
   "gnh",
   "gni",
   "gnk",
   "gnl",
   "gnm",
   "gnn",
   "gno",
   "gnq",
   "gnr",
   "gnt",
   "gnu",
   "gnw",
   "gnz",
   "goa",
   "gob",
   "goc",
   "god",
   "goe",
   "gof",
   "gog",
   "goh",
   "goi",
   "goj",
   "gok",
   "gol",
   "gom",
   "gon",
   "goo",
   "gop",
   "goq",
   "gor",
   "gos",
   "got",
   "gou",
   "gow",
   "gox",
   "goy",
   "goz",
   "gpa",
   "gpe",
   "gpn",
   "gqa",
   "gqi",
   "gqn",
   "gqr",
   "gqu",
   "gra",
   "grb",
   "grc",
   "grd",
   "grg",
   "grh",
   "gri",
   "grj",
   "grm",
   "gro",
   "grq",
   "grr",
   "grs",
   "grt",
   "gru",
   "grv",
   "grw",
   "grx",
   "gry",
   "grz",
   "gse",
   "gsg",
   "gsl",
   "gsm",
   "gsn",
   "gso",
   "gsp",
   "gss",
   "gsw",
   "gta",
   "gti",
   "gtu",
   "gu",
   "gua",
   "gub",
   "guc",
   "gud",
   "gue",
   "guf",
   "gug",
   "guh",
   "gui",
   "guk",
   "gul",
   "gum",
   "gun",
   "guo",
   "gup",
   "guq",
   "gur",
   "gus",
   "gut",
   "guu",
   "guv",
   "guw",
   "gux",
   "guz",
   "gv",
   "gva",
   "gvc",
   "gve",
   "gvf",
   "gvj",
   "gvl",
   "gvm",
   "gvn",
   "gvo",
   "gvp",
   "gvr",
   "gvs",
   "gvy",
   "gwa",
   "gwb",
   "gwc",
   "gwd",
   "gwe",
   "gwf",
   "gwg",
   "gwi",
   "gwj",
   "gwm",
   "gwn",
   "gwr",
   "gwt",
   "gwu",
   "gww",
   "gwx",
   "gxx",
   "gya",
   "gyb",
   "gyd",
   "gye",
   "gyf",
   "gyg",
   "gyi",
   "gyl",
   "gym",
   "gyn",
   "gyr",
   "gyy",
   "gza",
   "gzi",
   "gzn",
   "ha",
   "haa",
   "hab",
   "hac",
   "had",
   "hae",
   "haf",
   "hag",
   "hah",
   "hai",
   "haj",
   "hak",
   "hal",
   "ham",
   "han",
   "hao",
   "hap",
   "haq",
   "har",
   "has",
   "hav",
   "haw",
   "hax",
   "hay",
   "haz",
   "hba",
   "hbb",
   "hbn",
   "hbo",
   "hbu",
   "hca",
   "hch",
   "hdn",
   "hds",
   "hdy",
   "he",
   "hea",
   "hed",
   "heg",
   "heh",
   "hei",
   "hem",
   "hgm",
   "hgw",
   "hhi",
   "hhr",
   "hhy",
   "hi",
   "hia",
   "hib",
   "hid",
   "hif",
   "hig",
   "hih",
   "hii",
   "hij",
   "hik",
   "hil",
   "him",
   "hio",
   "hir",
   "hit",
   "hiw",
   "hix",
   "hji",
   "hka",
   "hke",
   "hkk",
   "hks",
   "hla",
   "hlb",
   "hld",
   "hle",
   "hlt",
   "hlu",
   "hma",
   "hmb",
   "hmc",
   "hmd",
   "hme",
   "hmf",
   "hmg",
   "hmh",
   "hmi",
   "hmj",
   "hmk",
   "hml",
   "hmm",
   "hmn",
   "hmp",
   "hmq",
   "hmr",
   "hms",
   "hmt",
   "hmu",
   "hmv",
   "hmw",
   "hmy",
   "hmz",
   "hna",
   "hnd",
   "hne",
   "hnh",
   "hni",
   "hnj",
   "hnn",
   "hno",
   "hns",
   "hnu",
   "ho",
   "hoa",
   "hob",
   "hoc",
   "hod",
   "hoe",
   "hoh",
   "hoi",
   "hoj",
   "hol",
   "hom",
   "hoo",
   "hop",
   "hor",
   "hos",
   "hot",
   "hov",
   "how",
   "hoy",
   "hoz",
   "hpo",
   "hps",
   "hr",
   "hra",
   "hrc",
   "hre",
   "hrk",
   "hrm",
   "hro",
   "hrp",
   "hrt",
   "hru",
   "hrw",
   "hrx",
   "hrz",
   "hsb",
   "hsh",
   "hsl",
   "hsn",
   "hss",
   "ht",
   "hti",
   "hto",
   "hts",
   "htu",
   "htx",
   "hu",
   "hub",
   "huc",
   "hud",
   "hue",
   "huf",
   "hug",
   "huh",
   "hui",
   "huj",
   "huk",
   "hul",
   "hum",
   "huo",
   "hup",
   "huq",
   "hur",
   "hus",
   "hut",
   "huu",
   "huv",
   "huw",
   "hux",
   "huy",
   "huz",
   "hvc",
   "hve",
   "hvk",
   "hvn",
   "hvv",
   "hwa",
   "hwc",
   "hwo",
   "hy",
   "hya",
   "hz",
   "ia",
   "iai",
   "ian",
   "iap",
   "iar",
   "iba",
   "ibb",
   "ibd",
   "ibe",
   "ibg",
   "ibl",
   "ibm",
   "ibn",
   "ibr",
   "ibu",
   "iby",
   "ica",
   "ich",
   "icl",
   "icr",
   "id",
   "ida",
   "idb",
   "idc",
   "idd",
   "ide",
   "idi",
   "idr",
   "ids",
   "idt",
   "idu",
   "ie",
   "ifa",
   "ifb",
   "ife",
   "iff",
   "ifk",
   "ifm",
   "ifu",
   "ify",
   "ig",
   "igb",
   "ige",
   "igg",
   "igl",
   "igm",
   "ign",
   "igo",
   "igs",
   "igw",
   "ihb",
   "ihi",
   "ihp",
   "ihw",
   "ii",
   "iin",
   "ijc",
   "ije",
   "ijj",
   "ijn",
   "ijo",
   "ijs",
   "ik",
   "ike",
   "iki",
   "ikk",
   "ikl",
   "iko",
   "ikp",
   "ikr",
   "ikt",
   "ikv",
   "ikw",
   "ikx",
   "ikz",
   "ila",
   "ilb",
   "ilg",
   "ili",
   "ilk",
   "ill",
   "ilo",
   "ils",
   "ilu",
   "ilv",
   "ima",
   "ime",
   "imi",
   "iml",
   "imn",
   "imo",
   "imr",
   "ims",
   "imy",
   "inb",
   "inc",
   "ine",
   "ing",
   "inh",
   "inj",
   "inl",
   "inm",
   "inn",
   "ino",
   "inp",
   "ins",
   "int",
   "inz",
   "io",
   "ior",
   "iou",
   "iow",
   "ipi",
   "ipo",
   "iqu",
   "iqw",
   "ira",
   "ire",
   "irh",
   "iri",
   "irk",
   "irn",
   "iro",
   "irr",
   "iru",
   "irx",
   "iry",
   "is",
   "isa",
   "isc",
   "isd",
   "ise",
   "isg",
   "ish",
   "isi",
   "isk",
   "ism",
   "isn",
   "iso",
   "isr",
   "ist",
   "isu",
   "it",
   "itb",
   "ite",
   "iti",
   "itk",
   "itl",
   "itm",
   "ito",
   "itr",
   "its",
   "itt",
   "itv",
   "itw",
   "itx",
   "ity",
   "itz",
   "iu",
   "ium",
   "ivb",
   "ivv",
   "iwk",
   "iwm",
   "iwo",
   "iws",
   "ixc",
   "ixl",
   "iya",
   "iyo",
   "iyx",
   "izh",
   "izr",
   "izz",
   "ja",
   "jaa",
   "jab",
   "jac",
   "jad",
   "jae",
   "jaf",
   "jah",
   "jaj",
   "jak",
   "jal",
   "jam",
   "jan",
   "jao",
   "jaq",
   "jas",
   "jat",
   "jau",
   "jax",
   "jay",
   "jaz",
   "jbe",
   "jbi",
   "jbj",
   "jbk",
   "jbn",
   "jbo",
   "jbr",
   "jbt",
   "jbu",
   "jbw",
   "jcs",
   "jct",
   "jda",
   "jdg",
   "jdt",
   "jeb",
   "jee",
   "jeg",
   "jeh",
   "jei",
   "jek",
   "jel",
   "jen",
   "jer",
   "jet",
   "jeu",
   "jgb",
   "jge",
   "jgk",
   "jgo",
   "jhi",
   "jhs",
   "jia",
   "jib",
   "jic",
   "jid",
   "jie",
   "jig",
   "jih",
   "jii",
   "jil",
   "jim",
   "jio",
   "jiq",
   "jit",
   "jiu",
   "jiv",
   "jiy",
   "jjr",
   "jkm",
   "jko",
   "jkp",
   "jkr",
   "jku",
   "jle",
   "jls",
   "jma",
   "jmb",
   "jmc",
   "jmd",
   "jmi",
   "jml",
   "jmn",
   "jmr",
   "jms",
   "jmw",
   "jmx",
   "jna",
   "jnd",
   "jng",
   "jni",
   "jnj",
   "jnl",
   "jns",
   "job",
   "jod",
   "jor",
   "jos",
   "jow",
   "jpa",
   "jpr",
   "jqr",
   "jra",
   "jrb",
   "jrr",
   "jrt",
   "jru",
   "jsl",
   "jua",
   "jub",
   "juc",
   "jud",
   "juh",
   "jui",
   "juk",
   "jul",
   "jum",
   "jun",
   "juo",
   "jup",
   "jur",
   "jus",
   "jut",
   "juu",
   "juw",
   "juy",
   "jv",
   "jvd",
   "jvn",
   "jwi",
   "jya",
   "jye",
   "jyy",
   "ka",
   "kaa",
   "kab",
   "kac",
   "kad",
   "kae",
   "kaf",
   "kag",
   "kah",
   "kai",
   "kaj",
   "kak",
   "kam",
   "kao",
   "kap",
   "kaq",
   "kar",
   "kav",
   "kaw",
   "kax",
   "kay",
   "kba",
   "kbb",
   "kbc",
   "kbd",
   "kbe",
   "kbf",
   "kbg",
   "kbh",
   "kbi",
   "kbj",
   "kbk",
   "kbl",
   "kbm",
   "kbn",
   "kbo",
   "kbp",
   "kbq",
   "kbr",
   "kbs",
   "kbt",
   "kbu",
   "kbv",
   "kbw",
   "kbx",
   "kby",
   "kbz",
   "kca",
   "kcb",
   "kcc",
   "kcd",
   "kce",
   "kcf",
   "kcg",
   "kch",
   "kci",
   "kcj",
   "kck",
   "kcl",
   "kcm",
   "kcn",
   "kco",
   "kcp",
   "kcq",
   "kcr",
   "kcs",
   "kct",
   "kcu",
   "kcv",
   "kcw",
   "kcx",
   "kcy",
   "kcz",
   "kda",
   "kdc",
   "kdd",
   "kde",
   "kdf",
   "kdg",
   "kdh",
   "kdi",
   "kdj",
   "kdk",
   "kdl",
   "kdm",
   "kdn",
   "kdp",
   "kdq",
   "kdr",
   "kdt",
   "kdu",
   "kdw",
   "kdx",
   "kdy",
   "kdz",
   "kea",
   "keb",
   "kec",
   "ked",
   "kee",
   "kef",
   "keg",
   "keh",
   "kei",
   "kej",
   "kek",
   "kel",
   "kem",
   "ken",
   "keo",
   "kep",
   "keq",
   "ker",
   "kes",
   "ket",
   "keu",
   "kev",
   "kew",
   "kex",
   "key",
   "kez",
   "kfa",
   "kfb",
   "kfc",
   "kfd",
   "kfe",
   "kff",
   "kfg",
   "kfh",
   "kfi",
   "kfj",
   "kfk",
   "kfl",
   "kfm",
   "kfn",
   "kfo",
   "kfp",
   "kfq",
   "kfr",
   "kfs",
   "kft",
   "kfu",
   "kfv",
   "kfw",
   "kfx",
   "kfy",
   "kfz",
   "kg",
   "kga",
   "kgb",
   "kgc",
   "kgd",
   "kge",
   "kgf",
   "kgg",
   "kgi",
   "kgj",
   "kgk",
   "kgl",
   "kgm",
   "kgn",
   "kgo",
   "kgp",
   "kgq",
   "kgr",
   "kgs",
   "kgt",
   "kgu",
   "kgv",
   "kgw",
   "kgx",
   "kgy",
   "kha",
   "khb",
   "khc",
   "khd",
   "khe",
   "khf",
   "khg",
   "khh",
   "khi",
   "khj",
   "khk",
   "khl",
   "khn",
   "kho",
   "khp",
   "khq",
   "khr",
   "khs",
   "kht",
   "khu",
   "khv",
   "khw",
   "khx",
   "khy",
   "khz",
   "ki",
   "kia",
   "kib",
   "kic",
   "kid",
   "kie",
   "kif",
   "kig",
   "kih",
   "kii",
   "kij",
   "kil",
   "kim",
   "kio",
   "kip",
   "kiq",
   "kis",
   "kit",
   "kiu",
   "kiv",
   "kiw",
   "kix",
   "kiy",
   "kiz",
   "kj",
   "kja",
   "kjb",
   "kjc",
   "kjd",
   "kje",
   "kjf",
   "kjg",
   "kjh",
   "kji",
   "kjj",
   "kjk",
   "kjl",
   "kjm",
   "kjn",
   "kjo",
   "kjp",
   "kjq",
   "kjr",
   "kjs",
   "kjt",
   "kju",
   "kjx",
   "kjy",
   "kjz",
   "kk",
   "kka",
   "kkb",
   "kkc",
   "kkd",
   "kke",
   "kkf",
   "kkg",
   "kkh",
   "kki",
   "kkj",
   "kkk",
   "kkl",
   "kkm",
   "kkn",
   "kko",
   "kkp",
   "kkq",
   "kkr",
   "kks",
   "kkt",
   "kku",
   "kkv",
   "kkw",
   "kkx",
   "kky",
   "kkz",
   "kl",
   "kla",
   "klb",
   "klc",
   "kld",
   "kle",
   "klf",
   "klg",
   "klh",
   "kli",
   "klj",
   "klk",
   "kll",
   "klm",
   "kln",
   "klo",
   "klp",
   "klq",
   "klr",
   "kls",
   "klt",
   "klu",
   "klv",
   "klw",
   "klx",
   "kly",
   "klz",
   "km",
   "kma",
   "kmb",
   "kmc",
   "kmd",
   "kme",
   "kmf",
   "kmg",
   "kmh",
   "kmi",
   "kmj",
   "kmk",
   "kml",
   "kmm",
   "kmn",
   "kmo",
   "kmp",
   "kmq",
   "kmr",
   "kms",
   "kmt",
   "kmu",
   "kmv",
   "kmw",
   "kmx",
   "kmy",
   "kmz",
   "kn",
   "kna",
   "knb",
   "knc",
   "knd",
   "kne",
   "knf",
   "kng",
   "kni",
   "knj",
   "knk",
   "knl",
   "knm",
   "knn",
   "kno",
   "knp",
   "knq",
   "knr",
   "kns",
   "knt",
   "knu",
   "knv",
   "knw",
   "knx",
   "kny",
   "knz",
   "ko",
   "koa",
   "koc",
   "kod",
   "koe",
   "kof",
   "kog",
   "koh",
   "koi",
   "koj",
   "kok",
   "kol",
   "koo",
   "kop",
   "koq",
   "kos",
   "kot",
   "kou",
   "kov",
   "kow",
   "kox",
   "koy",
   "koz",
   "kpa",
   "kpb",
   "kpc",
   "kpd",
   "kpe",
   "kpf",
   "kpg",
   "kph",
   "kpi",
   "kpj",
   "kpk",
   "kpl",
   "kpm",
   "kpn",
   "kpo",
   "kpq",
   "kpr",
   "kps",
   "kpt",
   "kpu",
   "kpv",
   "kpw",
   "kpx",
   "kpy",
   "kpz",
   "kqa",
   "kqb",
   "kqc",
   "kqd",
   "kqe",
   "kqf",
   "kqg",
   "kqh",
   "kqi",
   "kqj",
   "kqk",
   "kql",
   "kqm",
   "kqn",
   "kqo",
   "kqp",
   "kqq",
   "kqr",
   "kqs",
   "kqt",
   "kqu",
   "kqv",
   "kqw",
   "kqx",
   "kqy",
   "kqz",
   "kr",
   "kra",
   "krb",
   "krc",
   "krd",
   "kre",
   "krf",
   "krh",
   "kri",
   "krj",
   "krk",
   "krl",
   "krm",
   "krn",
   "kro",
   "krp",
   "krr",
   "krs",
   "krt",
   "kru",
   "krv",
   "krw",
   "krx",
   "kry",
   "krz",
   "ks",
   "ksa",
   "ksb",
   "ksc",
   "ksd",
   "kse",
   "ksf",
   "ksg",
   "ksh",
   "ksi",
   "ksj",
   "ksk",
   "ksl",
   "ksm",
   "ksn",
   "kso",
   "ksp",
   "ksq",
   "ksr",
   "kss",
   "kst",
   "ksu",
   "ksv",
   "ksw",
   "ksx",
   "ksy",
   "ksz",
   "kta",
   "ktb",
   "ktc",
   "ktd",
   "kte",
   "ktf",
   "ktg",
   "kth",
   "kti",
   "ktj",
   "ktk",
   "ktl",
   "ktm",
   "ktn",
   "kto",
   "ktp",
   "ktq",
   "ktr",
   "kts",
   "ktt",
   "ktu",
   "ktv",
   "ktw",
   "ktx",
   "kty",
   "ktz",
   "ku",
   "kub",
   "kuc",
   "kud",
   "kue",
   "kuf",
   "kug",
   "kuh",
   "kui",
   "kuj",
   "kuk",
   "kul",
   "kum",
   "kun",
   "kuo",
   "kup",
   "kuq",
   "kus",
   "kut",
   "kuu",
   "kuv",
   "kuw",
   "kux",
   "kuy",
   "kuz",
   "kv",
   "kva",
   "kvb",
   "kvc",
   "kvd",
   "kve",
   "kvf",
   "kvg",
   "kvh",
   "kvi",
   "kvj",
   "kvk",
   "kvl",
   "kvm",
   "kvn",
   "kvo",
   "kvp",
   "kvq",
   "kvr",
   "kvs",
   "kvt",
   "kvu",
   "kvv",
   "kvw",
   "kvx",
   "kvy",
   "kvz",
   "kw",
   "kwa",
   "kwb",
   "kwc",
   "kwd",
   "kwe",
   "kwf",
   "kwg",
   "kwh",
   "kwi",
   "kwj",
   "kwk",
   "kwl",
   "kwm",
   "kwn",
   "kwo",
   "kwp",
   "kwq",
   "kwr",
   "kws",
   "kwt",
   "kwu",
   "kwv",
   "kww",
   "kwx",
   "kwy",
   "kwz",
   "kxa",
   "kxb",
   "kxc",
   "kxd",
   "kxe",
   "kxf",
   "kxh",
   "kxi",
   "kxj",
   "kxk",
   "kxl",
   "kxm",
   "kxn",
   "kxo",
   "kxp",
   "kxq",
   "kxr",
   "kxs",
   "kxt",
   "kxu",
   "kxv",
   "kxw",
   "kxx",
   "kxy",
   "kxz",
   "ky",
   "kya",
   "kyb",
   "kyc",
   "kyd",
   "kye",
   "kyf",
   "kyg",
   "kyh",
   "kyi",
   "kyj",
   "kyk",
   "kyl",
   "kym",
   "kyn",
   "kyo",
   "kyp",
   "kyq",
   "kyr",
   "kys",
   "kyt",
   "kyu",
   "kyv",
   "kyw",
   "kyx",
   "kyy",
   "kyz",
   "kza",
   "kzb",
   "kzc",
   "kzd",
   "kze",
   "kzf",
   "kzg",
   "kzi",
   "kzj",
   "kzk",
   "kzl",
   "kzm",
   "kzn",
   "kzo",
   "kzp",
   "kzq",
   "kzr",
   "kzs",
   "kzt",
   "kzu",
   "kzv",
   "kzw",
   "kzx",
   "kzy",
   "kzz",
   "la",
   "laa",
   "lab",
   "lac",
   "lad",
   "lae",
   "laf",
   "lag",
   "lah",
   "lai",
   "laj",
   "lak",
   "lal",
   "lam",
   "lan",
   "lap",
   "laq",
   "lar",
   "las",
   "lau",
   "law",
   "lax",
   "lay",
   "laz",
   "lb",
   "lba",
   "lbb",
   "lbc",
   "lbe",
   "lbf",
   "lbg",
   "lbi",
   "lbj",
   "lbk",
   "lbl",
   "lbm",
   "lbn",
   "lbo",
   "lbq",
   "lbr",
   "lbs",
   "lbt",
   "lbu",
   "lbv",
   "lbw",
   "lbx",
   "lby",
   "lbz",
   "lcc",
   "lcd",
   "lce",
   "lcf",
   "lch",
   "lcl",
   "lcm",
   "lcp",
   "lcq",
   "lcs",
   "lda",
   "ldb",
   "ldd",
   "ldg",
   "ldh",
   "ldi",
   "ldj",
   "ldk",
   "ldl",
   "ldm",
   "ldn",
   "ldo",
   "ldp",
   "ldq",
   "lea",
   "leb",
   "lec",
   "led",
   "lee",
   "lef",
   "leg",
   "leh",
   "lei",
   "lej",
   "lek",
   "lel",
   "lem",
   "len",
   "leo",
   "lep",
   "leq",
   "ler",
   "les",
   "let",
   "leu",
   "lev",
   "lew",
   "lex",
   "ley",
   "lez",
   "lfa",
   "lfn",
   "lg",
   "lga",
   "lgb",
   "lgg",
   "lgh",
   "lgi",
   "lgk",
   "lgl",
   "lgm",
   "lgn",
   "lgq",
   "lgr",
   "lgt",
   "lgu",
   "lgz",
   "lha",
   "lhh",
   "lhi",
   "lhl",
   "lhm",
   "lhn",
   "lhp",
   "lhs",
   "lht",
   "lhu",
   "li",
   "lia",
   "lib",
   "lic",
   "lid",
   "lie",
   "lif",
   "lig",
   "lih",
   "lii",
   "lij",
   "lik",
   "lil",
   "lio",
   "lip",
   "liq",
   "lir",
   "lis",
   "liu",
   "liv",
   "liw",
   "lix",
   "liy",
   "liz",
   "lja",
   "lje",
   "lji",
   "ljl",
   "ljp",
   "ljw",
   "ljx",
   "lka",
   "lkb",
   "lkc",
   "lkd",
   "lke",
   "lkh",
   "lki",
   "lkj",
   "lkl",
   "lkm",
   "lkn",
   "lko",
   "lkr",
   "lks",
   "lkt",
   "lku",
   "lky",
   "lla",
   "llb",
   "llc",
   "lld",
   "lle",
   "llf",
   "llg",
   "llh",
   "lli",
   "llj",
   "llk",
   "lll",
   "llm",
   "lln",
   "llo",
   "llp",
   "llq",
   "lls",
   "llu",
   "llx",
   "lma",
   "lmb",
   "lmc",
   "lmd",
   "lme",
   "lmf",
   "lmg",
   "lmh",
   "lmi",
   "lmj",
   "lmk",
   "lml",
   "lmm",
   "lmn",
   "lmo",
   "lmp",
   "lmq",
   "lmr",
   "lmu",
   "lmv",
   "lmw",
   "lmx",
   "lmy",
   "lmz",
   "ln",
   "lna",
   "lnb",
   "lnd",
   "lng",
   "lnh",
   "lni",
   "lnj",
   "lnl",
   "lnm",
   "lnn",
   "lno",
   "lns",
   "lnu",
   "lnw",
   "lnz",
   "lo",
   "loa",
   "lob",
   "loc",
   "loe",
   "lof",
   "log",
   "loh",
   "loi",
   "loj",
   "lok",
   "lol",
   "lom",
   "lon",
   "loo",
   "lop",
   "loq",
   "lor",
   "los",
   "lot",
   "lou",
   "lov",
   "low",
   "lox",
   "loy",
   "loz",
   "lpa",
   "lpe",
   "lpn",
   "lpo",
   "lpx",
   "lra",
   "lrc",
   "lre",
   "lrg",
   "lri",
   "lrk",
   "lrl",
   "lrm",
   "lrn",
   "lro",
   "lrr",
   "lrt",
   "lrv",
   "lrz",
   "lsa",
   "lsd",
   "lse",
   "lsg",
   "lsh",
   "lsi",
   "lsl",
   "lsm",
   "lso",
   "lsp",
   "lsr",
   "lss",
   "lst",
   "lsy",
   "lt",
   "ltc",
   "ltg",
   "lti",
   "ltn",
   "lto",
   "lts",
   "ltu",
   "lu",
   "lua",
   "luc",
   "lud",
   "lue",
   "luf",
   "lui",
   "luj",
   "luk",
   "lul",
   "lum",
   "lun",
   "luo",
   "lup",
   "luq",
   "lur",
   "lus",
   "lut",
   "luu",
   "luv",
   "luw",
   "luy",
   "luz",
   "lv",
   "lva",
   "lvk",
   "lvs",
   "lvu",
   "lwa",
   "lwe",
   "lwg",
   "lwh",
   "lwl",
   "lwm",
   "lwo",
   "lwt",
   "lwu",
   "lww",
   "lya",
   "lyg",
   "lyn",
   "lzh",
   "lzl",
   "lzn",
   "lzz",
   "maa",
   "mab",
   "mad",
   "mae",
   "maf",
   "mag",
   "mai",
   "maj",
   "mak",
   "mam",
   "man",
   "map",
   "maq",
   "mas",
   "mat",
   "mau",
   "mav",
   "maw",
   "max",
   "maz",
   "mba",
   "mbb",
   "mbc",
   "mbd",
   "mbe",
   "mbf",
   "mbh",
   "mbi",
   "mbj",
   "mbk",
   "mbl",
   "mbm",
   "mbn",
   "mbo",
   "mbp",
   "mbq",
   "mbr",
   "mbs",
   "mbt",
   "mbu",
   "mbv",
   "mbw",
   "mbx",
   "mby",
   "mbz",
   "mca",
   "mcb",
   "mcc",
   "mcd",
   "mce",
   "mcf",
   "mcg",
   "mch",
   "mci",
   "mcj",
   "mck",
   "mcl",
   "mcm",
   "mcn",
   "mco",
   "mcp",
   "mcq",
   "mcr",
   "mcs",
   "mct",
   "mcu",
   "mcv",
   "mcw",
   "mcx",
   "mcy",
   "mcz",
   "mda",
   "mdb",
   "mdc",
   "mdd",
   "mde",
   "mdf",
   "mdg",
   "mdh",
   "mdi",
   "mdj",
   "mdk",
   "mdl",
   "mdm",
   "mdn",
   "mdp",
   "mdq",
   "mdr",
   "mds",
   "mdt",
   "mdu",
   "mdv",
   "mdw",
   "mdx",
   "mdy",
   "mdz",
   "mea",
   "meb",
   "mec",
   "med",
   "mee",
   "mef",
   "meh",
   "mei",
   "mej",
   "mek",
   "mel",
   "mem",
   "men",
   "meo",
   "mep",
   "meq",
   "mer",
   "mes",
   "met",
   "meu",
   "mev",
   "mew",
   "mey",
   "mez",
   "mfa",
   "mfb",
   "mfc",
   "mfd",
   "mfe",
   "mff",
   "mfg",
   "mfh",
   "mfi",
   "mfj",
   "mfk",
   "mfl",
   "mfm",
   "mfn",
   "mfo",
   "mfp",
   "mfq",
   "mfr",
   "mfs",
   "mft",
   "mfu",
   "mfv",
   "mfw",
   "mfx",
   "mfy",
   "mfz",
   "mg",
   "mga",
   "mgb",
   "mgc",
   "mgd",
   "mge",
   "mgf",
   "mgg",
   "mgh",
   "mgi",
   "mgj",
   "mgk",
   "mgl",
   "mgm",
   "mgn",
   "mgo",
   "mgp",
   "mgq",
   "mgr",
   "mgs",
   "mgt",
   "mgu",
   "mgv",
   "mgw",
   "mgy",
   "mgz",
   "mh",
   "mha",
   "mhb",
   "mhc",
   "mhd",
   "mhe",
   "mhf",
   "mhg",
   "mhh",
   "mhi",
   "mhj",
   "mhk",
   "mhl",
   "mhm",
   "mhn",
   "mho",
   "mhp",
   "mhq",
   "mhr",
   "mhs",
   "mht",
   "mhu",
   "mhw",
   "mhx",
   "mhy",
   "mhz",
   "mi",
   "mia",
   "mib",
   "mic",
   "mid",
   "mie",
   "mif",
   "mig",
   "mih",
   "mii",
   "mij",
   "mik",
   "mil",
   "mim",
   "min",
   "mio",
   "mip",
   "miq",
   "mir",
   "mis",
   "mit",
   "miu",
   "miw",
   "mix",
   "miy",
   "miz",
   "mjc",
   "mjd",
   "mje",
   "mjg",
   "mjh",
   "mji",
   "mjj",
   "mjk",
   "mjl",
   "mjm",
   "mjn",
   "mjo",
   "mjp",
   "mjq",
   "mjr",
   "mjs",
   "mjt",
   "mju",
   "mjv",
   "mjw",
   "mjx",
   "mjy",
   "mjz",
   "mk",
   "mka",
   "mkb",
   "mkc",
   "mke",
   "mkf",
   "mkg",
   "mkh",
   "mki",
   "mkj",
   "mkk",
   "mkl",
   "mkm",
   "mkn",
   "mko",
   "mkp",
   "mkq",
   "mkr",
   "mks",
   "mkt",
   "mku",
   "mkv",
   "mkw",
   "mkx",
   "mky",
   "mkz",
   "ml",
   "mla",
   "mlb",
   "mlc",
   "mle",
   "mlf",
   "mlh",
   "mli",
   "mlj",
   "mlk",
   "mll",
   "mlm",
   "mln",
   "mlo",
   "mlp",
   "mlq",
   "mlr",
   "mls",
   "mlu",
   "mlv",
   "mlw",
   "mlx",
   "mlz",
   "mma",
   "mmb",
   "mmc",
   "mmd",
   "mme",
   "mmf",
   "mmg",
   "mmh",
   "mmi",
   "mmj",
   "mmk",
   "mml",
   "mmm",
   "mmn",
   "mmo",
   "mmp",
   "mmq",
   "mmr",
   "mmt",
   "mmu",
   "mmv",
   "mmw",
   "mmx",
   "mmy",
   "mmz",
   "mn",
   "mna",
   "mnb",
   "mnc",
   "mnd",
   "mne",
   "mnf",
   "mng",
   "mnh",
   "mni",
   "mnj",
   "mnk",
   "mnl",
   "mnm",
   "mnn",
   "mno",
   "mnp",
   "mnq",
   "mnr",
   "mns",
   "mnu",
   "mnv",
   "mnw",
   "mnx",
   "mny",
   "mnz",
   "mo",
   "moa",
   "moc",
   "mod",
   "moe",
   "mog",
   "moh",
   "moi",
   "moj",
   "mok",
   "mom",
   "moo",
   "mop",
   "moq",
   "mor",
   "mos",
   "mot",
   "mou",
   "mov",
   "mow",
   "mox",
   "moy",
   "moz",
   "mpa",
   "mpb",
   "mpc",
   "mpd",
   "mpe",
   "mpg",
   "mph",
   "mpi",
   "mpj",
   "mpk",
   "mpl",
   "mpm",
   "mpn",
   "mpo",
   "mpp",
   "mpq",
   "mpr",
   "mps",
   "mpt",
   "mpu",
   "mpv",
   "mpw",
   "mpx",
   "mpy",
   "mpz",
   "mqa",
   "mqb",
   "mqc",
   "mqe",
   "mqf",
   "mqg",
   "mqh",
   "mqi",
   "mqj",
   "mqk",
   "mql",
   "mqm",
   "mqn",
   "mqo",
   "mqp",
   "mqq",
   "mqr",
   "mqs",
   "mqt",
   "mqu",
   "mqv",
   "mqw",
   "mqx",
   "mqy",
   "mqz",
   "mr",
   "mra",
   "mrb",
   "mrc",
   "mrd",
   "mre",
   "mrf",
   "mrg",
   "mrh",
   "mrj",
   "mrk",
   "mrl",
   "mrm",
   "mrn",
   "mro",
   "mrp",
   "mrq",
   "mrr",
   "mrs",
   "mrt",
   "mru",
   "mrv",
   "mrw",
   "mrx",
   "mry",
   "mrz",
   "ms",
   "msb",
   "msc",
   "msd",
   "mse",
   "msf",
   "msg",
   "msh",
   "msi",
   "msj",
   "msk",
   "msl",
   "msm",
   "msn",
   "mso",
   "msp",
   "msq",
   "msr",
   "mss",
   "msu",
   "msv",
   "msw",
   "msx",
   "msy",
   "msz",
   "mt",
   "mta",
   "mtb",
   "mtc",
   "mtd",
   "mte",
   "mtf",
   "mtg",
   "mth",
   "mti",
   "mtj",
   "mtk",
   "mtl",
   "mtm",
   "mtn",
   "mto",
   "mtp",
   "mtq",
   "mtr",
   "mts",
   "mtt",
   "mtu",
   "mtv",
   "mtw",
   "mtx",
   "mty",
   "mua",
   "mub",
   "muc",
   "mud",
   "mue",
   "mug",
   "muh",
   "mui",
   "muj",
   "muk",
   "mul",
   "mum",
   "mun",
   "muo",
   "mup",
   "muq",
   "mur",
   "mus",
   "mut",
   "muu",
   "muv",
   "mux",
   "muy",
   "muz",
   "mva",
   "mvb",
   "mvd",
   "mve",
   "mvf",
   "mvg",
   "mvh",
   "mvi",
   "mvk",
   "mvl",
   "mvm",
   "mvn",
   "mvo",
   "mvp",
   "mvq",
   "mvr",
   "mvs",
   "mvt",
   "mvu",
   "mvv",
   "mvw",
   "mvx",
   "mvy",
   "mvz",
   "mwa",
   "mwb",
   "mwc",
   "mwe",
   "mwf",
   "mwg",
   "mwh",
   "mwi",
   "mwj",
   "mwk",
   "mwl",
   "mwm",
   "mwn",
   "mwo",
   "mwp",
   "mwq",
   "mwr",
   "mws",
   "mwt",
   "mwu",
   "mwv",
   "mww",
   "mwx",
   "mwy",
   "mwz",
   "mxa",
   "mxb",
   "mxc",
   "mxd",
   "mxe",
   "mxf",
   "mxg",
   "mxh",
   "mxi",
   "mxj",
   "mxk",
   "mxl",
   "mxm",
   "mxn",
   "mxo",
   "mxp",
   "mxq",
   "mxr",
   "mxs",
   "mxt",
   "mxu",
   "mxv",
   "mxw",
   "mxx",
   "mxy",
   "mxz",
   "my",
   "myb",
   "myc",
   "myd",
   "mye",
   "myf",
   "myg",
   "myh",
   "myi",
   "myj",
   "myk",
   "myl",
   "mym",
   "myn",
   "myo",
   "myp",
   "myr",
   "mys",
   "myu",
   "myv",
   "myw",
   "myx",
   "myy",
   "myz",
   "mza",
   "mzb",
   "mzc",
   "mzd",
   "mze",
   "mzg",
   "mzh",
   "mzi",
   "mzj",
   "mzk",
   "mzl",
   "mzm",
   "mzn",
   "mzo",
   "mzp",
   "mzq",
   "mzr",
   "mzs",
   "mzt",
   "mzu",
   "mzv",
   "mzw",
   "mzx",
   "mzy",
   "mzz",
   "na",
   "naa",
   "nab",
   "nac",
   "nad",
   "nae",
   "naf",
   "nag",
   "nah",
   "nai",
   "naj",
   "nak",
   "nal",
   "nam",
   "nan",
   "nao",
   "nap",
   "naq",
   "nar",
   "nas",
   "nat",
   "naw",
   "nax",
   "nay",
   "naz",
   "nb",
   "nba",
   "nbb",
   "nbc",
   "nbd",
   "nbe",
   "nbg",
   "nbh",
   "nbi",
   "nbj",
   "nbk",
   "nbm",
   "nbn",
   "nbo",
   "nbp",
   "nbq",
   "nbr",
   "nbs",
   "nbt",
   "nbu",
   "nbv",
   "nbw",
   "nby",
   "nca",
   "ncb",
   "ncc",
   "ncd",
   "nce",
   "ncf",
   "ncg",
   "nch",
   "nci",
   "ncj",
   "nck",
   "ncl",
   "ncm",
   "ncn",
   "nco",
   "ncp",
   "ncr",
   "ncs",
   "nct",
   "ncu",
   "ncx",
   "ncz",
   "nd",
   "nda",
   "ndb",
   "ndc",
   "ndd",
   "ndf",
   "ndg",
   "ndh",
   "ndi",
   "ndj",
   "ndk",
   "ndl",
   "ndm",
   "ndn",
   "ndp",
   "ndq",
   "ndr",
   "nds",
   "ndt",
   "ndu",
   "ndv",
   "ndw",
   "ndx",
   "ndy",
   "ndz",
   "ne",
   "nea",
   "neb",
   "nec",
   "ned",
   "nee",
   "nef",
   "neg",
   "neh",
   "nei",
   "nej",
   "nek",
   "nem",
   "nen",
   "neo",
   "neq",
   "ner",
   "nes",
   "net",
   "neu",
   "nev",
   "new",
   "nex",
   "ney",
   "nez",
   "nfa",
   "nfd",
   "nfl",
   "nfr",
   "nfu",
   "ng",
   "nga",
   "ngb",
   "ngc",
   "ngd",
   "nge",
   "ngg",
   "ngh",
   "ngi",
   "ngj",
   "ngk",
   "ngl",
   "ngm",
   "ngn",
   "ngo",
   "ngp",
   "ngq",
   "ngr",
   "ngs",
   "ngt",
   "ngu",
   "ngv",
   "ngw",
   "ngx",
   "ngy",
   "ngz",
   "nha",
   "nhb",
   "nhc",
   "nhd",
   "nhe",
   "nhf",
   "nhg",
   "nhh",
   "nhi",
   "nhk",
   "nhm",
   "nhn",
   "nho",
   "nhp",
   "nhq",
   "nhr",
   "nht",
   "nhu",
   "nhv",
   "nhw",
   "nhx",
   "nhy",
   "nhz",
   "nia",
   "nib",
   "nic",
   "nid",
   "nie",
   "nif",
   "nig",
   "nih",
   "nii",
   "nij",
   "nik",
   "nil",
   "nim",
   "nin",
   "nio",
   "niq",
   "nir",
   "nis",
   "nit",
   "niu",
   "niv",
   "niw",
   "nix",
   "niy",
   "niz",
   "nja",
   "njb",
   "njd",
   "njh",
   "nji",
   "njj",
   "njl",
   "njm",
   "njn",
   "njo",
   "njr",
   "njs",
   "njt",
   "nju",
   "njx",
   "njy",
   "njz",
   "nka",
   "nkb",
   "nkc",
   "nkd",
   "nke",
   "nkf",
   "nkg",
   "nkh",
   "nki",
   "nkj",
   "nkk",
   "nkm",
   "nkn",
   "nko",
   "nkp",
   "nkq",
   "nkr",
   "nks",
   "nkt",
   "nku",
   "nkv",
   "nkw",
   "nkx",
   "nkz",
   "nl",
   "nla",
   "nlc",
   "nle",
   "nlg",
   "nli",
   "nlj",
   "nlk",
   "nll",
   "nlo",
   "nlq",
   "nlu",
   "nlv",
   "nlw",
   "nlx",
   "nly",
   "nlz",
   "nma",
   "nmb",
   "nmc",
   "nmd",
   "nme",
   "nmf",
   "nmg",
   "nmh",
   "nmi",
   "nmj",
   "nmk",
   "nml",
   "nmm",
   "nmn",
   "nmo",
   "nmp",
   "nmq",
   "nmr",
   "nms",
   "nmt",
   "nmu",
   "nmv",
   "nmw",
   "nmx",
   "nmy",
   "nmz",
   "nn",
   "nna",
   "nnb",
   "nnc",
   "nnd",
   "nne",
   "nnf",
   "nng",
   "nnh",
   "nni",
   "nnj",
   "nnk",
   "nnl",
   "nnm",
   "nnn",
   "nnp",
   "nnq",
   "nnr",
   "nns",
   "nnt",
   "nnu",
   "nnv",
   "nnw",
   "nnx",
   "nny",
   "nnz",
   "no",
   "noa",
   "noc",
   "nod",
   "noe",
   "nof",
   "nog",
   "noh",
   "noi",
   "noj",
   "nok",
   "nol",
   "nom",
   "non",
   "nop",
   "noq",
   "nos",
   "not",
   "nou",
   "nov",
   "now",
   "noy",
   "noz",
   "npa",
   "npb",
   "npg",
   "nph",
   "npi",
   "npl",
   "npn",
   "npo",
   "nps",
   "npu",
   "npy",
   "nqg",
   "nqk",
   "nqm",
   "nqn",
   "nqo",
   "nqq",
   "nqy",
   "nr",
   "nra",
   "nrb",
   "nrc",
   "nre",
   "nrg",
   "nri",
   "nrk",
   "nrl",
   "nrm",
   "nrn",
   "nrp",
   "nrr",
   "nrt",
   "nru",
   "nrx",
   "nrz",
   "nsa",
   "nsc",
   "nsd",
   "nse",
   "nsf",
   "nsg",
   "nsh",
   "nsi",
   "nsk",
   "nsl",
   "nsm",
   "nsn",
   "nso",
   "nsp",
   "nsq",
   "nsr",
   "nss",
   "nst",
   "nsu",
   "nsv",
   "nsw",
   "nsx",
   "nsy",
   "nsz",
   "nte",
   "ntg",
   "nti",
   "ntj",
   "ntk",
   "ntm",
   "nto",
   "ntp",
   "ntr",
   "nts",
   "ntu",
   "ntw",
   "ntx",
   "nty",
   "ntz",
   "nua",
   "nub",
   "nuc",
   "nud",
   "nue",
   "nuf",
   "nug",
   "nuh",
   "nui",
   "nuj",
   "nuk",
   "nul",
   "num",
   "nun",
   "nuo",
   "nup",
   "nuq",
   "nur",
   "nus",
   "nut",
   "nuu",
   "nuv",
   "nuw",
   "nux",
   "nuy",
   "nuz",
   "nv",
   "nvh",
   "nvm",
   "nvo",
   "nwa",
   "nwb",
   "nwc",
   "nwe",
   "nwg",
   "nwi",
   "nwm",
   "nwo",
   "nwr",
   "nwx",
   "nwy",
   "nxa",
   "nxd",
   "nxe",
   "nxg",
   "nxi",
   "nxk",
   "nxl",
   "nxm",
   "nxn",
   "nxq",
   "nxr",
   "nxu",
   "nxx",
   "ny",
   "nyb",
   "nyc",
   "nyd",
   "nye",
   "nyf",
   "nyg",
   "nyh",
   "nyi",
   "nyj",
   "nyk",
   "nyl",
   "nym",
   "nyn",
   "nyo",
   "nyp",
   "nyq",
   "nyr",
   "nys",
   "nyt",
   "nyu",
   "nyv",
   "nyw",
   "nyx",
   "nyy",
   "nza",
   "nzb",
   "nzi",
   "nzk",
   "nzm",
   "nzs",
   "nzu",
   "nzy",
   "nzz",
   "oaa",
   "oac",
   "oar",
   "oav",
   "obi",
   "obk",
   "obl",
   "obm",
   "obo",
   "obr",
   "obt",
   "obu",
   "oc",
   "oca",
   "och",
   "oco",
   "ocu",
   "oda",
   "odk",
   "odt",
   "odu",
   "ofo",
   "ofs",
   "ofu",
   "ogb",
   "ogc",
   "oge",
   "ogg",
   "ogo",
   "ogu",
   "oht",
   "ohu",
   "oia",
   "oin",
   "oj",
   "ojb",
   "ojc",
   "ojg",
   "ojp",
   "ojs",
   "ojv",
   "ojw",
   "oka",
   "okb",
   "okd",
   "oke",
   "okg",
   "okh",
   "oki",
   "okj",
   "okk",
   "okl",
   "okm",
   "okn",
   "oko",
   "okr",
   "oks",
   "oku",
   "okv",
   "okx",
   "ola",
   "old",
   "ole",
   "olk",
   "olm",
   "olo",
   "olr",
   "om",
   "oma",
   "omb",
   "omc",
   "ome",
   "omg",
   "omi",
   "omk",
   "oml",
   "omn",
   "omo",
   "omp",
   "omr",
   "omt",
   "omu",
   "omw",
   "omx",
   "ona",
   "onb",
   "one",
   "ong",
   "oni",
   "onj",
   "onk",
   "onn",
   "ono",
   "onp",
   "onr",
   "ons",
   "ont",
   "onu",
   "onw",
   "onx",
   "ood",
   "oog",
   "oon",
   "oor",
   "oos",
   "opa",
   "opk",
   "opm",
   "opo",
   "opt",
   "opy",
   "or",
   "ora",
   "orc",
   "ore",
   "org",
   "orh",
   "orn",
   "oro",
   "orr",
   "ors",
   "ort",
   "oru",
   "orv",
   "orw",
   "orx",
   "ory",
   "orz",
   "os",
   "osa",
   "osc",
   "osi",
   "oso",
   "osp",
   "ost",
   "osu",
   "osx",
   "ota",
   "otb",
   "otd",
   "ote",
   "oti",
   "otk",
   "otl",
   "otm",
   "otn",
   "oto",
   "otq",
   "otr",
   "ots",
   "ott",
   "otu",
   "otw",
   "otx",
   "oty",
   "otz",
   "oua",
   "oub",
   "oue",
   "oui",
   "oum",
   "oun",
   "owi",
   "owl",
   "oyb",
   "oyd",
   "oym",
   "oyy",
   "ozm",
   "pa",
   "paa",
   "pab",
   "pac",
   "pad",
   "pae",
   "paf",
   "pag",
   "pah",
   "pai",
   "pak",
   "pal",
   "pam",
   "pao",
   "pap",
   "paq",
   "par",
   "pas",
   "pat",
   "pau",
   "pav",
   "paw",
   "pax",
   "pay",
   "paz",
   "pbb",
   "pbc",
   "pbe",
   "pbf",
   "pbg",
   "pbh",
   "pbi",
   "pbl",
   "pbn",
   "pbo",
   "pbp",
   "pbr",
   "pbs",
   "pbt",
   "pbu",
   "pbv",
   "pby",
   "pca",
   "pcb",
   "pcc",
   "pcd",
   "pce",
   "pcf",
   "pcg",
   "pch",
   "pci",
   "pcj",
   "pck",
   "pcl",
   "pcm",
   "pcn",
   "pcp",
   "pcw",
   "pda",
   "pdc",
   "pdi",
   "pdn",
   "pdo",
   "pdt",
   "pdu",
   "pea",
   "peb",
   "ped",
   "pee",
   "pef",
   "peg",
   "peh",
   "pei",
   "pej",
   "pek",
   "pel",
   "pem",
   "peo",
   "pep",
   "peq",
   "pes",
   "pev",
   "pex",
   "pey",
   "pez",
   "pfa",
   "pfe",
   "pfl",
   "pga",
   "pgg",
   "pgi",
   "pgk",
   "pgl",
   "pgn",
   "pgs",
   "pgu",
   "pha",
   "phd",
   "phg",
   "phh",
   "phi",
   "phk",
   "phl",
   "phm",
   "phn",
   "pho",
   "phq",
   "phr",
   "pht",
   "phu",
   "phv",
   "phw",
   "pi",
   "pia",
   "pib",
   "pic",
   "pid",
   "pie",
   "pif",
   "pig",
   "pih",
   "pii",
   "pij",
   "pil",
   "pim",
   "pin",
   "pio",
   "pip",
   "pir",
   "pis",
   "pit",
   "piu",
   "piv",
   "piw",
   "pix",
   "piy",
   "piz",
   "pjt",
   "pka",
   "pkb",
   "pkc",
   "pkg",
   "pkh",
   "pkn",
   "pko",
   "pkp",
   "pkr",
   "pks",
   "pkt",
   "pku",
   "pl",
   "pla",
   "plb",
   "plc",
   "pld",
   "ple",
   "plg",
   "plh",
   "plj",
   "plk",
   "pll",
   "pln",
   "plo",
   "plp",
   "plq",
   "plr",
   "pls",
   "plt",
   "plu",
   "plv",
   "plw",
   "ply",
   "plz",
   "pma",
   "pmb",
   "pmc",
   "pmd",
   "pme",
   "pmf",
   "pmh",
   "pmi",
   "pmj",
   "pmk",
   "pml",
   "pmm",
   "pmn",
   "pmo",
   "pmq",
   "pmr",
   "pms",
   "pmt",
   "pmu",
   "pmw",
   "pmx",
   "pmy",
   "pmz",
   "pna",
   "pnb",
   "pnc",
   "pne",
   "png",
   "pnh",
   "pni",
   "pnj",
   "pnk",
   "pnl",
   "pnm",
   "pnn",
   "pno",
   "pnp",
   "pnq",
   "pnr",
   "pns",
   "pnt",
   "pnu",
   "pnv",
   "pnw",
   "pnx",
   "pny",
   "pnz",
   "poc",
   "pod",
   "poe",
   "pof",
   "pog",
   "poh",
   "poi",
   "pok",
   "pom",
   "pon",
   "poo",
   "pop",
   "poq",
   "pos",
   "pot",
   "pov",
   "pow",
   "pox",
   "poy",
   "ppa",
   "ppe",
   "ppi",
   "ppk",
   "ppl",
   "ppm",
   "ppn",
   "ppo",
   "ppp",
   "ppq",
   "pps",
   "ppt",
   "ppu",
   "pqa",
   "pqm",
   "pra",
   "prb",
   "prc",
   "prd",
   "pre",
   "prf",
   "prg",
   "prh",
   "pri",
   "prk",
   "prl",
   "prm",
   "prn",
   "pro",
   "prp",
   "prq",
   "prr",
   "prs",
   "prt",
   "pru",
   "prw",
   "prx",
   "pry",
   "prz",
   "ps",
   "psa",
   "psc",
   "psd",
   "pse",
   "psg",
   "psh",
   "psi",
   "psl",
   "psm",
   "psn",
   "pso",
   "psp",
   "psq",
   "psr",
   "pss",
   "pst",
   "psu",
   "psw",
   "psy",
   "pt",
   "pta",
   "pth",
   "pti",
   "ptn",
   "pto",
   "ptp",
   "ptr",
   "ptt",
   "ptu",
   "ptv",
   "ptw",
   "pty",
   "pua",
   "pub",
   "puc",
   "pud",
   "pue",
   "puf",
   "pug",
   "pui",
   "puj",
   "puk",
   "pum",
   "puo",
   "pup",
   "puq",
   "pur",
   "put",
   "puu",
   "puw",
   "pux",
   "puy",
   "puz",
   "pwa",
   "pwb",
   "pwg",
   "pwi",
   "pwm",
   "pwn",
   "pwo",
   "pwr",
   "pww",
   "pxm",
   "pye",
   "pym",
   "pyn",
   "pys",
   "pyu",
   "pyx",
   "pyy",
   "pzn",
   "qaa-qtz",
   "qu",
   "qua",
   "qub",
   "quc",
   "qud",
   "quf",
   "qug",
   "quh",
   "qui",
   "quk",
   "qul",
   "qum",
   "qun",
   "qup",
   "quq",
   "qur",
   "qus",
   "quv",
   "quw",
   "qux",
   "quy",
   "quz",
   "qva",
   "qvc",
   "qve",
   "qvh",
   "qvi",
   "qvj",
   "qvl",
   "qvm",
   "qvn",
   "qvo",
   "qvp",
   "qvs",
   "qvw",
   "qvy",
   "qvz",
   "qwa",
   "qwc",
   "qwh",
   "qwm",
   "qws",
   "qwt",
   "qxa",
   "qxc",
   "qxh",
   "qxl",
   "qxn",
   "qxo",
   "qxp",
   "qxq",
   "qxr",
   "qxs",
   "qxt",
   "qxu",
   "qxw",
   "qya",
   "qyp",
   "raa",
   "rab",
   "rac",
   "rad",
   "raf",
   "rag",
   "rah",
   "rai",
   "raj",
   "rak",
   "ral",
   "ram",
   "ran",
   "rao",
   "rap",
   "raq",
   "rar",
   "ras",
   "rat",
   "rau",
   "rav",
   "raw",
   "rax",
   "ray",
   "raz",
   "rbb",
   "rbk",
   "rbl",
   "rbp",
   "rcf",
   "rdb",
   "rea",
   "reb",
   "ree",
   "reg",
   "rei",
   "rej",
   "rel",
   "rem",
   "ren",
   "rer",
   "res",
   "ret",
   "rey",
   "rga",
   "rge",
   "rgk",
   "rgn",
   "rgr",
   "rgs",
   "rgu",
   "rhg",
   "rhp",
   "ria",
   "rie",
   "rif",
   "ril",
   "rim",
   "rin",
   "rir",
   "rit",
   "riu",
   "rjg",
   "rji",
   "rjs",
   "rka",
   "rkb",
   "rkh",
   "rki",
   "rkm",
   "rkt",
   "rkw",
   "rm",
   "rma",
   "rmb",
   "rmc",
   "rmd",
   "rme",
   "rmf",
   "rmg",
   "rmh",
   "rmi",
   "rmk",
   "rml",
   "rmm",
   "rmn",
   "rmo",
   "rmp",
   "rmq",
   "rms",
   "rmt",
   "rmu",
   "rmv",
   "rmw",
   "rmx",
   "rmy",
   "rmz",
   "rn",
   "rna",
   "rnd",
   "rng",
   "rnl",
   "rnn",
   "rnp",
   "rnr",
   "rnw",
   "ro",
   "roa",
   "rob",
   "roc",
   "rod",
   "roe",
   "rof",
   "rog",
   "rol",
   "rom",
   "roo",
   "rop",
   "ror",
   "rou",
   "row",
   "rpn",
   "rpt",
   "rri",
   "rro",
   "rrt",
   "rsb",
   "rsi",
   "rsl",
   "rtc",
   "rth",
   "rtm",
   "rtw",
   "ru",
   "rub",
   "ruc",
   "rue",
   "ruf",
   "rug",
   "ruh",
   "rui",
   "ruk",
   "ruo",
   "rup",
   "ruq",
   "rut",
   "ruu",
   "ruy",
   "ruz",
   "rw",
   "rwa",
   "rwk",
   "rwm",
   "rwo",
   "rwr",
   "rxd",
   "rxw",
   "ryn",
   "rys",
   "ryu",
   "sa",
   "saa",
   "sab",
   "sac",
   "sad",
   "sae",
   "saf",
   "sah",
   "sai",
   "saj",
   "sak",
   "sal",
   "sam",
   "sao",
   "sap",
   "saq",
   "sar",
   "sas",
   "sat",
   "sau",
   "sav",
   "saw",
   "sax",
   "say",
   "saz",
   "sba",
   "sbb",
   "sbc",
   "sbd",
   "sbe",
   "sbf",
   "sbg",
   "sbh",
   "sbi",
   "sbj",
   "sbk",
   "sbl",
   "sbm",
   "sbn",
   "sbo",
   "sbp",
   "sbq",
   "sbr",
   "sbs",
   "sbt",
   "sbu",
   "sbv",
   "sbw",
   "sbx",
   "sby",
   "sbz",
   "sc",
   "scb",
   "sce",
   "scf",
   "scg",
   "sch",
   "sci",
   "sck",
   "scl",
   "scn",
   "sco",
   "scp",
   "scq",
   "scs",
   "scu",
   "scv",
   "scw",
   "scx",
   "sd",
   "sda",
   "sdb",
   "sdc",
   "sde",
   "sdf",
   "sdg",
   "sdh",
   "sdj",
   "sdk",
   "sdl",
   "sdm",
   "sdn",
   "sdo",
   "sdp",
   "sdr",
   "sds",
   "sdt",
   "sdu",
   "sdx",
   "sdz",
   "se",
   "sea",
   "seb",
   "sec",
   "sed",
   "see",
   "sef",
   "seg",
   "seh",
   "sei",
   "sej",
   "sek",
   "sel",
   "sem",
   "sen",
   "seo",
   "sep",
   "seq",
   "ser",
   "ses",
   "set",
   "seu",
   "sev",
   "sew",
   "sey",
   "sez",
   "sfb",
   "sfe",
   "sfm",
   "sfs",
   "sfw",
   "sg",
   "sga",
   "sgb",
   "sgc",
   "sgd",
   "sge",
   "sgg",
   "sgh",
   "sgi",
   "sgj",
   "sgk",
   "sgm",
   "sgn",
   "sgo",
   "sgp",
   "sgr",
   "sgs",
   "sgt",
   "sgu",
   "sgw",
   "sgx",
   "sgy",
   "sgz",
   "sh",
   "sha",
   "shb",
   "shc",
   "shd",
   "she",
   "shg",
   "shh",
   "shi",
   "shj",
   "shk",
   "shl",
   "shm",
   "shn",
   "sho",
   "shp",
   "shq",
   "shr",
   "shs",
   "sht",
   "shu",
   "shv",
   "shw",
   "shx",
   "shy",
   "shz",
   "si",
   "sia",
   "sib",
   "sid",
   "sie",
   "sif",
   "sig",
   "sih",
   "sii",
   "sij",
   "sik",
   "sil",
   "sim",
   "sio",
   "sip",
   "siq",
   "sir",
   "sis",
   "sit",
   "siu",
   "siv",
   "siw",
   "six",
   "siy",
   "siz",
   "sja",
   "sjb",
   "sjd",
   "sje",
   "sjg",
   "sjk",
   "sjl",
   "sjm",
   "sjn",
   "sjo",
   "sjp",
   "sjr",
   "sjs",
   "sjt",
   "sju",
   "sjw",
   "sk",
   "ska",
   "skb",
   "skc",
   "skd",
   "ske",
   "skf",
   "skg",
   "skh",
   "ski",
   "skj",
   "skk",
   "skm",
   "skn",
   "sko",
   "skp",
   "skq",
   "skr",
   "sks",
   "skt",
   "sku",
   "skv",
   "skw",
   "skx",
   "sky",
   "skz",
   "sl",
   "sla",
   "slc",
   "sld",
   "sle",
   "slf",
   "slg",
   "slh",
   "sli",
   "slj",
   "sll",
   "slm",
   "sln",
   "slp",
   "slq",
   "slr",
   "sls",
   "slt",
   "slu",
   "slw",
   "slx",
   "sly",
   "slz",
   "sm",
   "sma",
   "smb",
   "smc",
   "smd",
   "smf",
   "smg",
   "smh",
   "smi",
   "smj",
   "smk",
   "sml",
   "smm",
   "smn",
   "smp",
   "smq",
   "smr",
   "sms",
   "smt",
   "smu",
   "smv",
   "smw",
   "smx",
   "smy",
   "smz",
   "sn",
   "snb",
   "snc",
   "sne",
   "snf",
   "sng",
   "snh",
   "sni",
   "snj",
   "snk",
   "snl",
   "snm",
   "snn",
   "sno",
   "snp",
   "snq",
   "snr",
   "sns",
   "snu",
   "snv",
   "snw",
   "snx",
   "sny",
   "snz",
   "so",
   "soa",
   "sob",
   "soc",
   "sod",
   "soe",
   "sog",
   "soh",
   "soi",
   "soj",
   "sok",
   "sol",
   "son",
   "soo",
   "sop",
   "soq",
   "sor",
   "sos",
   "sou",
   "sov",
   "sow",
   "sox",
   "soy",
   "soz",
   "spb",
   "spc",
   "spd",
   "spe",
   "spg",
   "spi",
   "spk",
   "spl",
   "spm",
   "spo",
   "spp",
   "spq",
   "spr",
   "sps",
   "spt",
   "spu",
   "spv",
   "spx",
   "spy",
   "sq",
   "sqa",
   "sqh",
   "sqk",
   "sqm",
   "sqn",
   "sqo",
   "sqq",
   "sqr",
   "sqs",
   "sqt",
   "squ",
   "sr",
   "sra",
   "srb",
   "src",
   "sre",
   "srf",
   "srg",
   "srh",
   "sri",
   "srk",
   "srl",
   "srm",
   "srn",
   "sro",
   "srq",
   "srr",
   "srs",
   "srt",
   "sru",
   "srv",
   "srw",
   "srx",
   "sry",
   "srz",
   "ss",
   "ssa",
   "ssb",
   "ssc",
   "ssd",
   "sse",
   "ssf",
   "ssg",
   "ssh",
   "ssi",
   "ssj",
   "ssk",
   "ssl",
   "ssm",
   "ssn",
   "sso",
   "ssp",
   "ssq",
   "ssr",
   "sss",
   "sst",
   "ssu",
   "ssv",
   "ssx",
   "ssy",
   "ssz",
   "st",
   "sta",
   "stb",
   "std",
   "ste",
   "stf",
   "stg",
   "sth",
   "sti",
   "stj",
   "stk",
   "stl",
   "stm",
   "stn",
   "sto",
   "stp",
   "stq",
   "str",
   "sts",
   "stt",
   "stu",
   "stv",
   "stw",
   "sty",
   "su",
   "sua",
   "sub",
   "suc",
   "sue",
   "sug",
   "sui",
   "suj",
   "suk",
   "suq",
   "sur",
   "sus",
   "sut",
   "suv",
   "suw",
   "sux",
   "suy",
   "suz",
   "sv",
   "sva",
   "svb",
   "svc",
   "sve",
   "svk",
   "svm",
   "svr",
   "svs",
   "svx",
   "sw",
   "swb",
   "swc",
   "swf",
   "swg",
   "swh",
   "swi",
   "swj",
   "swk",
   "swl",
   "swm",
   "swn",
   "swo",
   "swp",
   "swq",
   "swr",
   "sws",
   "swt",
   "swu",
   "swv",
   "sww",
   "swx",
   "swy",
   "sxb",
   "sxc",
   "sxe",
   "sxg",
   "sxk",
   "sxl",
   "sxm",
   "sxn",
   "sxo",
   "sxr",
   "sxs",
   "sxu",
   "sxw",
   "sya",
   "syb",
   "syc",
   "syi",
   "syk",
   "syl",
   "sym",
   "syn",
   "syo",
   "syr",
   "sys",
   "syw",
   "syy",
   "sza",
   "szb",
   "szc",
   "szd",
   "sze",
   "szg",
   "szl",
   "szn",
   "szp",
   "szv",
   "szw",
   "ta",
   "taa",
   "tab",
   "tac",
   "tad",
   "tae",
   "taf",
   "tag",
   "tai",
   "taj",
   "tak",
   "tal",
   "tan",
   "tao",
   "tap",
   "taq",
   "tar",
   "tas",
   "tau",
   "tav",
   "taw",
   "tax",
   "tay",
   "taz",
   "tba",
   "tbb",
   "tbc",
   "tbd",
   "tbe",
   "tbf",
   "tbg",
   "tbh",
   "tbi",
   "tbj",
   "tbk",
   "tbl",
   "tbm",
   "tbn",
   "tbo",
   "tbp",
   "tbr",
   "tbs",
   "tbt",
   "tbu",
   "tbv",
   "tbw",
   "tbx",
   "tby",
   "tbz",
   "tca",
   "tcb",
   "tcc",
   "tcd",
   "tce",
   "tcf",
   "tcg",
   "tch",
   "tci",
   "tck",
   "tcl",
   "tcm",
   "tcn",
   "tco",
   "tcp",
   "tcq",
   "tcs",
   "tct",
   "tcu",
   "tcw",
   "tcx",
   "tcy",
   "tcz",
   "tda",
   "tdb",
   "tdc",
   "tdd",
   "tde",
   "tdf",
   "tdg",
   "tdh",
   "tdi",
   "tdj",
   "tdk",
   "tdl",
   "tdn",
   "tdo",
   "tdq",
   "tdr",
   "tds",
   "tdt",
   "tdu",
   "tdv",
   "tdx",
   "tdy",
   "te",
   "tea",
   "teb",
   "tec",
   "ted",
   "tee",
   "tef",
   "teg",
   "teh",
   "tei",
   "tek",
   "tem",
   "ten",
   "teo",
   "tep",
   "teq",
   "ter",
   "tes",
   "tet",
   "teu",
   "tev",
   "tew",
   "tex",
   "tey",
   "tfi",
   "tfn",
   "tfo",
   "tfr",
   "tft",
   "tg",
   "tga",
   "tgb",
   "tgc",
   "tgd",
   "tge",
   "tgf",
   "tgh",
   "tgi",
   "tgj",
   "tgn",
   "tgo",
   "tgp",
   "tgq",
   "tgr",
   "tgs",
   "tgt",
   "tgu",
   "tgv",
   "tgw",
   "tgx",
   "tgy",
   "tgz",
   "th",
   "thc",
   "thd",
   "the",
   "thf",
   "thh",
   "thi",
   "thk",
   "thl",
   "thm",
   "thn",
   "thp",
   "thq",
   "thr",
   "ths",
   "tht",
   "thu",
   "thv",
   "thw",
   "thx",
   "thy",
   "thz",
   "ti",
   "tia",
   "tic",
   "tid",
   "tif",
   "tig",
   "tih",
   "tii",
   "tij",
   "tik",
   "til",
   "tim",
   "tin",
   "tio",
   "tip",
   "tiq",
   "tis",
   "tit",
   "tiu",
   "tiv",
   "tiw",
   "tix",
   "tiy",
   "tiz",
   "tja",
   "tjg",
   "tji",
   "tjl",
   "tjm",
   "tjn",
   "tjo",
   "tjs",
   "tju",
   "tjw",
   "tk",
   "tka",
   "tkb",
   "tkd",
   "tke",
   "tkf",
   "tkg",
   "tkl",
   "tkm",
   "tkn",
   "tkp",
   "tkq",
   "tkr",
   "tks",
   "tkt",
   "tku",
   "tkw",
   "tkx",
   "tkz",
   "tl",
   "tla",
   "tlb",
   "tlc",
   "tld",
   "tlf",
   "tlg",
   "tlh",
   "tli",
   "tlj",
   "tlk",
   "tll",
   "tlm",
   "tln",
   "tlo",
   "tlp",
   "tlq",
   "tlr",
   "tls",
   "tlt",
   "tlu",
   "tlv",
   "tlx",
   "tly",
   "tma",
   "tmb",
   "tmc",
   "tmd",
   "tme",
   "tmf",
   "tmg",
   "tmh",
   "tmi",
   "tmj",
   "tmk",
   "tml",
   "tmm",
   "tmn",
   "tmo",
   "tmp",
   "tmq",
   "tmr",
   "tms",
   "tmt",
   "tmu",
   "tmv",
   "tmw",
   "tmy",
   "tmz",
   "tn",
   "tna",
   "tnb",
   "tnc",
   "tnd",
   "tne",
   "tng",
   "tnh",
   "tni",
   "tnk",
   "tnl",
   "tnm",
   "tnn",
   "tno",
   "tnp",
   "tnq",
   "tnr",
   "tns",
   "tnt",
   "tnu",
   "tnv",
   "tnw",
   "tnx",
   "tny",
   "tnz",
   "to",
   "tob",
   "toc",
   "tod",
   "toe",
   "tof",
   "tog",
   "toh",
   "toi",
   "toj",
   "tol",
   "tom",
   "too",
   "top",
   "toq",
   "tor",
   "tos",
   "tou",
   "tov",
   "tow",
   "tox",
   "toy",
   "toz",
   "tpa",
   "tpc",
   "tpe",
   "tpf",
   "tpg",
   "tpi",
   "tpj",
   "tpk",
   "tpl",
   "tpm",
   "tpn",
   "tpo",
   "tpp",
   "tpq",
   "tpr",
   "tpt",
   "tpu",
   "tpv",
   "tpw",
   "tpx",
   "tpy",
   "tpz",
   "tqb",
   "tql",
   "tqm",
   "tqn",
   "tqo",
   "tqp",
   "tqq",
   "tqr",
   "tqt",
   "tqu",
   "tqw",
   "tr",
   "tra",
   "trb",
   "trc",
   "trd",
   "tre",
   "trf",
   "trg",
   "trh",
   "tri",
   "trj",
   "trl",
   "trm",
   "trn",
   "tro",
   "trp",
   "trq",
   "trr",
   "trs",
   "trt",
   "tru",
   "trv",
   "trw",
   "trx",
   "try",
   "trz",
   "ts",
   "tsa",
   "tsb",
   "tsc",
   "tsd",
   "tse",
   "tsf",
   "tsg",
   "tsh",
   "tsi",
   "tsj",
   "tsk",
   "tsl",
   "tsm",
   "tsp",
   "tsq",
   "tsr",
   "tss",
   "tst",
   "tsu",
   "tsv",
   "tsw",
   "tsx",
   "tsy",
   "tsz",
   "tt",
   "tta",
   "ttb",
   "ttc",
   "ttd",
   "tte",
   "ttf",
   "ttg",
   "tth",
   "tti",
   "ttj",
   "ttk",
   "ttl",
   "ttm",
   "ttn",
   "tto",
   "ttp",
   "ttq",
   "ttr",
   "tts",
   "ttt",
   "ttu",
   "ttv",
   "ttw",
   "tty",
   "ttz",
   "tua",
   "tub",
   "tuc",
   "tud",
   "tue",
   "tuf",
   "tug",
   "tuh",
   "tui",
   "tuj",
   "tul",
   "tum",
   "tun",
   "tuo",
   "tup",
   "tuq",
   "tus",
   "tut",
   "tuu",
   "tuv",
   "tux",
   "tuy",
   "tuz",
   "tva",
   "tvd",
   "tve",
   "tvk",
   "tvl",
   "tvm",
   "tvn",
   "tvo",
   "tvs",
   "tvt",
   "tvu",
   "tvw",
   "tvy",
   "tw",
   "twa",
   "twb",
   "twc",
   "twd",
   "twe",
   "twf",
   "twg",
   "twh",
   "twl",
   "twm",
   "twn",
   "two",
   "twp",
   "twq",
   "twr",
   "twt",
   "twu",
   "tww",
   "twx",
   "twy",
   "txa",
   "txb",
   "txc",
   "txe",
   "txg",
   "txh",
   "txi",
   "txm",
   "txn",
   "txo",
   "txq",
   "txr",
   "txs",
   "txt",
   "txu",
   "txx",
   "txy",
   "ty",
   "tya",
   "tye",
   "tyh",
   "tyi",
   "tyj",
   "tyl",
   "tyn",
   "typ",
   "tyr",
   "tys",
   "tyt",
   "tyu",
   "tyv",
   "tyx",
   "tyz",
   "tza",
   "tzh",
   "tzj",
   "tzl",
   "tzm",
   "tzn",
   "tzo",
   "tzx",
   "uam",
   "uan",
   "uar",
   "uba",
   "ubi",
   "ubl",
   "ubr",
   "ubu",
   "uby",
   "uda",
   "ude",
   "udg",
   "udi",
   "udj",
   "udl",
   "udm",
   "udu",
   "ues",
   "ufi",
   "ug",
   "uga",
   "ugb",
   "uge",
   "ugn",
   "ugo",
   "ugy",
   "uha",
   "uhn",
   "uis",
   "uiv",
   "uji",
   "uk",
   "uka",
   "ukg",
   "ukh",
   "ukl",
   "ukp",
   "ukq",
   "uks",
   "uku",
   "ukw",
   "uky",
   "ula",
   "ulb",
   "ulc",
   "ule",
   "ulf",
   "uli",
   "ulk",
   "ull",
   "ulm",
   "uln",
   "ulu",
   "ulw",
   "uma",
   "umb",
   "umc",
   "umd",
   "umg",
   "umi",
   "umm",
   "umn",
   "umo",
   "ump",
   "umr",
   "ums",
   "umu",
   "una",
   "und",
   "une",
   "ung",
   "unk",
   "unm",
   "unn",
   "unr",
   "unu",
   "unx",
   "unz",
   "uok",
   "upi",
   "upv",
   "ur",
   "ura",
   "urb",
   "urc",
   "ure",
   "urf",
   "urg",
   "urh",
   "uri",
   "urk",
   "url",
   "urm",
   "urn",
   "uro",
   "urp",
   "urr",
   "urt",
   "uru",
   "urv",
   "urw",
   "urx",
   "ury",
   "urz",
   "usa",
   "ush",
   "usi",
   "usk",
   "usp",
   "usu",
   "uta",
   "ute",
   "utp",
   "utr",
   "utu",
   "uum",
   "uun",
   "uur",
   "uuu",
   "uve",
   "uvh",
   "uvl",
   "uwa",
   "uya",
   "uz",
   "uzn",
   "uzs",
   "vaa",
   "vae",
   "vaf",
   "vag",
   "vah",
   "vai",
   "vaj",
   "val",
   "vam",
   "van",
   "vao",
   "vap",
   "var",
   "vas",
   "vau",
   "vav",
   "vay",
   "vbb",
   "vbk",
   "ve",
   "vec",
   "ved",
   "vel",
   "vem",
   "veo",
   "vep",
   "ver",
   "vgr",
   "vgt",
   "vi",
   "vic",
   "vid",
   "vif",
   "vig",
   "vil",
   "vin",
   "vis",
   "vit",
   "viv",
   "vka",
   "vki",
   "vkj",
   "vkk",
   "vkl",
   "vkm",
   "vko",
   "vkp",
   "vkt",
   "vku",
   "vlp",
   "vls",
   "vma",
   "vmb",
   "vmc",
   "vmd",
   "vme",
   "vmf",
   "vmg",
   "vmh",
   "vmi",
   "vmj",
   "vmk",
   "vml",
   "vmm",
   "vmp",
   "vmq",
   "vmr",
   "vms",
   "vmu",
   "vmv",
   "vmw",
   "vmx",
   "vmy",
   "vmz",
   "vnk",
   "vnm",
   "vnp",
   "vo",
   "vor",
   "vot",
   "vra",
   "vro",
   "vrs",
   "vrt",
   "vsi",
   "vsl",
   "vsv",
   "vto",
   "vum",
   "vun",
   "vut",
   "vwa",
   "wa",
   "waa",
   "wab",
   "wac",
   "wad",
   "wae",
   "waf",
   "wag",
   "wah",
   "wai",
   "waj",
   "wak",
   "wal",
   "wam",
   "wan",
   "wao",
   "wap",
   "waq",
   "war",
   "was",
   "wat",
   "wau",
   "wav",
   "waw",
   "wax",
   "way",
   "waz",
   "wba",
   "wbb",
   "wbe",
   "wbf",
   "wbh",
   "wbi",
   "wbj",
   "wbk",
   "wbl",
   "wbm",
   "wbp",
   "wbq",
   "wbr",
   "wbt",
   "wbv",
   "wbw",
   "wca",
   "wci",
   "wdd",
   "wdg",
   "wdj",
   "wdk",
   "wdu",
   "wdy",
   "wea",
   "wec",
   "wed",
   "weg",
   "weh",
   "wei",
   "wem",
   "wen",
   "weo",
   "wep",
   "wer",
   "wes",
   "wet",
   "weu",
   "wew",
   "wfg",
   "wga",
   "wgb",
   "wgg",
   "wgi",
   "wgo",
   "wgu",
   "wgy",
   "wha",
   "whg",
   "whk",
   "whu",
   "wib",
   "wic",
   "wie",
   "wif",
   "wig",
   "wih",
   "wii",
   "wij",
   "wik",
   "wil",
   "wim",
   "win",
   "wir",
   "wiu",
   "wiv",
   "wiy",
   "wja",
   "wji",
   "wka",
   "wkb",
   "wkd",
   "wkl",
   "wku",
   "wkw",
   "wky",
   "wla",
   "wlc",
   "wle",
   "wlg",
   "wli",
   "wlk",
   "wll",
   "wlm",
   "wlo",
   "wlr",
   "wls",
   "wlu",
   "wlv",
   "wlw",
   "wlx",
   "wly",
   "wma",
   "wmb",
   "wmc",
   "wmd",
   "wme",
   "wmh",
   "wmi",
   "wmm",
   "wmn",
   "wmo",
   "wms",
   "wmt",
   "wmw",
   "wmx",
   "wnb",
   "wnc",
   "wnd",
   "wne",
   "wng",
   "wni",
   "wnk",
   "wnm",
   "wnn",
   "wno",
   "wnp",
   "wnu",
   "wnw",
   "wny",
   "wo",
   "woa",
   "wob",
   "woc",
   "wod",
   "woe",
   "wof",
   "wog",
   "woi",
   "wok",
   "wom",
   "won",
   "woo",
   "wor",
   "wos",
   "wow",
   "woy",
   "wpc",
   "wra",
   "wrb",
   "wrd",
   "wrg",
   "wrh",
   "wri",
   "wrk",
   "wrl",
   "wrm",
   "wrn",
   "wro",
   "wrp",
   "wrr",
   "wrs",
   "wru",
   "wrv",
   "wrw",
   "wrx",
   "wry",
   "wrz",
   "wsa",
   "wsi",
   "wsk",
   "wsr",
   "wss",
   "wsu",
   "wsv",
   "wtf",
   "wth",
   "wti",
   "wtk",
   "wtm",
   "wtw",
   "wua",
   "wub",
   "wud",
   "wuh",
   "wul",
   "wum",
   "wun",
   "wur",
   "wut",
   "wuu",
   "wuv",
   "wux",
   "wuy",
   "wwa",
   "wwb",
   "wwo",
   "wwr",
   "www",
   "wxa",
   "wxw",
   "wya",
   "wyb",
   "wyi",
   "wym",
   "wyr",
   "wyy",
   "xaa",
   "xab",
   "xac",
   "xad",
   "xae",
   "xag",
   "xai",
   "xal",
   "xam",
   "xan",
   "xao",
   "xap",
   "xaq",
   "xar",
   "xas",
   "xat",
   "xau",
   "xav",
   "xaw",
   "xay",
   "xba",
   "xbb",
   "xbc",
   "xbd",
   "xbe",
   "xbg",
   "xbi",
   "xbj",
   "xbm",
   "xbn",
   "xbo",
   "xbp",
   "xbr",
   "xbw",
   "xbx",
   "xby",
   "xcb",
   "xcc",
   "xce",
   "xcg",
   "xch",
   "xcl",
   "xcm",
   "xcn",
   "xco",
   "xcr",
   "xct",
   "xcu",
   "xcv",
   "xcw",
   "xcy",
   "xda",
   "xdc",
   "xdk",
   "xdm",
   "xdy",
   "xeb",
   "xed",
   "xeg",
   "xel",
   "xem",
   "xep",
   "xer",
   "xes",
   "xet",
   "xeu",
   "xfa",
   "xga",
   "xgb",
   "xgd",
   "xgf",
   "xgg",
   "xgi",
   "xgl",
   "xgm",
   "xgr",
   "xgu",
   "xgw",
   "xh",
   "xha",
   "xhc",
   "xhd",
   "xhe",
   "xhr",
   "xht",
   "xhu",
   "xhv",
   "xib",
   "xii",
   "xil",
   "xin",
   "xip",
   "xir",
   "xiv",
   "xiy",
   "xjb",
   "xjt",
   "xka",
   "xkb",
   "xkc",
   "xkd",
   "xke",
   "xkf",
   "xkg",
   "xkh",
   "xki",
   "xkj",
   "xkk",
   "xkl",
   "xkn",
   "xko",
   "xkp",
   "xkq",
   "xkr",
   "xks",
   "xkt",
   "xku",
   "xkv",
   "xkw",
   "xkx",
   "xky",
   "xkz",
   "xla",
   "xlb",
   "xlc",
   "xld",
   "xle",
   "xlg",
   "xli",
   "xln",
   "xlo",
   "xlp",
   "xls",
   "xlu",
   "xly",
   "xma",
   "xmb",
   "xmc",
   "xmd",
   "xme",
   "xmf",
   "xmg",
   "xmh",
   "xmj",
   "xmk",
   "xml",
   "xmm",
   "xmn",
   "xmo",
   "xmp",
   "xmq",
   "xmr",
   "xms",
   "xmt",
   "xmu",
   "xmv",
   "xmw",
   "xmx",
   "xmy",
   "xmz",
   "xna",
   "xnb",
   "xng",
   "xnh",
   "xni",
   "xnk",
   "xnn",
   "xno",
   "xnr",
   "xns",
   "xnt",
   "xnu",
   "xny",
   "xnz",
   "xoc",
   "xod",
   "xog",
   "xoi",
   "xok",
   "xom",
   "xon",
   "xoo",
   "xop",
   "xor",
   "xow",
   "xpa",
   "xpc",
   "xpe",
   "xpg",
   "xpi",
   "xpj",
   "xpk",
   "xpm",
   "xpn",
   "xpo",
   "xpp",
   "xpq",
   "xpr",
   "xps",
   "xpt",
   "xpu",
   "xpy",
   "xqa",
   "xqt",
   "xra",
   "xrb",
   "xrd",
   "xre",
   "xrg",
   "xri",
   "xrm",
   "xrn",
   "xrq",
   "xrr",
   "xrt",
   "xru",
   "xrw",
   "xsa",
   "xsb",
   "xsc",
   "xsd",
   "xse",
   "xsh",
   "xsi",
   "xsj",
   "xsl",
   "xsm",
   "xsn",
   "xso",
   "xsp",
   "xsq",
   "xsr",
   "xss",
   "xsu",
   "xsv",
   "xsy",
   "xta",
   "xtb",
   "xtc",
   "xtd",
   "xte",
   "xtg",
   "xth",
   "xti",
   "xtj",
   "xtl",
   "xtm",
   "xtn",
   "xto",
   "xtp",
   "xtq",
   "xtr",
   "xts",
   "xtt",
   "xtu",
   "xtv",
   "xtw",
   "xty",
   "xtz",
   "xua",
   "xub",
   "xud",
   "xug",
   "xuj",
   "xul",
   "xum",
   "xun",
   "xuo",
   "xup",
   "xur",
   "xut",
   "xuu",
   "xve",
   "xvi",
   "xvn",
   "xvo",
   "xvs",
   "xwa",
   "xwc",
   "xwd",
   "xwe",
   "xwg",
   "xwj",
   "xwk",
   "xwl",
   "xwo",
   "xwr",
   "xwt",
   "xww",
   "xxb",
   "xxk",
   "xxm",
   "xxr",
   "xxt",
   "xya",
   "xyb",
   "xyj",
   "xyk",
   "xyl",
   "xyt",
   "xyy",
   "xzh",
   "xzm",
   "xzp",
   "yaa",
   "yab",
   "yac",
   "yad",
   "yae",
   "yaf",
   "yag",
   "yah",
   "yai",
   "yaj",
   "yak",
   "yal",
   "yam",
   "yan",
   "yao",
   "yap",
   "yaq",
   "yar",
   "yas",
   "yat",
   "yau",
   "yav",
   "yaw",
   "yax",
   "yay",
   "yaz",
   "yba",
   "ybb",
   "ybe",
   "ybh",
   "ybi",
   "ybj",
   "ybk",
   "ybl",
   "ybm",
   "ybn",
   "ybo",
   "ybx",
   "yby",
   "ych",
   "ycl",
   "ycn",
   "ycp",
   "yda",
   "ydd",
   "yde",
   "ydg",
   "ydk",
   "yds",
   "yea",
   "yec",
   "yee",
   "yei",
   "yej",
   "yel",
   "yer",
   "yes",
   "yet",
   "yeu",
   "yev",
   "yey",
   "yga",
   "ygi",
   "ygl",
   "ygm",
   "ygp",
   "ygr",
   "ygu",
   "ygw",
   "yha",
   "yhd",
   "yhl",
   "yi",
   "yia",
   "yif",
   "yig",
   "yih",
   "yii",
   "yij",
   "yik",
   "yil",
   "yim",
   "yin",
   "yip",
   "yiq",
   "yir",
   "yis",
   "yit",
   "yiu",
   "yiv",
   "yix",
   "yiz",
   "yka",
   "ykg",
   "yki",
   "ykk",
   "ykl",
   "ykm",
   "ykn",
   "yko",
   "ykr",
   "ykt",
   "yku",
   "yky",
   "yla",
   "ylb",
   "yle",
   "ylg",
   "yli",
   "yll",
   "ylm",
   "yln",
   "ylo",
   "ylr",
   "ylu",
   "yly",
   "ymb",
   "ymc",
   "ymd",
   "yme",
   "ymg",
   "ymh",
   "ymi",
   "ymk",
   "yml",
   "ymm",
   "ymn",
   "ymo",
   "ymp",
   "ymq",
   "ymr",
   "yms",
   "ymt",
   "ymx",
   "ymz",
   "yna",
   "ynd",
   "yne",
   "yng",
   "ynh",
   "ynk",
   "ynl",
   "ynn",
   "yno",
   "ynq",
   "yns",
   "ynu",
   "yo",
   "yob",
   "yog",
   "yoi",
   "yok",
   "yol",
   "yom",
   "yon",
   "yot",
   "yox",
   "yoy",
   "ypa",
   "ypb",
   "ypg",
   "yph",
   "ypk",
   "ypm",
   "ypn",
   "ypo",
   "ypp",
   "ypz",
   "yra",
   "yrb",
   "yre",
   "yri",
   "yrk",
   "yrl",
   "yrm",
   "yrn",
   "yrs",
   "yrw",
   "yry",
   "ysc",
   "ysd",
   "ysg",
   "ysl",
   "ysn",
   "yso",
   "ysp",
   "ysr",
   "yss",
   "ysy",
   "yta",
   "ytl",
   "ytp",
   "ytw",
   "yty",
   "yua",
   "yub",
   "yuc",
   "yud",
   "yue",
   "yuf",
   "yug",
   "yui",
   "yuj",
   "yuk",
   "yul",
   "yum",
   "yun",
   "yup",
   "yuq",
   "yur",
   "yut",
   "yuu",
   "yuw",
   "yux",
   "yuy",
   "yuz",
   "yva",
   "yvt",
   "ywa",
   "ywg",
   "ywl",
   "ywn",
   "ywq",
   "ywr",
   "ywt",
   "ywu",
   "yww",
   "yxa",
   "yxg",
   "yxl",
   "yxm",
   "yxu",
   "yxy",
   "yyr",
   "yyu",
   "yyz",
   "yzg",
   "yzk",
   "za",
   "zaa",
   "zab",
   "zac",
   "zad",
   "zae",
   "zaf",
   "zag",
   "zah",
   "zai",
   "zaj",
   "zak",
   "zal",
   "zam",
   "zao",
   "zap",
   "zaq",
   "zar",
   "zas",
   "zat",
   "zau",
   "zav",
   "zaw",
   "zax",
   "zay",
   "zaz",
   "zbc",
   "zbe",
   "zbl",
   "zbt",
   "zbw",
   "zca",
   "zch",
   "zdj",
   "zea",
   "zeg",
   "zeh",
   "zen",
   "zga",
   "zgb",
   "zgh",
   "zgm",
   "zgn",
   "zgr",
   "zh",
   "zhb",
   "zhd",
   "zhi",
   "zhn",
   "zhw",
   "zia",
   "zib",
   "zik",
   "zil",
   "zim",
   "zin",
   "zir",
   "ziw",
   "ziz",
   "zka",
   "zkb",
   "zkd",
   "zkg",
   "zkh",
   "zkk",
   "zkn",
   "zko",
   "zkp",
   "zkr",
   "zkt",
   "zku",
   "zkv",
   "zkz",
   "zlj",
   "zlm",
   "zln",
   "zlq",
   "zma",
   "zmb",
   "zmc",
   "zmd",
   "zme",
   "zmf",
   "zmg",
   "zmh",
   "zmi",
   "zmj",
   "zmk",
   "zml",
   "zmm",
   "zmn",
   "zmo",
   "zmp",
   "zmq",
   "zmr",
   "zms",
   "zmt",
   "zmu",
   "zmv",
   "zmw",
   "zmx",
   "zmy",
   "zmz",
   "zna",
   "znd",
   "zne",
   "zng",
   "znk",
   "zns",
   "zoc",
   "zoh",
   "zom",
   "zoo",
   "zoq",
   "zor",
   "zos",
   "zpa",
   "zpb",
   "zpc",
   "zpd",
   "zpe",
   "zpf",
   "zpg",
   "zph",
   "zpi",
   "zpj",
   "zpk",
   "zpl",
   "zpm",
   "zpn",
   "zpo",
   "zpp",
   "zpq",
   "zpr",
   "zps",
   "zpt",
   "zpu",
   "zpv",
   "zpw",
   "zpx",
   "zpy",
   "zpz",
   "zqe",
   "zra",
   "zrg",
   "zrn",
   "zro",
   "zrp",
   "zrs",
   "zsa",
   "zsk",
   "zsl",
   "zsm",
   "zsr",
   "zsu",
   "zte",
   "ztg",
   "ztl",
   "ztm",
   "ztn",
   "ztp",
   "ztq",
   "zts",
   "ztt",
   "ztu",
   "ztx",
   "zty",
   "zu",
   "zua",
   "zuh",
   "zum",
   "zun",
   "zuy",
   "zwa",
   "zxx",
   "zyb",
   "zyg",
   "zyj",
   "zyn",
   "zyp",
   "zza",
-    "zzj",
-))
+LANGUAGES = set(
+['aa',
'aaa',
'aab',
'aac',
'aad',
'aae',
'aaf',
'aag',
'aah',
'aai',
'aak',
'aal',
'aam',
'aan',
'aao',
'aap',
'aaq',
'aas',
'aat',
'aau',
'aaw',
'aax',
'aaz',
'ab',
'aba',
'abb',
'abc',
'abd',
'abe',
'abf',
'abg',
'abh',
'abi',
'abj',
'abl',
'abm',
'abn',
'abo',
'abp',
'abq',
'abr',
'abs',
'abt',
'abu',
'abv',
'abw',
'abx',
'aby',
'abz',
'aca',
'acb',
'acd',
'ace',
'acf',
'ach',
'aci',
'ack',
'acl',
'acm',
'acn',
'acp',
'acq',
'acr',
'acs',
'act',
'acu',
'acv',
'acw',
'acx',
'acy',
'acz',
'ada',
'adb',
'add',
'ade',
'adf',
'adg',
'adh',
'adi',
'adj',
'adl',
'adn',
'ado',
'adp',
'adq',
'adr',
'ads',
'adt',
'adu',
'adw',
'adx',
'ady',
'adz',
'ae',
'aea',
'aeb',
'aec',
'aed',
'aee',
'aek',
'ael',
'aem',
'aen',
'aeq',
'aer',
'aes',
'aeu',
'aew',
'aey',
'aez',
'af',
'afa',
'afb',
'afd',
'afe',
'afg',
'afh',
'afi',
'afk',
'afn',
'afo',
'afp',
'afs',
'aft',
'afu',
'afz',
'aga',
'agb',
'agc',
'agd',
'age',
'agf',
'agg',
'agh',
'agi',
'agj',
'agk',
'agl',
'agm',
'agn',
'ago',
'agq',
'agr',
'ags',
'agt',
'agu',
'agv',
'agw',
'agx',
'agy',
'agz',
'aha',
'ahb',
'ahg',
'ahh',
'ahi',
'ahk',
'ahl',
'ahm',
'ahn',
'aho',
'ahp',
'ahr',
'ahs',
'aht',
'aia',
'aib',
'aic',
'aid',
'aie',
'aif',
'aig',
'aih',
'aii',
'aij',
'aik',
'ail',
'aim',
'ain',
'aio',
'aip',
'aiq',
'air',
'ais',
'ait',
'aiw',
'aix',
'aiy',
'aja',
'ajg',
'aji',
'ajn',
'ajp',
'ajt',
'aju',
'ajw',
'ajz',
'ak',
'akb',
'akc',
'akd',
'ake',
'akf',
'akg',
'akh',
'aki',
'akj',
'akk',
'akl',
'akm',
'ako',
'akp',
'akq',
'akr',
'aks',
'akt',
'aku',
'akv',
'akw',
'akx',
'aky',
'akz',
'ala',
'alc',
'ald',
'ale',
'alf',
'alg',
'alh',
'ali',
'alj',
'alk',
'all',
'alm',
'aln',
'alo',
'alp',
'alq',
'alr',
'als',
'alt',
'alu',
'alw',
'alx',
'aly',
'alz',
'am',
'ama',
'amb',
'amc',
'ame',
'amf',
'amg',
'ami',
'amj',
'amk',
'aml',
'amm',
'amn',
'amo',
'amp',
'amq',
'amr',
'ams',
'amt',
'amu',
'amv',
'amw',
'amx',
'amy',
'amz',
'an',
'ana',
'anb',
'anc',
'and',
'ane',
'anf',
'ang',
'anh',
'ani',
'anj',
'ank',
'anl',
'anm',
'ann',
'ano',
'anp',
'anq',
'anr',
'ans',
'ant',
'anu',
'anv',
'anw',
'anx',
'any',
'anz',
'aoa',
'aob',
'aoc',
'aod',
'aoe',
'aof',
'aog',
'aoh',
'aoi',
'aoj',
'aok',
'aol',
'aom',
'aon',
'aor',
'aos',
'aot',
'aou',
'aox',
'aoz',
'apa',
'apb',
'apc',
'apd',
'ape',
'apf',
'apg',
'aph',
'api',
'apj',
'apk',
'apl',
'apm',
'apn',
'apo',
'app',
'apq',
'apr',
'aps',
'apt',
'apu',
'apv',
'apw',
'apx',
'apy',
'apz',
'aqc',
'aqd',
'aqg',
'aqm',
'aqn',
'aqp',
'aqr',
'aqz',
'ar',
'arb',
'arc',
'ard',
'are',
'arh',
'ari',
'arj',
'ark',
'arl',
'arn',
'aro',
'arp',
'arq',
'arr',
'ars',
'art',
'aru',
'arv',
'arw',
'arx',
'ary',
'arz',
'as',
'asa',
'asb',
'asc',
'asd',
'ase',
'asf',
'asg',
'ash',
'asi',
'asj',
'ask',
'asl',
'asn',
'aso',
'asp',
'asq',
'asr',
'ass',
'ast',
'asu',
'asv',
'asw',
'asx',
'asy',
'asz',
'ata',
'atb',
'atc',
'atd',
'ate',
'atg',
'ath',
'ati',
'atj',
'atk',
'atl',
'atm',
'atn',
'ato',
'atp',
'atq',
'atr',
'ats',
'att',
'atu',
'atv',
'atw',
'atx',
'aty',
'atz',
'aua',
'aub',
'auc',
'aud',
'aue',
'aug',
'auh',
'aui',
'auj',
'auk',
'aul',
'aum',
'aun',
'auo',
'aup',
'auq',
'aur',
'aus',
'aut',
'auu',
'auw',
'aux',
'auy',
'auz',
'av',
'avb',
'avd',
'avi',
'avk',
'avl',
'avm',
'avn',
'avo',
'avs',
'avt',
'avu',
'avv',
'awa',
'awb',
'awc',
'awe',
'awg',
'awh',
'awi',
'awk',
'awm',
'awn',
'awo',
'awr',
'aws',
'awt',
'awu',
'awv',
'aww',
'awx',
'awy',
'axb',
'axe',
'axg',
'axk',
'axl',
'axm',
'axx',
'ay',
'aya',
'ayb',
'ayc',
'ayd',
'aye',
'ayg',
'ayh',
'ayi',
'ayk',
'ayl',
'ayn',
'ayo',
'ayp',
'ayq',
'ayr',
'ays',
'ayt',
'ayu',
'ayy',
'ayz',
'az',
'aza',
'azb',
'azd',
'azg',
'azj',
'azm',
'azn',
'azo',
'azt',
'azz',
'ba',
'baa',
'bab',
'bac',
'bad',
'bae',
'baf',
'bag',
'bah',
'bai',
'baj',
'bal',
'ban',
'bao',
'bap',
'bar',
'bas',
'bat',
'bau',
'bav',
'baw',
'bax',
'bay',
'bba',
'bbb',
'bbc',
'bbd',
'bbe',
'bbf',
'bbg',
'bbh',
'bbi',
'bbj',
'bbk',
'bbl',
'bbm',
'bbn',
'bbo',
'bbp',
'bbq',
'bbr',
'bbs',
'bbt',
'bbu',
'bbv',
'bbw',
'bbx',
'bby',
'bbz',
'bca',
'bcb',
'bcc',
'bcd',
'bce',
'bcf',
'bcg',
'bch',
'bci',
'bcj',
'bck',
'bcl',
'bcm',
'bcn',
'bco',
'bcp',
'bcq',
'bcr',
'bcs',
'bct',
'bcu',
'bcv',
'bcw',
'bcy',
'bcz',
'bda',
'bdb',
'bdc',
'bdd',
'bde',
'bdf',
'bdg',
'bdh',
'bdi',
'bdj',
'bdk',
'bdl',
'bdm',
'bdn',
'bdo',
'bdp',
'bdq',
'bdr',
'bds',
'bdt',
'bdu',
'bdv',
'bdw',
'bdx',
'bdy',
'bdz',
'be',
'bea',
'beb',
'bec',
'bed',
'bee',
'bef',
'beg',
'beh',
'bei',
'bej',
'bek',
'bem',
'beo',
'bep',
'beq',
'ber',
'bes',
'bet',
'beu',
'bev',
'bew',
'bex',
'bey',
'bez',
'bfa',
'bfb',
'bfc',
'bfd',
'bfe',
'bff',
'bfg',
'bfh',
'bfi',
'bfj',
'bfk',
'bfl',
'bfm',
'bfn',
'bfo',
'bfp',
'bfq',
'bfr',
'bfs',
'bft',
'bfu',
'bfw',
'bfx',
'bfy',
'bfz',
'bg',
'bga',
'bgb',
'bgc',
'bgd',
'bge',
'bgf',
'bgg',
'bgi',
'bgj',
'bgk',
'bgl',
'bgm',
'bgn',
'bgo',
'bgp',
'bgq',
'bgr',
'bgs',
'bgt',
'bgu',
'bgv',
'bgw',
'bgx',
'bgy',
'bgz',
'bh',
'bha',
'bhb',
'bhc',
'bhd',
'bhe',
'bhf',
'bhg',
'bhh',
'bhi',
'bhj',
'bhl',
'bhm',
'bhn',
'bho',
'bhp',
'bhq',
'bhr',
'bhs',
'bht',
'bhu',
'bhv',
'bhw',
'bhx',
'bhy',
'bhz',
'bi',
'bia',
'bib',
'bic',
'bid',
'bie',
'bif',
'big',
'bij',
'bik',
'bil',
'bim',
'bin',
'bio',
'bip',
'biq',
'bir',
'bit',
'biu',
'biv',
'biw',
'bix',
'biy',
'biz',
'bja',
'bjb',
'bjc',
'bje',
'bjf',
'bjg',
'bjh',
'bji',
'bjj',
'bjk',
'bjl',
'bjm',
'bjn',
'bjo',
'bjp',
'bjr',
'bjs',
'bjt',
'bju',
'bjv',
'bjw',
'bjx',
'bjy',
'bjz',
'bka',
'bkc',
'bkd',
'bkf',
'bkg',
'bkh',
'bki',
'bkj',
'bkk',
'bkl',
'bkm',
'bkn',
'bko',
'bkp',
'bkq',
'bkr',
'bks',
'bkt',
'bku',
'bkv',
'bkw',
'bkx',
'bky',
'bkz',
'bla',
'blb',
'blc',
'bld',
'ble',
'blf',
'blg',
'blh',
'bli',
'blj',
'blk',
'bll',
'blm',
'bln',
'blo',
'blp',
'blq',
'blr',
'bls',
'blt',
'blv',
'blw',
'blx',
'bly',
'blz',
'bm',
'bma',
'bmb',
'bmc',
'bmd',
'bme',
'bmf',
'bmg',
'bmh',
'bmi',
'bmj',
'bmk',
'bml',
'bmm',
'bmn',
'bmo',
'bmp',
'bmq',
'bmr',
'bms',
'bmt',
'bmu',
'bmv',
'bmw',
'bmx',
'bmy',
'bmz',
'bn',
'bna',
'bnb',
'bnc',
'bnd',
'bne',
'bnf',
'bng',
'bni',
'bnj',
'bnk',
'bnl',
'bnm',
'bnn',
'bno',
'bnp',
'bnq',
'bnr',
'bns',
'bnt',
'bnu',
'bnv',
'bnw',
'bnx',
'bny',
'bnz',
'bo',
'boa',
'bob',
'boe',
'bof',
'bog',
'boh',
'boi',
'boj',
'bok',
'bol',
'bom',
'bon',
'boo',
'bop',
'boq',
'bor',
'bot',
'bou',
'bov',
'bow',
'box',
'boy',
'boz',
'bpa',
'bpb',
'bpd',
'bpg',
'bph',
'bpi',
'bpj',
'bpk',
'bpl',
'bpm',
'bpn',
'bpo',
'bpp',
'bpq',
'bpr',
'bps',
'bpt',
'bpu',
'bpv',
'bpw',
'bpx',
'bpy',
'bpz',
'bqa',
'bqb',
'bqc',
'bqd',
'bqf',
'bqg',
'bqh',
'bqi',
'bqj',
'bqk',
'bql',
'bqm',
'bqn',
'bqo',
'bqp',
'bqq',
'bqr',
'bqs',
'bqt',
'bqu',
'bqv',
'bqw',
'bqx',
'bqy',
'bqz',
'br',
'bra',
'brb',
'brc',
'brd',
'brf',
'brg',
'brh',
'bri',
'brj',
'brk',
'brl',
'brm',
'brn',
'bro',
'brp',
'brq',
'brr',
'brs',
'brt',
'bru',
'brv',
'brw',
'brx',
'bry',
'brz',
'bs',
'bsa',
'bsb',
'bsc',
'bse',
'bsf',
'bsg',
'bsh',
'bsi',
'bsj',
'bsk',
'bsl',
'bsm',
'bsn',
'bso',
'bsp',
'bsq',
'bsr',
'bss',
'bst',
'bsu',
'bsv',
'bsw',
'bsx',
'bsy',
'bta',
'btc',
'btd',
'bte',
'btf',
'btg',
'bth',
'bti',
'btj',
'btk',
'btl',
'btm',
'btn',
'bto',
'btp',
'btq',
'btr',
'bts',
'btt',
'btu',
'btv',
'btw',
'btx',
'bty',
'btz',
'bua',
'bub',
'buc',
'bud',
'bue',
'buf',
'bug',
'buh',
'bui',
'buj',
'buk',
'bum',
'bun',
'buo',
'bup',
'buq',
'bus',
'but',
'buu',
'buv',
'buw',
'bux',
'buy',
'buz',
'bva',
'bvb',
'bvc',
'bvd',
'bve',
'bvf',
'bvg',
'bvh',
'bvi',
'bvj',
'bvk',
'bvl',
'bvm',
'bvn',
'bvo',
'bvp',
'bvq',
'bvr',
'bvt',
'bvu',
'bvv',
'bvw',
'bvx',
'bvy',
'bvz',
'bwa',
'bwb',
'bwc',
'bwd',
'bwe',
'bwf',
'bwg',
'bwh',
'bwi',
'bwj',
'bwk',
'bwl',
'bwm',
'bwn',
'bwo',
'bwp',
'bwq',
'bwr',
'bws',
'bwt',
'bwu',
'bww',
'bwx',
'bwy',
'bwz',
'bxa',
'bxb',
'bxc',
'bxd',
'bxe',
'bxf',
'bxg',
'bxh',
'bxi',
'bxj',
'bxk',
'bxl',
'bxm',
'bxn',
'bxo',
'bxp',
'bxq',
'bxr',
'bxs',
'bxu',
'bxv',
'bxw',
'bxx',
'bxz',
'bya',
'byb',
'byc',
'byd',
'bye',
'byf',
'byg',
'byh',
'byi',
'byj',
'byk',
'byl',
'bym',
'byn',
'byo',
'byp',
'byq',
'byr',
'bys',
'byt',
'byv',
'byw',
'byx',
'byy',
'byz',
'bza',
'bzb',
'bzc',
'bzd',
'bze',
'bzf',
'bzg',
'bzh',
'bzi',
'bzj',
'bzk',
'bzl',
'bzm',
'bzn',
'bzo',
'bzp',
'bzq',
'bzr',
'bzs',
'bzt',
'bzu',
'bzv',
'bzw',
'bzx',
'bzy',
'bzz',
'ca',
'caa',
'cab',
'cac',
'cad',
'cae',
'caf',
'cag',
'cah',
'cai',
'caj',
'cak',
'cal',
'cam',
'can',
'cao',
'cap',
'caq',
'car',
'cas',
'cau',
'cav',
'caw',
'cax',
'cay',
'caz',
'cbb',
'cbc',
'cbd',
'cbe',
'cbg',
'cbh',
'cbi',
'cbj',
'cbk',
'cbl',
'cbn',
'cbo',
'cbr',
'cbs',
'cbt',
'cbu',
'cbv',
'cbw',
'cby',
'cca',
'ccc',
'ccd',
'cce',
'ccg',
'cch',
'ccj',
'ccl',
'ccm',
'cco',
'ccp',
'ccr',
'cda',
'cde',
'cdf',
'cdg',
'cdh',
'cdi',
'cdj',
'cdm',
'cdn',
'cdo',
'cdr',
'cds',
'cdy',
'cdz',
'ce',
'cea',
'ceb',
'ceg',
'cek',
'cel',
'cen',
'cet',
'cfa',
'cfd',
'cfg',
'cfm',
'cga',
'cgc',
'cgg',
'cgk',
'ch',
'chb',
'chc',
'chd',
'chf',
'chg',
'chh',
'chj',
'chk',
'chl',
'chm',
'chn',
'cho',
'chp',
'chq',
'chr',
'cht',
'chw',
'chx',
'chy',
'chz',
'cia',
'cib',
'cic',
'cid',
'cie',
'cih',
'cik',
'cim',
'cin',
'cip',
'cir',
'ciw',
'ciy',
'cja',
'cje',
'cjh',
'cji',
'cjk',
'cjm',
'cjn',
'cjo',
'cjp',
'cjs',
'cjv',
'cjy',
'ckb',
'ckh',
'ckl',
'ckn',
'cko',
'ckq',
'ckr',
'cks',
'ckt',
'cku',
'ckv',
'ckx',
'cky',
'ckz',
'cla',
'clc',
'cld',
'cle',
'clh',
'cli',
'clj',
'clk',
'cll',
'clm',
'clo',
'clt',
'clu',
'clw',
'cly',
'cma',
'cmc',
'cme',
'cmg',
'cmi',
'cml',
'cmm',
'cmn',
'cmo',
'cmr',
'cms',
'cmt',
'cna',
'cnb',
'cnc',
'cng',
'cnh',
'cni',
'cnk',
'cnl',
'cno',
'cns',
'cnt',
'cnu',
'cnw',
'cnx',
'co',
'coa',
'cob',
'coc',
'cod',
'coe',
'cof',
'cog',
'coh',
'coj',
'cok',
'col',
'com',
'con',
'coo',
'cop',
'coq',
'cot',
'cou',
'cov',
'cow',
'cox',
'coy',
'coz',
'cpa',
'cpb',
'cpc',
'cpe',
'cpf',
'cpg',
'cpi',
'cpn',
'cpo',
'cpp',
'cps',
'cpu',
'cpx',
'cpy',
'cqd',
'cqu',
'cr',
'cra',
'crb',
'crc',
'crd',
'crf',
'crg',
'crh',
'cri',
'crj',
'crk',
'crl',
'crm',
'crn',
'cro',
'crp',
'crq',
'crr',
'crs',
'crt',
'crv',
'crw',
'crx',
'cry',
'crz',
'cs',
'csa',
'csb',
'csc',
'csd',
'cse',
'csf',
'csg',
'csh',
'csi',
'csj',
'csk',
'csl',
'csm',
'csn',
'cso',
'csq',
'csr',
'css',
'cst',
'csv',
'csw',
'csy',
'csz',
'cta',
'ctc',
'ctd',
'cte',
'ctg',
'cth',
'ctl',
'ctm',
'ctn',
'cto',
'ctp',
'cts',
'ctt',
'ctu',
'ctz',
'cu',
'cua',
'cub',
'cuc',
'cug',
'cuh',
'cui',
'cuj',
'cuk',
'cul',
'cum',
'cuo',
'cup',
'cuq',
'cur',
'cus',
'cut',
'cuu',
'cuv',
'cuw',
'cux',
'cv',
'cvg',
'cvn',
'cwa',
'cwb',
'cwd',
'cwe',
'cwg',
'cwt',
'cy',
'cya',
'cyb',
'cyo',
'czh',
'czk',
'czn',
'czo',
'czt',
'da',
'daa',
'dac',
'dad',
'dae',
'dag',
'dah',
'dai',
'daj',
'dak',
'dal',
'dam',
'dao',
'daq',
'dar',
'das',
'dau',
'dav',
'daw',
'dax',
'day',
'daz',
'dba',
'dbb',
'dbd',
'dbe',
'dbf',
'dbg',
'dbi',
'dbj',
'dbl',
'dbm',
'dbn',
'dbo',
'dbp',
'dbq',
'dbr',
'dbt',
'dbu',
'dbv',
'dbw',
'dby',
'dcc',
'dcr',
'dda',
'ddd',
'dde',
'ddg',
'ddi',
'ddj',
'ddn',
'ddo',
'ddr',
'dds',
'ddw',
'de',
'dec',
'ded',
'dee',
'def',
'deg',
'deh',
'dei',
'dek',
'del',
'dem',
'den',
'dep',
'deq',
'der',
'des',
'dev',
'dez',
'dga',
'dgb',
'dgc',
'dgd',
'dge',
'dgg',
'dgh',
'dgi',
'dgk',
'dgl',
'dgn',
'dgo',
'dgr',
'dgs',
'dgt',
'dgu',
'dgw',
'dgx',
'dgz',
'dhd',
'dhg',
'dhi',
'dhl',
'dhm',
'dhn',
'dho',
'dhr',
'dhs',
'dhu',
'dhv',
'dhw',
'dhx',
'dia',
'dib',
'dic',
'did',
'dif',
'dig',
'dih',
'dii',
'dij',
'dik',
'dil',
'dim',
'din',
'dio',
'dip',
'diq',
'dir',
'dis',
'dit',
'diu',
'diw',
'dix',
'diy',
'diz',
'dja',
'djb',
'djc',
'djd',
'dje',
'djf',
'dji',
'djj',
'djk',
'djm',
'djn',
'djo',
'djr',
'dju',
'djw',
'dka',
'dkk',
'dkr',
'dks',
'dkx',
'dlg',
'dlk',
'dlm',
'dln',
'dma',
'dmb',
'dmc',
'dmd',
'dme',
'dmg',
'dmk',
'dml',
'dmm',
'dmo',
'dmr',
'dms',
'dmu',
'dmv',
'dmw',
'dmx',
'dmy',
'dna',
'dnd',
'dne',
'dng',
'dni',
'dnj',
'dnk',
'dnn',
'dnr',
'dnt',
'dnu',
'dnv',
'dnw',
'dny',
'doa',
'dob',
'doc',
'doe',
'dof',
'doh',
'doi',
'dok',
'dol',
'don',
'doo',
'dop',
'doq',
'dor',
'dos',
'dot',
'dov',
'dow',
'dox',
'doy',
'doz',
'dpp',
'dra',
'drb',
'drc',
'drd',
'dre',
'drg',
'dri',
'drl',
'drn',
'dro',
'drq',
'drr',
'drs',
'drt',
'dru',
'dry',
'dsb',
'dse',
'dsh',
'dsi',
'dsl',
'dsn',
'dso',
'dsq',
'dta',
'dtb',
'dtd',
'dth',
'dti',
'dtk',
'dtm',
'dto',
'dtp',
'dtr',
'dts',
'dtt',
'dtu',
'dty',
'dua',
'dub',
'duc',
'dud',
'due',
'duf',
'dug',
'duh',
'dui',
'duj',
'duk',
'dul',
'dum',
'dun',
'duo',
'dup',
'duq',
'dur',
'dus',
'duu',
'duv',
'duw',
'dux',
'duy',
'duz',
'dv',
'dva',
'dwa',
'dwr',
'dws',
'dww',
'dya',
'dyb',
'dyd',
'dyg',
'dyi',
'dym',
'dyn',
'dyo',
'dyu',
'dyy',
'dz',
'dza',
'dzd',
'dze',
'dzg',
'dzl',
'dzn',
'eaa',
'ebg',
'ebk',
'ebo',
'ebr',
'ebu',
'ecr',
'ecs',
'ecy',
'ee',
'eee',
'efa',
'efe',
'efi',
'ega',
'egl',
'ego',
'egy',
'ehu',
'eip',
'eit',
'eiv',
'eja',
'eka',
'ekc',
'eke',
'ekg',
'eki',
'ekk',
'ekl',
'ekm',
'eko',
'ekp',
'ekr',
'eky',
'el',
'ele',
'elh',
'eli',
'elk',
'elm',
'elo',
'elu',
'elx',
'ema',
'emb',
'eme',
'emg',
'emi',
'emk',
'emm',
'emn',
'emo',
'emp',
'ems',
'emu',
'emw',
'emx',
'emy',
'en',
'ena',
'enb',
'enc',
'end',
'enf',
'enh',
'enm',
'enn',
'eno',
'enq',
'enr',
'enu',
'env',
'enw',
'eo',
'eot',
'epi',
'era',
'erg',
'erh',
'eri',
'erk',
'ero',
'err',
'ers',
'ert',
'erw',
'es',
'ese',
'esh',
'esi',
'esk',
'esl',
'esm',
'esn',
'eso',
'esq',
'ess',
'esu',
'et',
'etb',
'etc',
'eth',
'etn',
'eto',
'etr',
'ets',
'ett',
'etu',
'etx',
'etz',
'eu',
'eve',
'evh',
'evn',
'ewo',
'ext',
'eya',
'eyo',
'eza',
'eze',
'fa',
'faa',
'fab',
'fad',
'faf',
'fag',
'fah',
'fai',
'faj',
'fak',
'fal',
'fam',
'fan',
'fap',
'far',
'fat',
'fau',
'fax',
'fay',
'faz',
'fbl',
'fcs',
'fer',
'ff',
'ffi',
'ffm',
'fgr',
'fi',
'fia',
'fie',
'fil',
'fip',
'fir',
'fit',
'fiu',
'fiw',
'fj',
'fkk',
'fkv',
'fla',
'flh',
'fli',
'fll',
'fln',
'flr',
'fly',
'fmp',
'fmu',
'fng',
'fni',
'fo',
'fod',
'foi',
'fom',
'fon',
'for',
'fos',
'fpe',
'fqs',
'fr',
'frc',
'frd',
'frk',
'frm',
'fro',
'frp',
'frq',
'frr',
'frs',
'frt',
'fse',
'fsl',
'fss',
'fub',
'fuc',
'fud',
'fue',
'fuf',
'fuh',
'fui',
'fuj',
'fum',
'fun',
'fuq',
'fur',
'fut',
'fuu',
'fuv',
'fuy',
'fvr',
'fwa',
'fwe',
'fy',
'ga',
'gaa',
'gab',
'gac',
'gad',
'gae',
'gaf',
'gag',
'gah',
'gai',
'gaj',
'gak',
'gal',
'gam',
'gan',
'gao',
'gap',
'gaq',
'gar',
'gas',
'gat',
'gau',
'gaw',
'gax',
'gay',
'gaz',
'gba',
'gbb',
'gbd',
'gbe',
'gbf',
'gbg',
'gbh',
'gbi',
'gbj',
'gbk',
'gbl',
'gbm',
'gbn',
'gbo',
'gbp',
'gbq',
'gbr',
'gbs',
'gbu',
'gbv',
'gbw',
'gbx',
'gby',
'gbz',
'gcc',
'gcd',
'gce',
'gcf',
'gcl',
'gcn',
'gcr',
'gct',
'gd',
'gda',
'gdb',
'gdc',
'gdd',
'gde',
'gdf',
'gdg',
'gdh',
'gdi',
'gdj',
'gdk',
'gdl',
'gdm',
'gdn',
'gdo',
'gdq',
'gdr',
'gds',
'gdt',
'gdu',
'gdx',
'gea',
'geb',
'gec',
'ged',
'geg',
'geh',
'gei',
'gej',
'gek',
'gel',
'gem',
'geq',
'ges',
'gew',
'gex',
'gey',
'gez',
'gfk',
'gft',
'gfx',
'gga',
'ggb',
'ggd',
'gge',
'ggg',
'ggk',
'ggl',
'ggm',
'ggn',
'ggo',
'ggt',
'ggu',
'ggw',
'gha',
'ghc',
'ghe',
'ghh',
'ghk',
'ghl',
'ghn',
'gho',
'ghr',
'ghs',
'ght',
'gia',
'gib',
'gic',
'gid',
'gig',
'gih',
'gil',
'gim',
'gin',
'gip',
'giq',
'gir',
'gis',
'git',
'giu',
'giw',
'gix',
'giy',
'giz',
'gji',
'gjk',
'gjm',
'gjn',
'gju',
'gka',
'gke',
'gkn',
'gko',
'gkp',
'gl',
'glc',
'gld',
'glh',
'gli',
'glj',
'glk',
'gll',
'glo',
'glr',
'glu',
'glw',
'gly',
'gma',
'gmb',
'gmd',
'gmh',
'gml',
'gmm',
'gmn',
'gmu',
'gmv',
'gmx',
'gmy',
'gmz',
'gn',
'gna',
'gnb',
'gnc',
'gnd',
'gne',
'gng',
'gnh',
'gni',
'gnk',
'gnl',
'gnm',
'gnn',
'gno',
'gnq',
'gnr',
'gnt',
'gnu',
'gnw',
'gnz',
'goa',
'gob',
'goc',
'god',
'goe',
'gof',
'gog',
'goh',
'goi',
'goj',
'gok',
'gol',
'gom',
'gon',
'goo',
'gop',
'goq',
'gor',
'gos',
'got',
'gou',
'gow',
'gox',
'goy',
'goz',
'gpa',
'gpe',
'gpn',
'gqa',
'gqi',
'gqn',
'gqr',
'gqu',
'gra',
'grb',
'grc',
'grd',
'grg',
'grh',
'gri',
'grj',
'grm',
'gro',
'grq',
'grr',
'grs',
'grt',
'gru',
'grv',
'grw',
'grx',
'gry',
'grz',
'gse',
'gsg',
'gsl',
'gsm',
'gsn',
'gso',
'gsp',
'gss',
'gsw',
'gta',
'gti',
'gtu',
'gu',
'gua',
'gub',
'guc',
'gud',
'gue',
'guf',
'gug',
'guh',
'gui',
'guk',
'gul',
'gum',
'gun',
'guo',
'gup',
'guq',
'gur',
'gus',
'gut',
'guu',
'guv',
'guw',
'gux',
'guz',
'gv',
'gva',
'gvc',
'gve',
'gvf',
'gvj',
'gvl',
'gvm',
'gvn',
'gvo',
'gvp',
'gvr',
'gvs',
'gvy',
'gwa',
'gwb',
'gwc',
'gwd',
'gwe',
'gwf',
'gwg',
'gwi',
'gwj',
'gwm',
'gwn',
'gwr',
'gwt',
'gwu',
'gww',
'gwx',
'gxx',
'gya',
'gyb',
'gyd',
'gye',
'gyf',
'gyg',
'gyi',
'gyl',
'gym',
'gyn',
'gyr',
'gyy',
'gza',
'gzi',
'gzn',
'ha',
'haa',
'hab',
'hac',
'had',
'hae',
'haf',
'hag',
'hah',
'hai',
'haj',
'hak',
'hal',
'ham',
'han',
'hao',
'hap',
'haq',
'har',
'has',
'hav',
'haw',
'hax',
'hay',
'haz',
'hba',
'hbb',
'hbn',
'hbo',
'hbu',
'hca',
'hch',
'hdn',
'hds',
'hdy',
'he',
'hea',
'hed',
'heg',
'heh',
'hei',
'hem',
'hgm',
'hgw',
'hhi',
'hhr',
'hhy',
'hi',
'hia',
'hib',
'hid',
'hif',
'hig',
'hih',
'hii',
'hij',
'hik',
'hil',
'him',
'hio',
'hir',
'hit',
'hiw',
'hix',
'hji',
'hka',
'hke',
'hkk',
'hks',
'hla',
'hlb',
'hld',
'hle',
'hlt',
'hlu',
'hma',
'hmb',
'hmc',
'hmd',
'hme',
'hmf',
'hmg',
'hmh',
'hmi',
'hmj',
'hmk',
'hml',
'hmm',
'hmn',
'hmp',
'hmq',
'hmr',
'hms',
'hmt',
'hmu',
'hmv',
'hmw',
'hmy',
'hmz',
'hna',
'hnd',
'hne',
'hnh',
'hni',
'hnj',
'hnn',
'hno',
'hns',
'hnu',
'ho',
'hoa',
'hob',
'hoc',
'hod',
'hoe',
'hoh',
'hoi',
'hoj',
'hol',
'hom',
'hoo',
'hop',
'hor',
'hos',
'hot',
'hov',
'how',
'hoy',
'hoz',
'hpo',
'hps',
'hr',
'hra',
'hrc',
'hre',
'hrk',
'hrm',
'hro',
'hrp',
'hrt',
'hru',
'hrw',
'hrx',
'hrz',
'hsb',
'hsh',
'hsl',
'hsn',
'hss',
'ht',
'hti',
'hto',
'hts',
'htu',
'htx',
'hu',
'hub',
'huc',
'hud',
'hue',
'huf',
'hug',
'huh',
'hui',
'huj',
'huk',
'hul',
'hum',
'huo',
'hup',
'huq',
'hur',
'hus',
'hut',
'huu',
'huv',
'huw',
'hux',
'huy',
'huz',
'hvc',
'hve',
'hvk',
'hvn',
'hvv',
'hwa',
'hwc',
'hwo',
'hy',
'hya',
'hz',
'ia',
'iai',
'ian',
'iap',
'iar',
'iba',
'ibb',
'ibd',
'ibe',
'ibg',
'ibl',
'ibm',
'ibn',
'ibr',
'ibu',
'iby',
'ica',
'ich',
'icl',
'icr',
'id',
'ida',
'idb',
'idc',
'idd',
'ide',
'idi',
'idr',
'ids',
'idt',
'idu',
'ie',
'ifa',
'ifb',
'ife',
'iff',
'ifk',
'ifm',
'ifu',
'ify',
'ig',
'igb',
'ige',
'igg',
'igl',
'igm',
'ign',
'igo',
'igs',
'igw',
'ihb',
'ihi',
'ihp',
'ihw',
'ii',
'iin',
'ijc',
'ije',
'ijj',
'ijn',
'ijo',
'ijs',
'ik',
'ike',
'iki',
'ikk',
'ikl',
'iko',
'ikp',
'ikr',
'ikt',
'ikv',
'ikw',
'ikx',
'ikz',
'ila',
'ilb',
'ilg',
'ili',
'ilk',
'ill',
'ilo',
'ils',
'ilu',
'ilv',
'ima',
'ime',
'imi',
'iml',
'imn',
'imo',
'imr',
'ims',
'imy',
'inb',
'inc',
'ine',
'ing',
'inh',
'inj',
'inl',
'inm',
'inn',
'ino',
'inp',
'ins',
'int',
'inz',
'io',
'ior',
'iou',
'iow',
'ipi',
'ipo',
'iqu',
'iqw',
'ira',
'ire',
'irh',
'iri',
'irk',
'irn',
'iro',
'irr',
'iru',
'irx',
'iry',
'is',
'isa',
'isc',
'isd',
'ise',
'isg',
'ish',
'isi',
'isk',
'ism',
'isn',
'iso',
'isr',
'ist',
'isu',
'it',
'itb',
'ite',
'iti',
'itk',
'itl',
'itm',
'ito',
'itr',
'its',
'itt',
'itv',
'itw',
'itx',
'ity',
'itz',
'iu',
'ium',
'ivb',
'ivv',
'iwk',
'iwm',
'iwo',
'iws',
'ixc',
'ixl',
'iya',
'iyo',
'iyx',
'izh',
'izr',
'izz',
'ja',
'jaa',
'jab',
'jac',
'jad',
'jae',
'jaf',
'jah',
'jaj',
'jak',
'jal',
'jam',
'jan',
'jao',
'jaq',
'jas',
'jat',
'jau',
'jax',
'jay',
'jaz',
'jbe',
'jbi',
'jbj',
'jbk',
'jbn',
'jbo',
'jbr',
'jbt',
'jbu',
'jbw',
'jcs',
'jct',
'jda',
'jdg',
'jdt',
'jeb',
'jee',
'jeg',
'jeh',
'jei',
'jek',
'jel',
'jen',
'jer',
'jet',
'jeu',
'jgb',
'jge',
'jgk',
'jgo',
'jhi',
'jhs',
'jia',
'jib',
'jic',
'jid',
'jie',
'jig',
'jih',
'jii',
'jil',
'jim',
'jio',
'jiq',
'jit',
'jiu',
'jiv',
'jiy',
'jjr',
'jkm',
'jko',
'jkp',
'jkr',
'jku',
'jle',
'jls',
'jma',
'jmb',
'jmc',
'jmd',
'jmi',
'jml',
'jmn',
'jmr',
'jms',
'jmw',
'jmx',
'jna',
'jnd',
'jng',
'jni',
'jnj',
'jnl',
'jns',
'job',
'jod',
'jor',
'jos',
'jow',
'jpa',
'jpr',
'jqr',
'jra',
'jrb',
'jrr',
'jrt',
'jru',
'jsl',
'jua',
'jub',
'juc',
'jud',
'juh',
'jui',
'juk',
'jul',
'jum',
'jun',
'juo',
'jup',
'jur',
'jus',
'jut',
'juu',
'juw',
'juy',
'jv',
'jvd',
'jvn',
'jwi',
'jya',
'jye',
'jyy',
'ka',
'kaa',
'kab',
'kac',
'kad',
'kae',
'kaf',
'kag',
'kah',
'kai',
'kaj',
'kak',
'kam',
'kao',
'kap',
'kaq',
'kar',
'kav',
'kaw',
'kax',
'kay',
'kba',
'kbb',
'kbc',
'kbd',
'kbe',
'kbf',
'kbg',
'kbh',
'kbi',
'kbj',
'kbk',
'kbl',
'kbm',
'kbn',
'kbo',
'kbp',
'kbq',
'kbr',
'kbs',
'kbt',
'kbu',
'kbv',
'kbw',
'kbx',
'kby',
'kbz',
'kca',
'kcb',
'kcc',
'kcd',
'kce',
'kcf',
'kcg',
'kch',
'kci',
'kcj',
'kck',
'kcl',
'kcm',
'kcn',
'kco',
'kcp',
'kcq',
'kcr',
'kcs',
'kct',
'kcu',
'kcv',
'kcw',
'kcx',
'kcy',
'kcz',
'kda',
'kdc',
'kdd',
'kde',
'kdf',
'kdg',
'kdh',
'kdi',
'kdj',
'kdk',
'kdl',
'kdm',
'kdn',
'kdp',
'kdq',
'kdr',
'kdt',
'kdu',
'kdw',
'kdx',
'kdy',
'kdz',
'kea',
'keb',
'kec',
'ked',
'kee',
'kef',
'keg',
'keh',
'kei',
'kej',
'kek',
'kel',
'kem',
'ken',
'keo',
'kep',
'keq',
'ker',
'kes',
'ket',
'keu',
'kev',
'kew',
'kex',
'key',
'kez',
'kfa',
'kfb',
'kfc',
'kfd',
'kfe',
'kff',
'kfg',
'kfh',
'kfi',
'kfj',
'kfk',
'kfl',
'kfm',
'kfn',
'kfo',
'kfp',
'kfq',
'kfr',
'kfs',
'kft',
'kfu',
'kfv',
'kfw',
'kfx',
'kfy',
'kfz',
'kg',
'kga',
'kgb',
'kgc',
'kgd',
'kge',
'kgf',
'kgg',
'kgi',
'kgj',
'kgk',
'kgl',
'kgm',
'kgn',
'kgo',
'kgp',
'kgq',
'kgr',
'kgs',
'kgt',
'kgu',
'kgv',
'kgw',
'kgx',
'kgy',
'kha',
'khb',
'khc',
'khd',
'khe',
'khf',
'khg',
'khh',
'khi',
'khj',
'khk',
'khl',
'khn',
'kho',
'khp',
'khq',
'khr',
'khs',
'kht',
'khu',
'khv',
'khw',
'khx',
'khy',
'khz',
'ki',
'kia',
'kib',
'kic',
'kid',
'kie',
'kif',
'kig',
'kih',
'kii',
'kij',
'kil',
'kim',
'kio',
'kip',
'kiq',
'kis',
'kit',
'kiu',
'kiv',
'kiw',
'kix',
'kiy',
'kiz',
'kj',
'kja',
'kjb',
'kjc',
'kjd',
'kje',
'kjf',
'kjg',
'kjh',
'kji',
'kjj',
'kjk',
'kjl',
'kjm',
'kjn',
'kjo',
'kjp',
'kjq',
'kjr',
'kjs',
'kjt',
'kju',
'kjx',
'kjy',
'kjz',
'kk',
'kka',
'kkb',
'kkc',
'kkd',
'kke',
'kkf',
'kkg',
'kkh',
'kki',
'kkj',
'kkk',
'kkl',
'kkm',
'kkn',
'kko',
'kkp',
'kkq',
'kkr',
'kks',
'kkt',
'kku',
'kkv',
'kkw',
'kkx',
'kky',
'kkz',
'kl',
'kla',
'klb',
'klc',
'kld',
'kle',
'klf',
'klg',
'klh',
'kli',
'klj',
'klk',
'kll',
'klm',
'kln',
'klo',
'klp',
'klq',
'klr',
'kls',
'klt',
'klu',
'klv',
'klw',
'klx',
'kly',
'klz',
'km',
'kma',
'kmb',
'kmc',
'kmd',
'kme',
'kmf',
'kmg',
'kmh',
'kmi',
'kmj',
'kmk',
'kml',
'kmm',
'kmn',
'kmo',
'kmp',
'kmq',
'kmr',
'kms',
'kmt',
'kmu',
'kmv',
'kmw',
'kmx',
'kmy',
'kmz',
'kn',
'kna',
'knb',
'knc',
'knd',
'kne',
'knf',
'kng',
'kni',
'knj',
'knk',
'knl',
'knm',
'knn',
'kno',
'knp',
'knq',
'knr',
'kns',
'knt',
'knu',
'knv',
'knw',
'knx',
'kny',
'knz',
'ko',
'koa',
'koc',
'kod',
'koe',
'kof',
'kog',
'koh',
'koi',
'koj',
'kok',
'kol',
'koo',
'kop',
'koq',
'kos',
'kot',
'kou',
'kov',
'kow',
'kox',
'koy',
'koz',
'kpa',
'kpb',
'kpc',
'kpd',
'kpe',
'kpf',
'kpg',
'kph',
'kpi',
'kpj',
'kpk',
'kpl',
'kpm',
'kpn',
'kpo',
'kpq',
'kpr',
'kps',
'kpt',
'kpu',
'kpv',
'kpw',
'kpx',
'kpy',
'kpz',
'kqa',
'kqb',
'kqc',
'kqd',
'kqe',
'kqf',
'kqg',
'kqh',
'kqi',
'kqj',
'kqk',
'kql',
'kqm',
'kqn',
'kqo',
'kqp',
'kqq',
'kqr',
'kqs',
'kqt',
'kqu',
'kqv',
'kqw',
'kqx',
'kqy',
'kqz',
'kr',
'kra',
'krb',
'krc',
'krd',
'kre',
'krf',
'krh',
'kri',
'krj',
'krk',
'krl',
'krm',
'krn',
'kro',
'krp',
'krr',
'krs',
'krt',
'kru',
'krv',
'krw',
'krx',
'kry',
'krz',
'ks',
'ksa',
'ksb',
'ksc',
'ksd',
'kse',
'ksf',
'ksg',
'ksh',
'ksi',
'ksj',
'ksk',
'ksl',
'ksm',
'ksn',
'kso',
'ksp',
'ksq',
'ksr',
'kss',
'kst',
'ksu',
'ksv',
'ksw',
'ksx',
'ksy',
'ksz',
'kta',
'ktb',
'ktc',
'ktd',
'kte',
'ktf',
'ktg',
'kth',
'kti',
'ktj',
'ktk',
'ktl',
'ktm',
'ktn',
'kto',
'ktp',
'ktq',
'ktr',
'kts',
'ktt',
'ktu',
'ktv',
'ktw',
'ktx',
'kty',
'ktz',
'ku',
'kub',
'kuc',
'kud',
'kue',
'kuf',
'kug',
'kuh',
'kui',
'kuj',
'kuk',
'kul',
'kum',
'kun',
'kuo',
'kup',
'kuq',
'kus',
'kut',
'kuu',
'kuv',
'kuw',
'kux',
'kuy',
'kuz',
'kv',
'kva',
'kvb',
'kvc',
'kvd',
'kve',
'kvf',
'kvg',
'kvh',
'kvi',
'kvj',
'kvk',
'kvl',
'kvm',
'kvn',
'kvo',
'kvp',
'kvq',
'kvr',
'kvs',
'kvt',
'kvu',
'kvv',
'kvw',
'kvx',
'kvy',
'kvz',
'kw',
'kwa',
'kwb',
'kwc',
'kwd',
'kwe',
'kwf',
'kwg',
'kwh',
'kwi',
'kwj',
'kwk',
'kwl',
'kwm',
'kwn',
'kwo',
'kwp',
'kwq',
'kwr',
'kws',
'kwt',
'kwu',
'kwv',
'kww',
'kwx',
'kwy',
'kwz',
'kxa',
'kxb',
'kxc',
'kxd',
'kxe',
'kxf',
'kxh',
'kxi',
'kxj',
'kxk',
'kxl',
'kxm',
'kxn',
'kxo',
'kxp',
'kxq',
'kxr',
'kxs',
'kxt',
'kxu',
'kxv',
'kxw',
'kxx',
'kxy',
'kxz',
'ky',
'kya',
'kyb',
'kyc',
'kyd',
'kye',
'kyf',
'kyg',
'kyh',
'kyi',
'kyj',
'kyk',
'kyl',
'kym',
'kyn',
'kyo',
'kyp',
'kyq',
'kyr',
'kys',
'kyt',
'kyu',
'kyv',
'kyw',
'kyx',
'kyy',
'kyz',
'kza',
'kzb',
'kzc',
'kzd',
'kze',
'kzf',
'kzg',
'kzi',
'kzj',
'kzk',
'kzl',
'kzm',
'kzn',
'kzo',
'kzp',
'kzq',
'kzr',
'kzs',
'kzt',
'kzu',
'kzv',
'kzw',
'kzx',
'kzy',
'kzz',
'la',
'laa',
'lab',
'lac',
'lad',
'lae',
'laf',
'lag',
'lah',
'lai',
'laj',
'lak',
'lal',
'lam',
'lan',
'lap',
'laq',
'lar',
'las',
'lau',
'law',
'lax',
'lay',
'laz',
'lb',
'lba',
'lbb',
'lbc',
'lbe',
'lbf',
'lbg',
'lbi',
'lbj',
'lbk',
'lbl',
'lbm',
'lbn',
'lbo',
'lbq',
'lbr',
'lbs',
'lbt',
'lbu',
'lbv',
'lbw',
'lbx',
'lby',
'lbz',
'lcc',
'lcd',
'lce',
'lcf',
'lch',
'lcl',
'lcm',
'lcp',
'lcq',
'lcs',
'lda',
'ldb',
'ldd',
'ldg',
'ldh',
'ldi',
'ldj',
'ldk',
'ldl',
'ldm',
'ldn',
'ldo',
'ldp',
'ldq',
'lea',
'leb',
'lec',
'led',
'lee',
'lef',
'leg',
'leh',
'lei',
'lej',
'lek',
'lel',
'lem',
'len',
'leo',
'lep',
'leq',
'ler',
'les',
'let',
'leu',
'lev',
'lew',
'lex',
'ley',
'lez',
'lfa',
'lfn',
'lg',
'lga',
'lgb',
'lgg',
'lgh',
'lgi',
'lgk',
'lgl',
'lgm',
'lgn',
'lgq',
'lgr',
'lgt',
'lgu',
'lgz',
'lha',
'lhh',
'lhi',
'lhl',
'lhm',
'lhn',
'lhp',
'lhs',
'lht',
'lhu',
'li',
'lia',
'lib',
'lic',
'lid',
'lie',
'lif',
'lig',
'lih',
'lii',
'lij',
'lik',
'lil',
'lio',
'lip',
'liq',
'lir',
'lis',
'liu',
'liv',
'liw',
'lix',
'liy',
'liz',
'lja',
'lje',
'lji',
'ljl',
'ljp',
'ljw',
'ljx',
'lka',
'lkb',
'lkc',
'lkd',
'lke',
'lkh',
'lki',
'lkj',
'lkl',
'lkm',
'lkn',
'lko',
'lkr',
'lks',
'lkt',
'lku',
'lky',
'lla',
'llb',
'llc',
'lld',
'lle',
'llf',
'llg',
'llh',
'lli',
'llj',
'llk',
'lll',
'llm',
'lln',
'llo',
'llp',
'llq',
'lls',
'llu',
'llx',
'lma',
'lmb',
'lmc',
'lmd',
'lme',
'lmf',
'lmg',
'lmh',
'lmi',
'lmj',
'lmk',
'lml',
'lmm',
'lmn',
'lmo',
'lmp',
'lmq',
'lmr',
'lmu',
'lmv',
'lmw',
'lmx',
'lmy',
'lmz',
'ln',
'lna',
'lnb',
'lnd',
'lng',
'lnh',
'lni',
'lnj',
'lnl',
'lnm',
'lnn',
'lno',
'lns',
'lnu',
'lnw',
'lnz',
'lo',
'loa',
'lob',
'loc',
'loe',
'lof',
'log',
'loh',
'loi',
'loj',
'lok',
'lol',
'lom',
'lon',
'loo',
'lop',
'loq',
'lor',
'los',
'lot',
'lou',
'lov',
'low',
'lox',
'loy',
'loz',
'lpa',
'lpe',
'lpn',
'lpo',
'lpx',
'lra',
'lrc',
'lre',
'lrg',
'lri',
'lrk',
'lrl',
'lrm',
'lrn',
'lro',
'lrr',
'lrt',
'lrv',
'lrz',
'lsa',
'lsd',
'lse',
'lsg',
'lsh',
'lsi',
'lsl',
'lsm',
'lso',
'lsp',
'lsr',
'lss',
'lst',
'lsy',
'lt',
'ltc',
'ltg',
'lti',
'ltn',
'lto',
'lts',
'ltu',
'lu',
'lua',
'luc',
'lud',
'lue',
'luf',
'lui',
'luj',
'luk',
'lul',
'lum',
'lun',
'luo',
'lup',
'luq',
'lur',
'lus',
'lut',
'luu',
'luv',
'luw',
'luy',
'luz',
'lv',
'lva',
'lvk',
'lvs',
'lvu',
'lwa',
'lwe',
'lwg',
'lwh',
'lwl',
'lwm',
'lwo',
'lwt',
'lwu',
'lww',
'lya',
'lyg',
'lyn',
'lzh',
'lzl',
'lzn',
'lzz',
'maa',
'mab',
'mad',
'mae',
'maf',
'mag',
'mai',
'maj',
'mak',
'mam',
'man',
'map',
'maq',
'mas',
'mat',
'mau',
'mav',
'maw',
'max',
'maz',
'mba',
'mbb',
'mbc',
'mbd',
'mbe',
'mbf',
'mbh',
'mbi',
'mbj',
'mbk',
'mbl',
'mbm',
'mbn',
'mbo',
'mbp',
'mbq',
'mbr',
'mbs',
'mbt',
'mbu',
'mbv',
'mbw',
'mbx',
'mby',
'mbz',
'mca',
'mcb',
'mcc',
'mcd',
'mce',
'mcf',
'mcg',
'mch',
'mci',
'mcj',
'mck',
'mcl',
'mcm',
'mcn',
'mco',
'mcp',
'mcq',
'mcr',
'mcs',
'mct',
'mcu',
'mcv',
'mcw',
'mcx',
'mcy',
'mcz',
'mda',
'mdb',
'mdc',
'mdd',
'mde',
'mdf',
'mdg',
'mdh',
'mdi',
'mdj',
'mdk',
'mdl',
'mdm',
'mdn',
'mdp',
'mdq',
'mdr',
'mds',
'mdt',
'mdu',
'mdv',
'mdw',
'mdx',
'mdy',
'mdz',
'mea',
'meb',
'mec',
'med',
'mee',
'mef',
'meh',
'mei',
'mej',
'mek',
'mel',
'mem',
'men',
'meo',
'mep',
'meq',
'mer',
'mes',
'met',
'meu',
'mev',
'mew',
'mey',
'mez',
'mfa',
'mfb',
'mfc',
'mfd',
'mfe',
'mff',
'mfg',
'mfh',
'mfi',
'mfj',
'mfk',
'mfl',
'mfm',
'mfn',
'mfo',
'mfp',
'mfq',
'mfr',
'mfs',
'mft',
'mfu',
'mfv',
'mfw',
'mfx',
'mfy',
'mfz',
'mg',
'mga',
'mgb',
'mgc',
'mgd',
'mge',
'mgf',
'mgg',
'mgh',
'mgi',
'mgj',
'mgk',
'mgl',
'mgm',
'mgn',
'mgo',
'mgp',
'mgq',
'mgr',
'mgs',
'mgt',
'mgu',
'mgv',
'mgw',
'mgy',
'mgz',
'mh',
'mha',
'mhb',
'mhc',
'mhd',
'mhe',
'mhf',
'mhg',
'mhh',
'mhi',
'mhj',
'mhk',
'mhl',
'mhm',
'mhn',
'mho',
'mhp',
'mhq',
'mhr',
'mhs',
'mht',
'mhu',
'mhw',
'mhx',
'mhy',
'mhz',
'mi',
'mia',
'mib',
'mic',
'mid',
'mie',
'mif',
'mig',
'mih',
'mii',
'mij',
'mik',
'mil',
'mim',
'min',
'mio',
'mip',
'miq',
'mir',
'mis',
'mit',
'miu',
'miw',
'mix',
'miy',
'miz',
'mjc',
'mjd',
'mje',
'mjg',
'mjh',
'mji',
'mjj',
'mjk',
'mjl',
'mjm',
'mjn',
'mjo',
'mjp',
'mjq',
'mjr',
'mjs',
'mjt',
'mju',
'mjv',
'mjw',
'mjx',
'mjy',
'mjz',
'mk',
'mka',
'mkb',
'mkc',
'mke',
'mkf',
'mkg',
'mkh',
'mki',
'mkj',
'mkk',
'mkl',
'mkm',
'mkn',
'mko',
'mkp',
'mkq',
'mkr',
'mks',
'mkt',
'mku',
'mkv',
'mkw',
'mkx',
'mky',
'mkz',
'ml',
'mla',
'mlb',
'mlc',
'mle',
'mlf',
'mlh',
'mli',
'mlj',
'mlk',
'mll',
'mlm',
'mln',
'mlo',
'mlp',
'mlq',
'mlr',
'mls',
'mlu',
'mlv',
'mlw',
'mlx',
'mlz',
'mma',
'mmb',
'mmc',
'mmd',
'mme',
'mmf',
'mmg',
'mmh',
'mmi',
'mmj',
'mmk',
'mml',
'mmm',
'mmn',
'mmo',
'mmp',
'mmq',
'mmr',
'mmt',
'mmu',
'mmv',
'mmw',
'mmx',
'mmy',
'mmz',
'mn',
'mna',
'mnb',
'mnc',
'mnd',
'mne',
'mnf',
'mng',
'mnh',
'mni',
'mnj',
'mnk',
'mnl',
'mnm',
'mnn',
'mno',
'mnp',
'mnq',
'mnr',
'mns',
'mnu',
'mnv',
'mnw',
'mnx',
'mny',
'mnz',
'mo',
'moa',
'moc',
'mod',
'moe',
'mog',
'moh',
'moi',
'moj',
'mok',
'mom',
'moo',
'mop',
'moq',
'mor',
'mos',
'mot',
'mou',
'mov',
'mow',
'mox',
'moy',
'moz',
'mpa',
'mpb',
'mpc',
'mpd',
'mpe',
'mpg',
'mph',
'mpi',
'mpj',
'mpk',
'mpl',
'mpm',
'mpn',
'mpo',
'mpp',
'mpq',
'mpr',
'mps',
'mpt',
'mpu',
'mpv',
'mpw',
'mpx',
'mpy',
'mpz',
'mqa',
'mqb',
'mqc',
'mqe',
'mqf',
'mqg',
'mqh',
'mqi',
'mqj',
'mqk',
'mql',
'mqm',
'mqn',
'mqo',
'mqp',
'mqq',
'mqr',
'mqs',
'mqt',
'mqu',
'mqv',
'mqw',
'mqx',
'mqy',
'mqz',
'mr',
'mra',
'mrb',
'mrc',
'mrd',
'mre',
'mrf',
'mrg',
'mrh',
'mrj',
'mrk',
'mrl',
'mrm',
'mrn',
'mro',
'mrp',
'mrq',
'mrr',
'mrs',
'mrt',
'mru',
'mrv',
'mrw',
'mrx',
'mry',
'mrz',
'ms',
'msb',
'msc',
'msd',
'mse',
'msf',
'msg',
'msh',
'msi',
'msj',
'msk',
'msl',
'msm',
'msn',
'mso',
'msp',
'msq',
'msr',
'mss',
'msu',
'msv',
'msw',
'msx',
'msy',
'msz',
'mt',
'mta',
'mtb',
'mtc',
'mtd',
'mte',
'mtf',
'mtg',
'mth',
'mti',
'mtj',
'mtk',
'mtl',
'mtm',
'mtn',
'mto',
'mtp',
'mtq',
'mtr',
'mts',
'mtt',
'mtu',
'mtv',
'mtw',
'mtx',
'mty',
'mua',
'mub',
'muc',
'mud',
'mue',
'mug',
'muh',
'mui',
'muj',
'muk',
'mul',
'mum',
'mun',
'muo',
'mup',
'muq',
'mur',
'mus',
'mut',
'muu',
'muv',
'mux',
'muy',
'muz',
'mva',
'mvb',
'mvd',
'mve',
'mvf',
'mvg',
'mvh',
'mvi',
'mvk',
'mvl',
'mvm',
'mvn',
'mvo',
'mvp',
'mvq',
'mvr',
'mvs',
'mvt',
'mvu',
'mvv',
'mvw',
'mvx',
'mvy',
'mvz',
'mwa',
'mwb',
'mwc',
'mwe',
'mwf',
'mwg',
'mwh',
'mwi',
'mwj',
'mwk',
'mwl',
'mwm',
'mwn',
'mwo',
'mwp',
'mwq',
'mwr',
'mws',
'mwt',
'mwu',
'mwv',
'mww',
'mwx',
'mwy',
'mwz',
'mxa',
'mxb',
'mxc',
'mxd',
'mxe',
'mxf',
'mxg',
'mxh',
'mxi',
'mxj',
'mxk',
'mxl',
'mxm',
'mxn',
'mxo',
'mxp',
'mxq',
'mxr',
'mxs',
'mxt',
'mxu',
'mxv',
'mxw',
'mxx',
'mxy',
'mxz',
'my',
'myb',
'myc',
'myd',
'mye',
'myf',
'myg',
'myh',
'myi',
'myj',
'myk',
'myl',
'mym',
'myn',
'myo',
'myp',
'myr',
'mys',
'myu',
'myv',
'myw',
'myx',
'myy',
'myz',
'mza',
'mzb',
'mzc',
'mzd',
'mze',
'mzg',
'mzh',
'mzi',
'mzj',
'mzk',
'mzl',
'mzm',
'mzn',
'mzo',
'mzp',
'mzq',
'mzr',
'mzs',
'mzt',
'mzu',
'mzv',
'mzw',
'mzx',
'mzy',
'mzz',
'na',
'naa',
'nab',
'nac',
'nad',
'nae',
'naf',
'nag',
'nah',
'nai',
'naj',
'nak',
'nal',
'nam',
'nan',
'nao',
'nap',
'naq',
'nar',
'nas',
'nat',
'naw',
'nax',
'nay',
'naz',
'nb',
'nba',
'nbb',
'nbc',
'nbd',
'nbe',
'nbg',
'nbh',
'nbi',
'nbj',
'nbk',
'nbm',
'nbn',
'nbo',
'nbp',
'nbq',
'nbr',
'nbs',
'nbt',
'nbu',
'nbv',
'nbw',
'nby',
'nca',
'ncb',
'ncc',
'ncd',
'nce',
'ncf',
'ncg',
'nch',
'nci',
'ncj',
'nck',
'ncl',
'ncm',
'ncn',
'nco',
'ncp',
'ncr',
'ncs',
'nct',
'ncu',
'ncx',
'ncz',
'nd',
'nda',
'ndb',
'ndc',
'ndd',
'ndf',
'ndg',
'ndh',
'ndi',
'ndj',
'ndk',
'ndl',
'ndm',
'ndn',
'ndp',
'ndq',
'ndr',
'nds',
'ndt',
'ndu',
'ndv',
'ndw',
'ndx',
'ndy',
'ndz',
'ne',
'nea',
'neb',
'nec',
'ned',
'nee',
'nef',
'neg',
'neh',
'nei',
'nej',
'nek',
'nem',
'nen',
'neo',
'neq',
'ner',
'nes',
'net',
'neu',
'nev',
'new',
'nex',
'ney',
'nez',
'nfa',
'nfd',
'nfl',
'nfr',
'nfu',
'ng',
'nga',
'ngb',
'ngc',
'ngd',
'nge',
'ngg',
'ngh',
'ngi',
'ngj',
'ngk',
'ngl',
'ngm',
'ngn',
'ngo',
'ngp',
'ngq',
'ngr',
'ngs',
'ngt',
'ngu',
'ngv',
'ngw',
'ngx',
'ngy',
'ngz',
'nha',
'nhb',
'nhc',
'nhd',
'nhe',
'nhf',
'nhg',
'nhh',
'nhi',
'nhk',
'nhm',
'nhn',
'nho',
'nhp',
'nhq',
'nhr',
'nht',
'nhu',
'nhv',
'nhw',
'nhx',
'nhy',
'nhz',
'nia',
'nib',
'nic',
'nid',
'nie',
'nif',
'nig',
'nih',
'nii',
'nij',
'nik',
'nil',
'nim',
'nin',
'nio',
'niq',
'nir',
'nis',
'nit',
'niu',
'niv',
'niw',
'nix',
'niy',
'niz',
'nja',
'njb',
'njd',
'njh',
'nji',
'njj',
'njl',
'njm',
'njn',
'njo',
'njr',
'njs',
'njt',
'nju',
'njx',
'njy',
'njz',
'nka',
'nkb',
'nkc',
'nkd',
'nke',
'nkf',
'nkg',
'nkh',
'nki',
'nkj',
'nkk',
'nkm',
'nkn',
'nko',
'nkp',
'nkq',
'nkr',
'nks',
'nkt',
'nku',
'nkv',
'nkw',
'nkx',
'nkz',
'nl',
'nla',
'nlc',
'nle',
'nlg',
'nli',
'nlj',
'nlk',
'nll',
'nlo',
'nlq',
'nlu',
'nlv',
'nlw',
'nlx',
'nly',
'nlz',
'nma',
'nmb',
'nmc',
'nmd',
'nme',
'nmf',
'nmg',
'nmh',
'nmi',
'nmj',
'nmk',
'nml',
'nmm',
'nmn',
'nmo',
'nmp',
'nmq',
'nmr',
'nms',
'nmt',
'nmu',
'nmv',
'nmw',
'nmx',
'nmy',
'nmz',
'nn',
'nna',
'nnb',
'nnc',
'nnd',
'nne',
'nnf',
'nng',
'nnh',
'nni',
'nnj',
'nnk',
'nnl',
'nnm',
'nnn',
'nnp',
'nnq',
'nnr',
'nns',
'nnt',
'nnu',
'nnv',
'nnw',
'nnx',
'nny',
'nnz',
'no',
'noa',
'noc',
'nod',
'noe',
'nof',
'nog',
'noh',
'noi',
'noj',
'nok',
'nol',
'nom',
'non',
'nop',
'noq',
'nos',
'not',
'nou',
'nov',
'now',
'noy',
'noz',
'npa',
'npb',
'npg',
'nph',
'npi',
'npl',
'npn',
'npo',
'nps',
'npu',
'npy',
'nqg',
'nqk',
'nqm',
'nqn',
'nqo',
'nqq',
'nqy',
'nr',
'nra',
'nrb',
'nrc',
'nre',
'nrg',
'nri',
'nrk',
'nrl',
'nrm',
'nrn',
'nrp',
'nrr',
'nrt',
'nru',
'nrx',
'nrz',
'nsa',
'nsc',
'nsd',
'nse',
'nsf',
'nsg',
'nsh',
'nsi',
'nsk',
'nsl',
'nsm',
'nsn',
'nso',
'nsp',
'nsq',
'nsr',
'nss',
'nst',
'nsu',
'nsv',
'nsw',
'nsx',
'nsy',
'nsz',
'nte',
'ntg',
'nti',
'ntj',
'ntk',
'ntm',
'nto',
'ntp',
'ntr',
'nts',
'ntu',
'ntw',
'ntx',
'nty',
'ntz',
'nua',
'nub',
'nuc',
'nud',
'nue',
'nuf',
'nug',
'nuh',
'nui',
'nuj',
'nuk',
'nul',
'num',
'nun',
'nuo',
'nup',
'nuq',
'nur',
'nus',
'nut',
'nuu',
'nuv',
'nuw',
'nux',
'nuy',
'nuz',
'nv',
'nvh',
'nvm',
'nvo',
'nwa',
'nwb',
'nwc',
'nwe',
'nwg',
'nwi',
'nwm',
'nwo',
'nwr',
'nwx',
'nwy',
'nxa',
'nxd',
'nxe',
'nxg',
'nxi',
'nxk',
'nxl',
'nxm',
'nxn',
'nxq',
'nxr',
'nxu',
'nxx',
'ny',
'nyb',
'nyc',
'nyd',
'nye',
'nyf',
'nyg',
'nyh',
'nyi',
'nyj',
'nyk',
'nyl',
'nym',
'nyn',
'nyo',
'nyp',
'nyq',
'nyr',
'nys',
'nyt',
'nyu',
'nyv',
'nyw',
'nyx',
'nyy',
'nza',
'nzb',
'nzi',
'nzk',
'nzm',
'nzs',
'nzu',
'nzy',
'nzz',
'oaa',
'oac',
'oar',
'oav',
'obi',
'obk',
'obl',
'obm',
'obo',
'obr',
'obt',
'obu',
'oc',
'oca',
'och',
'oco',
'ocu',
'oda',
'odk',
'odt',
'odu',
'ofo',
'ofs',
'ofu',
'ogb',
'ogc',
'oge',
'ogg',
'ogo',
'ogu',
'oht',
'ohu',
'oia',
'oin',
'oj',
'ojb',
'ojc',
'ojg',
'ojp',
'ojs',
'ojv',
'ojw',
'oka',
'okb',
'okd',
'oke',
'okg',
'okh',
'oki',
'okj',
'okk',
'okl',
'okm',
'okn',
'oko',
'okr',
'oks',
'oku',
'okv',
'okx',
'ola',
'old',
'ole',
'olk',
'olm',
'olo',
'olr',
'om',
'oma',
'omb',
'omc',
'ome',
'omg',
'omi',
'omk',
'oml',
'omn',
'omo',
'omp',
'omr',
'omt',
'omu',
'omw',
'omx',
'ona',
'onb',
'one',
'ong',
'oni',
'onj',
'onk',
'onn',
'ono',
'onp',
'onr',
'ons',
'ont',
'onu',
'onw',
'onx',
'ood',
'oog',
'oon',
'oor',
'oos',
'opa',
'opk',
'opm',
'opo',
'opt',
'opy',
'or',
'ora',
'orc',
'ore',
'org',
'orh',
'orn',
'oro',
'orr',
'ors',
'ort',
'oru',
'orv',
'orw',
'orx',
'ory',
'orz',
'os',
'osa',
'osc',
'osi',
'oso',
'osp',
'ost',
'osu',
'osx',
'ota',
'otb',
'otd',
'ote',
'oti',
'otk',
'otl',
'otm',
'otn',
'oto',
'otq',
'otr',
'ots',
'ott',
'otu',
'otw',
'otx',
'oty',
'otz',
'oua',
'oub',
'oue',
'oui',
'oum',
'oun',
'owi',
'owl',
'oyb',
'oyd',
'oym',
'oyy',
'ozm',
'pa',
'paa',
'pab',
'pac',
'pad',
'pae',
'paf',
'pag',
'pah',
'pai',
'pak',
'pal',
'pam',
'pao',
'pap',
'paq',
'par',
'pas',
'pat',
'pau',
'pav',
'paw',
'pax',
'pay',
'paz',
'pbb',
'pbc',
'pbe',
'pbf',
'pbg',
'pbh',
'pbi',
'pbl',
'pbn',
'pbo',
'pbp',
'pbr',
'pbs',
'pbt',
'pbu',
'pbv',
'pby',
'pca',
'pcb',
'pcc',
'pcd',
'pce',
'pcf',
'pcg',
'pch',
'pci',
'pcj',
'pck',
'pcl',
'pcm',
'pcn',
'pcp',
'pcw',
'pda',
'pdc',
'pdi',
'pdn',
'pdo',
'pdt',
'pdu',
'pea',
'peb',
'ped',
'pee',
'pef',
'peg',
'peh',
'pei',
'pej',
'pek',
'pel',
'pem',
'peo',
'pep',
'peq',
'pes',
'pev',
'pex',
'pey',
'pez',
'pfa',
'pfe',
'pfl',
'pga',
'pgg',
'pgi',
'pgk',
'pgl',
'pgn',
'pgs',
'pgu',
'pha',
'phd',
'phg',
'phh',
'phi',
'phk',
'phl',
'phm',
'phn',
'pho',
'phq',
'phr',
'pht',
'phu',
'phv',
'phw',
'pi',
'pia',
'pib',
'pic',
'pid',
'pie',
'pif',
'pig',
'pih',
'pii',
'pij',
'pil',
'pim',
'pin',
'pio',
'pip',
'pir',
'pis',
'pit',
'piu',
'piv',
'piw',
'pix',
'piy',
'piz',
'pjt',
'pka',
'pkb',
'pkc',
'pkg',
'pkh',
'pkn',
'pko',
'pkp',
'pkr',
'pks',
'pkt',
'pku',
'pl',
'pla',
'plb',
'plc',
'pld',
'ple',
'plg',
'plh',
'plj',
'plk',
'pll',
'pln',
'plo',
'plp',
'plq',
'plr',
'pls',
'plt',
'plu',
'plv',
'plw',
'ply',
'plz',
'pma',
'pmb',
'pmc',
'pmd',
'pme',
'pmf',
'pmh',
'pmi',
'pmj',
'pmk',
'pml',
'pmm',
'pmn',
'pmo',
'pmq',
'pmr',
'pms',
'pmt',
'pmu',
'pmw',
'pmx',
'pmy',
'pmz',
'pna',
'pnb',
'pnc',
'pne',
'png',
'pnh',
'pni',
'pnj',
'pnk',
'pnl',
'pnm',
'pnn',
'pno',
'pnp',
'pnq',
'pnr',
'pns',
'pnt',
'pnu',
'pnv',
'pnw',
'pnx',
'pny',
'pnz',
'poc',
'pod',
'poe',
'pof',
'pog',
'poh',
'poi',
'pok',
'pom',
'pon',
'poo',
'pop',
'poq',
'pos',
'pot',
'pov',
'pow',
'pox',
'poy',
'ppa',
'ppe',
'ppi',
'ppk',
'ppl',
'ppm',
'ppn',
'ppo',
'ppp',
'ppq',
'pps',
'ppt',
'ppu',
'pqa',
'pqm',
'pra',
'prb',
'prc',
'prd',
'pre',
'prf',
'prg',
'prh',
'pri',
'prk',
'prl',
'prm',
'prn',
'pro',
'prp',
'prq',
'prr',
'prs',
'prt',
'pru',
'prw',
'prx',
'pry',
'prz',
'ps',
'psa',
'psc',
'psd',
'pse',
'psg',
'psh',
'psi',
'psl',
'psm',
'psn',
'pso',
'psp',
'psq',
'psr',
'pss',
'pst',
'psu',
'psw',
'psy',
'pt',
'pta',
'pth',
'pti',
'ptn',
'pto',
'ptp',
'ptr',
'ptt',
'ptu',
'ptv',
'ptw',
'pty',
'pua',
'pub',
'puc',
'pud',
'pue',
'puf',
'pug',
'pui',
'puj',
'puk',
'pum',
'puo',
'pup',
'puq',
'pur',
'put',
'puu',
'puw',
'pux',
'puy',
'puz',
'pwa',
'pwb',
'pwg',
'pwi',
'pwm',
'pwn',
'pwo',
'pwr',
'pww',
'pxm',
'pye',
'pym',
'pyn',
'pys',
'pyu',
'pyx',
'pyy',
'pzn',
'qaa-qtz',
'qu',
'qua',
'qub',
'quc',
'qud',
'quf',
'qug',
'quh',
'qui',
'quk',
'qul',
'qum',
'qun',
'qup',
'quq',
'qur',
'qus',
'quv',
'quw',
'qux',
'quy',
'quz',
'qva',
'qvc',
'qve',
'qvh',
'qvi',
'qvj',
'qvl',
'qvm',
'qvn',
'qvo',
'qvp',
'qvs',
'qvw',
'qvy',
'qvz',
'qwa',
'qwc',
'qwh',
'qwm',
'qws',
'qwt',
'qxa',
'qxc',
'qxh',
'qxl',
'qxn',
'qxo',
'qxp',
'qxq',
'qxr',
'qxs',
'qxt',
'qxu',
'qxw',
'qya',
'qyp',
'raa',
'rab',
'rac',
'rad',
'raf',
'rag',
'rah',
'rai',
'raj',
'rak',
'ral',
'ram',
'ran',
'rao',
'rap',
'raq',
'rar',
'ras',
'rat',
'rau',
'rav',
'raw',
'rax',
'ray',
'raz',
'rbb',
'rbk',
'rbl',
'rbp',
'rcf',
'rdb',
'rea',
'reb',
'ree',
'reg',
'rei',
'rej',
'rel',
'rem',
'ren',
'rer',
'res',
'ret',
'rey',
'rga',
'rge',
'rgk',
'rgn',
'rgr',
'rgs',
'rgu',
'rhg',
'rhp',
'ria',
'rie',
'rif',
'ril',
'rim',
'rin',
'rir',
'rit',
'riu',
'rjg',
'rji',
'rjs',
'rka',
'rkb',
'rkh',
'rki',
'rkm',
'rkt',
'rkw',
'rm',
'rma',
'rmb',
'rmc',
'rmd',
'rme',
'rmf',
'rmg',
'rmh',
'rmi',
'rmk',
'rml',
'rmm',
'rmn',
'rmo',
'rmp',
'rmq',
'rms',
'rmt',
'rmu',
'rmv',
'rmw',
'rmx',
'rmy',
'rmz',
'rn',
'rna',
'rnd',
'rng',
'rnl',
'rnn',
'rnp',
'rnr',
'rnw',
'ro',
'roa',
'rob',
'roc',
'rod',
'roe',
'rof',
'rog',
'rol',
'rom',
'roo',
'rop',
'ror',
'rou',
'row',
'rpn',
'rpt',
'rri',
'rro',
'rrt',
'rsb',
'rsi',
'rsl',
'rtc',
'rth',
'rtm',
'rtw',
'ru',
'rub',
'ruc',
'rue',
'ruf',
'rug',
'ruh',
'rui',
'ruk',
'ruo',
'rup',
'ruq',
'rut',
'ruu',
'ruy',
'ruz',
'rw',
'rwa',
'rwk',
'rwm',
'rwo',
'rwr',
'rxd',
'rxw',
'ryn',
'rys',
'ryu',
'sa',
'saa',
'sab',
'sac',
'sad',
'sae',
'saf',
'sah',
'sai',
'saj',
'sak',
'sal',
'sam',
'sao',
'sap',
'saq',
'sar',
'sas',
'sat',
'sau',
'sav',
'saw',
'sax',
'say',
'saz',
'sba',
'sbb',
'sbc',
'sbd',
'sbe',
'sbf',
'sbg',
'sbh',
'sbi',
'sbj',
'sbk',
'sbl',
'sbm',
'sbn',
'sbo',
'sbp',
'sbq',
'sbr',
'sbs',
'sbt',
'sbu',
'sbv',
'sbw',
'sbx',
'sby',
'sbz',
'sc',
'scb',
'sce',
'scf',
'scg',
'sch',
'sci',
'sck',
'scl',
'scn',
'sco',
'scp',
'scq',
'scs',
'scu',
'scv',
'scw',
'scx',
'sd',
'sda',
'sdb',
'sdc',
'sde',
'sdf',
'sdg',
'sdh',
'sdj',
'sdk',
'sdl',
'sdm',
'sdn',
'sdo',
'sdp',
'sdr',
'sds',
'sdt',
'sdu',
'sdx',
'sdz',
'se',
'sea',
'seb',
'sec',
'sed',
'see',
'sef',
'seg',
'seh',
'sei',
'sej',
'sek',
'sel',
'sem',
'sen',
'seo',
'sep',
'seq',
'ser',
'ses',
'set',
'seu',
'sev',
'sew',
'sey',
'sez',
'sfb',
'sfe',
'sfm',
'sfs',
'sfw',
'sg',
'sga',
'sgb',
'sgc',
'sgd',
'sge',
'sgg',
'sgh',
'sgi',
'sgj',
'sgk',
'sgm',
'sgn',
'sgo',
'sgp',
'sgr',
'sgs',
'sgt',
'sgu',
'sgw',
'sgx',
'sgy',
'sgz',
'sh',
'sha',
'shb',
'shc',
'shd',
'she',
'shg',
'shh',
'shi',
'shj',
'shk',
'shl',
'shm',
'shn',
'sho',
'shp',
'shq',
'shr',
'shs',
'sht',
'shu',
'shv',
'shw',
'shx',
'shy',
'shz',
'si',
'sia',
'sib',
'sid',
'sie',
'sif',
'sig',
'sih',
'sii',
'sij',
'sik',
'sil',
'sim',
'sio',
'sip',
'siq',
'sir',
'sis',
'sit',
'siu',
'siv',
'siw',
'six',
'siy',
'siz',
'sja',
'sjb',
'sjd',
'sje',
'sjg',
'sjk',
'sjl',
'sjm',
'sjn',
'sjo',
'sjp',
'sjr',
'sjs',
'sjt',
'sju',
'sjw',
'sk',
'ska',
'skb',
'skc',
'skd',
'ske',
'skf',
'skg',
'skh',
'ski',
'skj',
'skk',
'skm',
'skn',
'sko',
'skp',
'skq',
'skr',
'sks',
'skt',
'sku',
'skv',
'skw',
'skx',
'sky',
'skz',
'sl',
'sla',
'slc',
'sld',
'sle',
'slf',
'slg',
'slh',
'sli',
'slj',
'sll',
'slm',
'sln',
'slp',
'slq',
'slr',
'sls',
'slt',
'slu',
'slw',
'slx',
'sly',
'slz',
'sm',
'sma',
'smb',
'smc',
'smd',
'smf',
'smg',
'smh',
'smi',
'smj',
'smk',
'sml',
'smm',
'smn',
'smp',
'smq',
'smr',
'sms',
'smt',
'smu',
'smv',
'smw',
'smx',
'smy',
'smz',
'sn',
'snb',
'snc',
'sne',
'snf',
'sng',
'snh',
'sni',
'snj',
'snk',
'snl',
'snm',
'snn',
'sno',
'snp',
'snq',
'snr',
'sns',
'snu',
'snv',
'snw',
'snx',
'sny',
'snz',
'so',
'soa',
'sob',
'soc',
'sod',
'soe',
'sog',
'soh',
'soi',
'soj',
'sok',
'sol',
'son',
'soo',
'sop',
'soq',
'sor',
'sos',
'sou',
'sov',
'sow',
'sox',
'soy',
'soz',
'spb',
'spc',
'spd',
'spe',
'spg',
'spi',
'spk',
'spl',
'spm',
'spo',
'spp',
'spq',
'spr',
'sps',
'spt',
'spu',
'spv',
'spx',
'spy',
'sq',
'sqa',
'sqh',
'sqk',
'sqm',
'sqn',
'sqo',
'sqq',
'sqr',
'sqs',
'sqt',
'squ',
'sr',
'sra',
'srb',
'src',
'sre',
'srf',
'srg',
'srh',
'sri',
'srk',
'srl',
'srm',
'srn',
'sro',
'srq',
'srr',
'srs',
'srt',
'sru',
'srv',
'srw',
'srx',
'sry',
'srz',
'ss',
'ssa',
'ssb',
'ssc',
'ssd',
'sse',
'ssf',
'ssg',
'ssh',
'ssi',
'ssj',
'ssk',
'ssl',
'ssm',
'ssn',
'sso',
'ssp',
'ssq',
'ssr',
'sss',
'sst',
'ssu',
'ssv',
'ssx',
'ssy',
'ssz',
'st',
'sta',
'stb',
'std',
'ste',
'stf',
'stg',
'sth',
'sti',
'stj',
'stk',
'stl',
'stm',
'stn',
'sto',
'stp',
'stq',
'str',
'sts',
'stt',
'stu',
'stv',
'stw',
'sty',
'su',
'sua',
'sub',
'suc',
'sue',
'sug',
'sui',
'suj',
'suk',
'suq',
'sur',
'sus',
'sut',
'suv',
'suw',
'sux',
'suy',
'suz',
'sv',
'sva',
'svb',
'svc',
'sve',
'svk',
'svm',
'svr',
'svs',
'svx',
'sw',
'swb',
'swc',
'swf',
'swg',
'swh',
'swi',
'swj',
'swk',
'swl',
'swm',
'swn',
'swo',
'swp',
'swq',
'swr',
'sws',
'swt',
'swu',
'swv',
'sww',
'swx',
'swy',
'sxb',
'sxc',
'sxe',
'sxg',
'sxk',
'sxl',
'sxm',
'sxn',
'sxo',
'sxr',
'sxs',
'sxu',
'sxw',
'sya',
'syb',
'syc',
'syi',
'syk',
'syl',
'sym',
'syn',
'syo',
'syr',
'sys',
'syw',
'syy',
'sza',
'szb',
'szc',
'szd',
'sze',
'szg',
'szl',
'szn',
'szp',
'szv',
'szw',
'ta',
'taa',
'tab',
'tac',
'tad',
'tae',
'taf',
'tag',
'tai',
'taj',
'tak',
'tal',
'tan',
'tao',
'tap',
'taq',
'tar',
'tas',
'tau',
'tav',
'taw',
'tax',
'tay',
'taz',
'tba',
'tbb',
'tbc',
'tbd',
'tbe',
'tbf',
'tbg',
'tbh',
'tbi',
'tbj',
'tbk',
'tbl',
'tbm',
'tbn',
'tbo',
'tbp',
'tbr',
'tbs',
'tbt',
'tbu',
'tbv',
'tbw',
'tbx',
'tby',
'tbz',
'tca',
'tcb',
'tcc',
'tcd',
'tce',
'tcf',
'tcg',
'tch',
'tci',
'tck',
'tcl',
'tcm',
'tcn',
'tco',
'tcp',
'tcq',
'tcs',
'tct',
'tcu',
'tcw',
'tcx',
'tcy',
'tcz',
'tda',
'tdb',
'tdc',
'tdd',
'tde',
'tdf',
'tdg',
'tdh',
'tdi',
'tdj',
'tdk',
'tdl',
'tdn',
'tdo',
'tdq',
'tdr',
'tds',
'tdt',
'tdu',
'tdv',
'tdx',
'tdy',
'te',
'tea',
'teb',
'tec',
'ted',
'tee',
'tef',
'teg',
'teh',
'tei',
'tek',
'tem',
'ten',
'teo',
'tep',
'teq',
'ter',
'tes',
'tet',
'teu',
'tev',
'tew',
'tex',
'tey',
'tfi',
'tfn',
'tfo',
'tfr',
'tft',
'tg',
'tga',
'tgb',
'tgc',
'tgd',
'tge',
'tgf',
'tgh',
'tgi',
'tgj',
'tgn',
'tgo',
'tgp',
'tgq',
'tgr',
'tgs',
'tgt',
'tgu',
'tgv',
'tgw',
'tgx',
'tgy',
'tgz',
'th',
'thc',
'thd',
'the',
'thf',
'thh',
'thi',
'thk',
'thl',
'thm',
'thn',
'thp',
'thq',
'thr',
'ths',
'tht',
'thu',
'thv',
'thw',
'thx',
'thy',
'thz',
'ti',
'tia',
'tic',
'tid',
'tif',
'tig',
'tih',
'tii',
'tij',
'tik',
'til',
'tim',
'tin',
'tio',
'tip',
'tiq',
'tis',
'tit',
'tiu',
'tiv',
'tiw',
'tix',
'tiy',
'tiz',
'tja',
'tjg',
'tji',
'tjl',
'tjm',
'tjn',
'tjo',
'tjs',
'tju',
'tjw',
'tk',
'tka',
'tkb',
'tkd',
'tke',
'tkf',
'tkg',
'tkl',
'tkm',
'tkn',
'tkp',
'tkq',
'tkr',
'tks',
'tkt',
'tku',
'tkw',
'tkx',
'tkz',
'tl',
'tla',
'tlb',
'tlc',
'tld',
'tlf',
'tlg',
'tlh',
'tli',
'tlj',
'tlk',
'tll',
'tlm',
'tln',
'tlo',
'tlp',
'tlq',
'tlr',
'tls',
'tlt',
'tlu',
'tlv',
'tlx',
'tly',
'tma',
'tmb',
'tmc',
'tmd',
'tme',
'tmf',
'tmg',
'tmh',
'tmi',
'tmj',
'tmk',
'tml',
'tmm',
'tmn',
'tmo',
'tmp',
'tmq',
'tmr',
'tms',
'tmt',
'tmu',
'tmv',
'tmw',
'tmy',
'tmz',
'tn',
'tna',
'tnb',
'tnc',
'tnd',
'tne',
'tng',
'tnh',
'tni',
'tnk',
'tnl',
'tnm',
'tnn',
'tno',
'tnp',
'tnq',
'tnr',
'tns',
'tnt',
'tnu',
'tnv',
'tnw',
'tnx',
'tny',
'tnz',
'to',
'tob',
'toc',
'tod',
'toe',
'tof',
'tog',
'toh',
'toi',
'toj',
'tol',
'tom',
'too',
'top',
'toq',
'tor',
'tos',
'tou',
'tov',
'tow',
'tox',
'toy',
'toz',
'tpa',
'tpc',
'tpe',
'tpf',
'tpg',
'tpi',
'tpj',
'tpk',
'tpl',
'tpm',
'tpn',
'tpo',
'tpp',
'tpq',
'tpr',
'tpt',
'tpu',
'tpv',
'tpw',
'tpx',
'tpy',
'tpz',
'tqb',
'tql',
'tqm',
'tqn',
'tqo',
'tqp',
'tqq',
'tqr',
'tqt',
'tqu',
'tqw',
'tr',
'tra',
'trb',
'trc',
'trd',
'tre',
'trf',
'trg',
'trh',
'tri',
'trj',
'trl',
'trm',
'trn',
'tro',
'trp',
'trq',
'trr',
'trs',
'trt',
'tru',
'trv',
'trw',
'trx',
'try',
'trz',
'ts',
'tsa',
'tsb',
'tsc',
'tsd',
'tse',
'tsf',
'tsg',
'tsh',
'tsi',
'tsj',
'tsk',
'tsl',
'tsm',
'tsp',
'tsq',
'tsr',
'tss',
'tst',
'tsu',
'tsv',
'tsw',
'tsx',
'tsy',
'tsz',
'tt',
'tta',
'ttb',
'ttc',
'ttd',
'tte',
'ttf',
'ttg',
'tth',
'tti',
'ttj',
'ttk',
'ttl',
'ttm',
'ttn',
'tto',
'ttp',
'ttq',
'ttr',
'tts',
'ttt',
'ttu',
'ttv',
'ttw',
'tty',
'ttz',
'tua',
'tub',
'tuc',
'tud',
'tue',
'tuf',
'tug',
'tuh',
'tui',
'tuj',
'tul',
'tum',
'tun',
'tuo',
'tup',
'tuq',
'tus',
'tut',
'tuu',
'tuv',
'tux',
'tuy',
'tuz',
'tva',
'tvd',
'tve',
'tvk',
'tvl',
'tvm',
'tvn',
'tvo',
'tvs',
'tvt',
'tvu',
'tvw',
'tvy',
'tw',
'twa',
'twb',
'twc',
'twd',
'twe',
'twf',
'twg',
'twh',
'twl',
'twm',
'twn',
'two',
'twp',
'twq',
'twr',
'twt',
'twu',
'tww',
'twx',
'twy',
'txa',
'txb',
'txc',
'txe',
'txg',
'txh',
'txi',
'txm',
'txn',
'txo',
'txq',
'txr',
'txs',
'txt',
'txu',
'txx',
'txy',
'ty',
'tya',
'tye',
'tyh',
'tyi',
'tyj',
'tyl',
'tyn',
'typ',
'tyr',
'tys',
'tyt',
'tyu',
'tyv',
'tyx',
'tyz',
'tza',
'tzh',
'tzj',
'tzl',
'tzm',
'tzn',
'tzo',
'tzx',
'uam',
'uan',
'uar',
'uba',
'ubi',
'ubl',
'ubr',
'ubu',
'uby',
'uda',
'ude',
'udg',
'udi',
'udj',
'udl',
'udm',
'udu',
'ues',
'ufi',
'ug',
'uga',
'ugb',
'uge',
'ugn',
'ugo',
'ugy',
'uha',
'uhn',
'uis',
'uiv',
'uji',
'uk',
'uka',
'ukg',
'ukh',
'ukl',
'ukp',
'ukq',
'uks',
'uku',
'ukw',
'uky',
'ula',
'ulb',
'ulc',
'ule',
'ulf',
'uli',
'ulk',
'ull',
'ulm',
'uln',
'ulu',
'ulw',
'uma',
'umb',
'umc',
'umd',
'umg',
'umi',
'umm',
'umn',
'umo',
'ump',
'umr',
'ums',
'umu',
'una',
'und',
'une',
'ung',
'unk',
'unm',
'unn',
'unr',
'unu',
'unx',
'unz',
'uok',
'upi',
'upv',
'ur',
'ura',
'urb',
'urc',
'ure',
'urf',
'urg',
'urh',
'uri',
'urk',
'url',
'urm',
'urn',
'uro',
'urp',
'urr',
'urt',
'uru',
'urv',
'urw',
'urx',
'ury',
'urz',
'usa',
'ush',
'usi',
'usk',
'usp',
'usu',
'uta',
'ute',
'utp',
'utr',
'utu',
'uum',
'uun',
'uur',
'uuu',
'uve',
'uvh',
'uvl',
'uwa',
'uya',
'uz',
'uzn',
'uzs',
'vaa',
'vae',
'vaf',
'vag',
'vah',
'vai',
'vaj',
'val',
'vam',
'van',
'vao',
'vap',
'var',
'vas',
'vau',
'vav',
'vay',
'vbb',
'vbk',
've',
'vec',
'ved',
'vel',
'vem',
'veo',
'vep',
'ver',
'vgr',
'vgt',
'vi',
'vic',
'vid',
'vif',
'vig',
'vil',
'vin',
'vis',
'vit',
'viv',
'vka',
'vki',
'vkj',
'vkk',
'vkl',
'vkm',
'vko',
'vkp',
'vkt',
'vku',
'vlp',
'vls',
'vma',
'vmb',
'vmc',
'vmd',
'vme',
'vmf',
'vmg',
'vmh',
'vmi',
'vmj',
'vmk',
'vml',
'vmm',
'vmp',
'vmq',
'vmr',
'vms',
'vmu',
'vmv',
'vmw',
'vmx',
'vmy',
'vmz',
'vnk',
'vnm',
'vnp',
'vo',
'vor',
'vot',
'vra',
'vro',
'vrs',
'vrt',
'vsi',
'vsl',
'vsv',
'vto',
'vum',
'vun',
'vut',
'vwa',
'wa',
'waa',
'wab',
'wac',
'wad',
'wae',
'waf',
'wag',
'wah',
'wai',
'waj',
'wak',
'wal',
'wam',
'wan',
'wao',
'wap',
'waq',
'war',
'was',
'wat',
'wau',
'wav',
'waw',
'wax',
'way',
'waz',
'wba',
'wbb',
'wbe',
'wbf',
'wbh',
'wbi',
'wbj',
'wbk',
'wbl',
'wbm',
'wbp',
'wbq',
'wbr',
'wbt',
'wbv',
'wbw',
'wca',
'wci',
'wdd',
'wdg',
'wdj',
'wdk',
'wdu',
'wdy',
'wea',
'wec',
'wed',
'weg',
'weh',
'wei',
'wem',
'wen',
'weo',
'wep',
'wer',
'wes',
'wet',
'weu',
'wew',
'wfg',
'wga',
'wgb',
'wgg',
'wgi',
'wgo',
'wgu',
'wgy',
'wha',
'whg',
'whk',
'whu',
'wib',
'wic',
'wie',
'wif',
'wig',
'wih',
'wii',
'wij',
'wik',
'wil',
'wim',
'win',
'wir',
'wiu',
'wiv',
'wiy',
'wja',
'wji',
'wka',
'wkb',
'wkd',
'wkl',
'wku',
'wkw',
'wky',
'wla',
'wlc',
'wle',
'wlg',
'wli',
'wlk',
'wll',
'wlm',
'wlo',
'wlr',
'wls',
'wlu',
'wlv',
'wlw',
'wlx',
'wly',
'wma',
'wmb',
'wmc',
'wmd',
'wme',
'wmh',
'wmi',
'wmm',
'wmn',
'wmo',
'wms',
'wmt',
'wmw',
'wmx',
'wnb',
'wnc',
'wnd',
'wne',
'wng',
'wni',
'wnk',
'wnm',
'wnn',
'wno',
'wnp',
'wnu',
'wnw',
'wny',
'wo',
'woa',
'wob',
'woc',
'wod',
'woe',
'wof',
'wog',
'woi',
'wok',
'wom',
'won',
'woo',
'wor',
'wos',
'wow',
'woy',
'wpc',
'wra',
'wrb',
'wrd',
'wrg',
'wrh',
'wri',
'wrk',
'wrl',
'wrm',
'wrn',
'wro',
'wrp',
'wrr',
'wrs',
'wru',
'wrv',
'wrw',
'wrx',
'wry',
'wrz',
'wsa',
'wsi',
'wsk',
'wsr',
'wss',
'wsu',
'wsv',
'wtf',
'wth',
'wti',
'wtk',
'wtm',
'wtw',
'wua',
'wub',
'wud',
'wuh',
'wul',
'wum',
'wun',
'wur',
'wut',
'wuu',
'wuv',
'wux',
'wuy',
'wwa',
'wwb',
'wwo',
'wwr',
'www',
'wxa',
'wxw',
'wya',
'wyb',
'wyi',
'wym',
'wyr',
'wyy',
'xaa',
'xab',
'xac',
'xad',
'xae',
'xag',
'xai',
'xal',
'xam',
'xan',
'xao',
'xap',
'xaq',
'xar',
'xas',
'xat',
'xau',
'xav',
'xaw',
'xay',
'xba',
'xbb',
'xbc',
'xbd',
'xbe',
'xbg',
'xbi',
'xbj',
'xbm',
'xbn',
'xbo',
'xbp',
'xbr',
'xbw',
'xbx',
'xby',
'xcb',
'xcc',
'xce',
'xcg',
'xch',
'xcl',
'xcm',
'xcn',
'xco',
'xcr',
'xct',
'xcu',
'xcv',
'xcw',
'xcy',
'xda',
'xdc',
'xdk',
'xdm',
'xdy',
'xeb',
'xed',
'xeg',
'xel',
'xem',
'xep',
'xer',
'xes',
'xet',
'xeu',
'xfa',
'xga',
'xgb',
'xgd',
'xgf',
'xgg',
'xgi',
'xgl',
'xgm',
'xgr',
'xgu',
'xgw',
'xh',
'xha',
'xhc',
'xhd',
'xhe',
'xhr',
'xht',
'xhu',
'xhv',
'xib',
'xii',
'xil',
'xin',
'xip',
'xir',
'xiv',
'xiy',
'xjb',
'xjt',
'xka',
'xkb',
'xkc',
'xkd',
'xke',
'xkf',
'xkg',
'xkh',
'xki',
'xkj',
'xkk',
'xkl',
'xkn',
'xko',
'xkp',
'xkq',
'xkr',
'xks',
'xkt',
'xku',
'xkv',
'xkw',
'xkx',
'xky',
'xkz',
'xla',
'xlb',
'xlc',
'xld',
'xle',
'xlg',
'xli',
'xln',
'xlo',
'xlp',
'xls',
'xlu',
'xly',
'xma',
'xmb',
'xmc',
'xmd',
'xme',
'xmf',
'xmg',
'xmh',
'xmj',
'xmk',
'xml',
'xmm',
'xmn',
'xmo',
'xmp',
'xmq',
'xmr',
'xms',
'xmt',
'xmu',
'xmv',
'xmw',
'xmx',
'xmy',
'xmz',
'xna',
'xnb',
'xng',
'xnh',
'xni',
'xnk',
'xnn',
'xno',
'xnr',
'xns',
'xnt',
'xnu',
'xny',
'xnz',
'xoc',
'xod',
'xog',
'xoi',
'xok',
'xom',
'xon',
'xoo',
'xop',
'xor',
'xow',
'xpa',
'xpc',
'xpe',
'xpg',
'xpi',
'xpj',
'xpk',
'xpm',
'xpn',
'xpo',
'xpp',
'xpq',
'xpr',
'xps',
'xpt',
'xpu',
'xpy',
'xqa',
'xqt',
'xra',
'xrb',
'xrd',
'xre',
'xrg',
'xri',
'xrm',
'xrn',
'xrq',
'xrr',
'xrt',
'xru',
'xrw',
'xsa',
'xsb',
'xsc',
'xsd',
'xse',
'xsh',
'xsi',
'xsj',
'xsl',
'xsm',
'xsn',
'xso',
'xsp',
'xsq',
'xsr',
'xss',
'xsu',
'xsv',
'xsy',
'xta',
'xtb',
'xtc',
'xtd',
'xte',
'xtg',
'xth',
'xti',
'xtj',
'xtl',
'xtm',
'xtn',
'xto',
'xtp',
'xtq',
'xtr',
'xts',
'xtt',
'xtu',
'xtv',
'xtw',
'xty',
'xtz',
'xua',
'xub',
'xud',
'xug',
'xuj',
'xul',
'xum',
'xun',
'xuo',
'xup',
'xur',
'xut',
'xuu',
'xve',
'xvi',
'xvn',
'xvo',
'xvs',
'xwa',
'xwc',
'xwd',
'xwe',
'xwg',
'xwj',
'xwk',
'xwl',
'xwo',
'xwr',
'xwt',
'xww',
'xxb',
'xxk',
'xxm',
'xxr',
'xxt',
'xya',
'xyb',
'xyj',
'xyk',
'xyl',
'xyt',
'xyy',
'xzh',
'xzm',
'xzp',
'yaa',
'yab',
'yac',
'yad',
'yae',
'yaf',
'yag',
'yah',
'yai',
'yaj',
'yak',
'yal',
'yam',
'yan',
'yao',
'yap',
'yaq',
'yar',
'yas',
'yat',
'yau',
'yav',
'yaw',
'yax',
'yay',
'yaz',
'yba',
'ybb',
'ybe',
'ybh',
'ybi',
'ybj',
'ybk',
'ybl',
'ybm',
'ybn',
'ybo',
'ybx',
'yby',
'ych',
'ycl',
'ycn',
'ycp',
'yda',
'ydd',
'yde',
'ydg',
'ydk',
'yds',
'yea',
'yec',
'yee',
'yei',
'yej',
'yel',
'yer',
'yes',
'yet',
'yeu',
'yev',
'yey',
'yga',
'ygi',
'ygl',
'ygm',
'ygp',
'ygr',
'ygu',
'ygw',
'yha',
'yhd',
'yhl',
'yi',
'yia',
'yif',
'yig',
'yih',
'yii',
'yij',
'yik',
'yil',
'yim',
'yin',
'yip',
'yiq',
'yir',
'yis',
'yit',
'yiu',
'yiv',
'yix',
'yiz',
'yka',
'ykg',
'yki',
'ykk',
'ykl',
'ykm',
'ykn',
'yko',
'ykr',
'ykt',
'yku',
'yky',
'yla',
'ylb',
'yle',
'ylg',
'yli',
'yll',
'ylm',
'yln',
'ylo',
'ylr',
'ylu',
'yly',
'ymb',
'ymc',
'ymd',
'yme',
'ymg',
'ymh',
'ymi',
'ymk',
'yml',
'ymm',
'ymn',
'ymo',
'ymp',
'ymq',
'ymr',
'yms',
'ymt',
'ymx',
'ymz',
'yna',
'ynd',
'yne',
'yng',
'ynh',
'ynk',
'ynl',
'ynn',
'yno',
'ynq',
'yns',
'ynu',
'yo',
'yob',
'yog',
'yoi',
'yok',
'yol',
'yom',
'yon',
'yot',
'yox',
'yoy',
'ypa',
'ypb',
'ypg',
'yph',
'ypk',
'ypm',
'ypn',
'ypo',
'ypp',
'ypz',
'yra',
'yrb',
'yre',
'yri',
'yrk',
'yrl',
'yrm',
'yrn',
'yrs',
'yrw',
'yry',
'ysc',
'ysd',
'ysg',
'ysl',
'ysn',
'yso',
'ysp',
'ysr',
'yss',
'ysy',
'yta',
'ytl',
'ytp',
'ytw',
'yty',
'yua',
'yub',
'yuc',
'yud',
'yue',
'yuf',
'yug',
'yui',
'yuj',
'yuk',
'yul',
'yum',
'yun',
'yup',
'yuq',
'yur',
'yut',
'yuu',
'yuw',
'yux',
'yuy',
'yuz',
'yva',
'yvt',
'ywa',
'ywg',
'ywl',
'ywn',
'ywq',
'ywr',
'ywt',
'ywu',
'yww',
'yxa',
'yxg',
'yxl',
'yxm',
'yxu',
'yxy',
'yyr',
'yyu',
'yyz',
'yzg',
'yzk',
'za',
'zaa',
'zab',
'zac',
'zad',
'zae',
'zaf',
'zag',
'zah',
'zai',
'zaj',
'zak',
'zal',
'zam',
'zao',
'zap',
'zaq',
'zar',
'zas',
'zat',
'zau',
'zav',
'zaw',
'zax',
'zay',
'zaz',
'zbc',
'zbe',
'zbl',
'zbt',
'zbw',
'zca',
'zch',
'zdj',
'zea',
'zeg',
'zeh',
'zen',
'zga',
'zgb',
'zgh',
'zgm',
'zgn',
'zgr',
'zh',
'zhb',
'zhd',
'zhi',
'zhn',
'zhw',
'zia',
'zib',
'zik',
'zil',
'zim',
'zin',
'zir',
'ziw',
'ziz',
'zka',
'zkb',
'zkd',
'zkg',
'zkh',
'zkk',
'zkn',
'zko',
'zkp',
'zkr',
'zkt',
'zku',
'zkv',
'zkz',
'zlj',
'zlm',
'zln',
'zlq',
'zma',
'zmb',
'zmc',
'zmd',
'zme',
'zmf',
'zmg',
'zmh',
'zmi',
'zmj',
'zmk',
'zml',
'zmm',
'zmn',
'zmo',
'zmp',
'zmq',
'zmr',
'zms',
'zmt',
'zmu',
'zmv',
'zmw',
'zmx',
'zmy',
'zmz',
'zna',
'znd',
'zne',
'zng',
'znk',
'zns',
'zoc',
'zoh',
'zom',
'zoo',
'zoq',
'zor',
'zos',
'zpa',
'zpb',
'zpc',
'zpd',
'zpe',
'zpf',
'zpg',
'zph',
'zpi',
'zpj',
'zpk',
'zpl',
'zpm',
'zpn',
'zpo',
'zpp',
'zpq',
'zpr',
'zps',
'zpt',
'zpu',
'zpv',
'zpw',
'zpx',
'zpy',
'zpz',
'zqe',
'zra',
'zrg',
'zrn',
'zro',
'zrp',
'zrs',
'zsa',
'zsk',
'zsl',
'zsm',
'zsr',
'zsu',
'zte',
'ztg',
'ztl',
'ztm',
'ztn',
'ztp',
'ztq',
'zts',
'ztt',
'ztu',
'ztx',
'zty',
'zu',
'zua',
'zuh',
'zum',
'zun',
'zuy',
'zwa',
'zxx',
'zyb',
'zyg',
'zyj',
'zyn',
'zyp',
'zza',
+ 'zzj']
+)
 
-COUNTRIES = set((
-    "AD",
   "AE",
   "AF",
   "AG",
   "AI",
   "AL",
   "AM",
   "AO",
   "AQ",
   "AR",
   "AS",
   "AT",
   "AU",
   "AW",
   "AX",
   "AZ",
   "BA",
   "BB",
   "BD",
   "BE",
   "BF",
   "BG",
   "BH",
   "BI",
   "BJ",
   "BL",
   "BM",
   "BN",
   "BO",
   "BQ",
   "BR",
   "BS",
   "BT",
   "BV",
   "BW",
   "BY",
   "BZ",
   "CA",
   "CC",
   "CD",
   "CF",
   "CG",
   "CH",
   "CI",
   "CK",
   "CL",
   "CM",
   "CN",
   "CO",
   "CR",
   "CU",
   "CV",
   "CW",
   "CX",
   "CY",
   "CZ",
   "DE",
   "DJ",
   "DK",
   "DM",
   "DO",
   "DZ",
   "EC",
   "EE",
   "EG",
   "EH",
   "ER",
   "ES",
   "ET",
   "FI",
   "FJ",
   "FK",
   "FM",
   "FO",
   "FR",
   "GA",
   "GB",
   "GD",
   "GE",
   "GF",
   "GG",
   "GH",
   "GI",
   "GL",
   "GM",
   "GN",
   "GP",
   "GQ",
   "GR",
   "GS",
   "GT",
   "GU",
   "GW",
   "GY",
   "HK",
   "HM",
   "HN",
   "HR",
   "HT",
   "HU",
   "ID",
   "IE",
   "IL",
   "IM",
   "IN",
   "IO",
   "IQ",
   "IR",
   "IS",
   "IT",
   "JE",
   "JM",
   "JO",
   "JP",
   "KE",
   "KG",
   "KH",
   "KI",
   "KM",
   "KN",
   "KP",
   "KR",
   "KW",
   "KY",
   "KZ",
   "LA",
   "LB",
   "LC",
   "LI",
   "LK",
   "LR",
   "LS",
   "LT",
   "LU",
   "LV",
   "LY",
   "MA",
   "MC",
   "MD",
   "ME",
   "MF",
   "MG",
   "MH",
   "MK",
   "ML",
   "MM",
   "MN",
   "MO",
   "MP",
   "MQ",
   "MR",
   "MS",
   "MT",
   "MU",
   "MV",
   "MW",
   "MX",
   "MY",
   "MZ",
   "NA",
   "NC",
   "NE",
   "NF",
   "NG",
   "NI",
   "NL",
   "NO",
   "NP",
   "NR",
   "NU",
   "NZ",
   "OM",
   "PA",
   "PE",
   "PF",
   "PG",
   "PH",
   "PK",
   "PL",
   "PM",
   "PN",
   "PR",
   "PS",
   "PT",
   "PW",
   "PY",
   "QA",
   "RE",
   "RO",
   "RS",
   "RU",
   "RW",
   "SA",
   "SB",
   "SC",
   "SD",
   "SE",
   "SG",
   "SH",
   "SI",
   "SJ",
   "SK",
   "SL",
   "SM",
   "SN",
   "SO",
   "SR",
   "SS",
   "ST",
   "SV",
   "SX",
   "SY",
   "SZ",
   "TC",
   "TD",
   "TF",
   "TG",
   "TH",
   "TJ",
   "TK",
   "TL",
   "TM",
   "TN",
   "TO",
   "TR",
   "TT",
   "TV",
   "TW",
   "TZ",
   "UA",
   "UG",
   "UM",
   "US",
   "UY",
   "UZ",
   "VA",
   "VC",
   "VE",
   "VG",
   "VI",
   "VN",
   "VU",
   "WF",
   "WS",
   "YE",
   "YT",
   "ZA",
   "ZM",
-    "ZW",
-))
+COUNTRIES = set(
+['AD',
'AE',
'AF',
'AG',
'AI',
'AL',
'AM',
'AO',
'AQ',
'AR',
'AS',
'AT',
'AU',
'AW',
'AX',
'AZ',
'BA',
'BB',
'BD',
'BE',
'BF',
'BG',
'BH',
'BI',
'BJ',
'BL',
'BM',
'BN',
'BO',
'BQ',
'BR',
'BS',
'BT',
'BV',
'BW',
'BY',
'BZ',
'CA',
'CC',
'CD',
'CF',
'CG',
'CH',
'CI',
'CK',
'CL',
'CM',
'CN',
'CO',
'CR',
'CU',
'CV',
'CW',
'CX',
'CY',
'CZ',
'DE',
'DJ',
'DK',
'DM',
'DO',
'DZ',
'EC',
'EE',
'EG',
'EH',
'ER',
'ES',
'ET',
'FI',
'FJ',
'FK',
'FM',
'FO',
'FR',
'GA',
'GB',
'GD',
'GE',
'GF',
'GG',
'GH',
'GI',
'GL',
'GM',
'GN',
'GP',
'GQ',
'GR',
'GS',
'GT',
'GU',
'GW',
'GY',
'HK',
'HM',
'HN',
'HR',
'HT',
'HU',
'ID',
'IE',
'IL',
'IM',
'IN',
'IO',
'IQ',
'IR',
'IS',
'IT',
'JE',
'JM',
'JO',
'JP',
'KE',
'KG',
'KH',
'KI',
'KM',
'KN',
'KP',
'KR',
'KW',
'KY',
'KZ',
'LA',
'LB',
'LC',
'LI',
'LK',
'LR',
'LS',
'LT',
'LU',
'LV',
'LY',
'MA',
'MC',
'MD',
'ME',
'MF',
'MG',
'MH',
'MK',
'ML',
'MM',
'MN',
'MO',
'MP',
'MQ',
'MR',
'MS',
'MT',
'MU',
'MV',
'MW',
'MX',
'MY',
'MZ',
'NA',
'NC',
'NE',
'NF',
'NG',
'NI',
'NL',
'NO',
'NP',
'NR',
'NU',
'NZ',
'OM',
'PA',
'PE',
'PF',
'PG',
'PH',
'PK',
'PL',
'PM',
'PN',
'PR',
'PS',
'PT',
'PW',
'PY',
'QA',
'RE',
'RO',
'RS',
'RU',
'RW',
'SA',
'SB',
'SC',
'SD',
'SE',
'SG',
'SH',
'SI',
'SJ',
'SK',
'SL',
'SM',
'SN',
'SO',
'SR',
'SS',
'ST',
'SV',
'SX',
'SY',
'SZ',
'TC',
'TD',
'TF',
'TG',
'TH',
'TJ',
'TK',
'TL',
'TM',
'TN',
'TO',
'TR',
'TT',
'TV',
'TW',
'TZ',
'UA',
'UG',
'UM',
'US',
'UY',
'UZ',
'VA',
'VC',
'VE',
'VG',
'VI',
'VN',
'VU',
'WF',
'WS',
'YE',
'YT',
'ZA',
'ZM',
+ 'ZW']
+)
diff --git a/config b/config
index f1319a3..17c9941 100644 (file)
--- a/config
+++ b/config
@@ -216,6 +216,31 @@ from Config import *
 # Type: tuple of strings, default: see DEFAULT_APPDATA_CHECKER in AppDataCheck
 #setOption("AppDataChecker", ('appstream-util', 'validate-relax'))
 
+# Check if application performs calls to blacklisted methods
+# the 'f_name' is the regexp for the blacklisted method
+# 'good_param' is the optional parameter that will waive the result if this
+#            regexp matches output of `strings` from the binary file
+# 'description' is the explanation of why the call is blacklisted
+#bad_crypto_warning = \
+#'''This application package calls a function to explicitly set crypto ciphers
+#for SSL/TLS. That may cause the application not to use the system-wide set
+#cryptographic policy and should be modified in accordance to:
+#https://fedoraproject.org/wiki/Packaging:CryptoPolicies'''
+#
+#call_blacklist = {'crypto-policy-non-compliance-openssl' :
+#                                     {'f_name' : 'SSL_CTX_set_cipher_list',
+#                                      'good_param' : '^PROFILE=SYSTEM$',
+#                                      'description' : bad_crypto_warning},
+#                  'crypto-policy-non-compliance-gnutls-1' :
+#                                      {'f_name' : 'gnutls_priority_set_direct',
+#                                       'good_param' : '^@SYSTEM$',
+#                                       'description' : bad_crypto_warning},
+#                  'crypto-policy-non-compliance-gnutls-2' :
+#                                      {'f_name' : 'gnutls_priority_init',
+#                                       'description' : bad_crypto_warning}
+#                 }
+#setOption("WarnOnFunction", call_blacklist)
+
 # Output filters.
 # ---------------
 
index cf87105..c33a3e1 100644 (file)
--- a/rpmdiff.1
+++ b/rpmdiff.1
@@ -62,8 +62,8 @@ Valid values are:
 .BR rpm (1)
 
 .SH AUTHOR
-Originally written by Frédéric Lepied, see the file AUTHORS for
-(probably incomplete) list of additional contributors.
+Originally written by Frédéric Lepied, modified and maintained by
+numerous contributors since.
 .br
 This manual page was written by Arturo Borrero González
 <arturo.borrero.glez@gmail.com>, and is free/libre documentation
index 7e7794c..adfd40c 100644 (file)
--- a/rpmlint.1
+++ b/rpmlint.1
@@ -108,8 +108,8 @@ One or more error message printed.
 .IP 66
 Badness threshold exceeded.
 .SH AUTHOR
-Originally written by Frédéric Lepied, see the file AUTHORS for (probably
-incomplete) list of additional contributors.
+Originally written by Frédéric Lepied, modified and maintained by
+numerous contributors since.
 .SH COPYRIGHT
 This program is licensed under the GNU General Public License, see the
 file COPYING included in the distribution archive.
diff --git a/test/binary/cyrus-imapd-2.4.17-9.fc22.x86_64.rpm b/test/binary/cyrus-imapd-2.4.17-9.fc22.x86_64.rpm
new file mode 100644 (file)
index 0000000..14b40df
Binary files /dev/null and b/test/binary/cyrus-imapd-2.4.17-9.fc22.x86_64.rpm differ
diff --git a/test/binary/dovecot-2.2.9-1.fc20.x86_64.rpm b/test/binary/dovecot-2.2.9-1.fc20.x86_64.rpm
new file mode 100644 (file)
index 0000000..003e38c
Binary files /dev/null and b/test/binary/dovecot-2.2.9-1.fc20.x86_64.rpm differ
diff --git a/test/binary/ngircd-22-2.fc22.x86_64.rpm b/test/binary/ngircd-22-2.fc22.x86_64.rpm
new file mode 100644 (file)
index 0000000..d95e084
Binary files /dev/null and b/test/binary/ngircd-22-2.fc22.x86_64.rpm differ
diff --git a/test/test.config b/test/test.config
new file mode 100644 (file)
index 0000000..00da747
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- python -*-
+
+from Config import setOption
+
+bad_crypto_warning = \
+'''This application package calls a function to explicitly set crypto ciphers
+for SSL/TLS. That may cause the application not to use the system-wide set
+cryptographic policy and should be modified in accordance to:
+https://fedoraproject.org/wiki/Packaging:CryptoPolicies'''
+call_blacklist = {'crypto-policy-non-compliance-openssl' :
+                                     {'f_name' : 'SSL_CTX_set_cipher_list',
+                                      'description' : bad_crypto_warning},
+                  'crypto-policy-non-compliance-gnutls-1' :
+                                      {'f_name' : 'gnutls_priority_set_direct',
+                                       'description' : bad_crypto_warning},
+                  'crypto-policy-non-compliance-gnutls-2' :
+                                      {'f_name' : 'gnutls_priority_init',
+                                       'good_param' : 'SYSLOG',
+                                       'description' : bad_crypto_warning}
+                 }
+setOption("WarnOnFunction", call_blacklist)
diff --git a/test/test_binaries.py b/test/test_binaries.py
new file mode 100644 (file)
index 0000000..4f88eab
--- /dev/null
@@ -0,0 +1,38 @@
+import os
+
+# rpmlint's Testing needs TESTPATH
+os.environ['TESTPATH'] = os.path.dirname(__file__)
+
+
+import Testing
+import BinariesCheck
+
+
+class Tools(object):
+    '''Class providing basic tools for other classes'''
+
+    def _rpm_test_output(self, rpm):
+        '''Wrapper that checks RPM package and returns output'''
+        with Testing.getTestedPackage(rpm) as pkg:
+            Testing.startTest()
+            BinariesCheck.check.check(pkg)
+            return Testing.getOutput()
+
+
+class TestForbiddenCCalls(Tools):
+
+    def test_forbidden_c_calls(self):
+        for package in ['cyrus-imapd', 'dovecot']:
+            out = self._rpm_test_output(os.path.join('binary', package))
+            assert 'crypto-policy-non-compliance' in "\n".join(out)
+
+    def test_waived_forbidden_c_calls(self):
+        for package in ['ngircd']:
+            out = self._rpm_test_output(os.path.join('binary', package))
+            assert 'crypto-policy-non-compliance' not in "\n".join(out)
+
+# Local variables:
+# indent-tabs-mode: nil
+# py-indent-offset: 4
+# End:
+# ex: ts=4 sw=4 et
index dafc7ec..c45c4e8 100644 (file)
@@ -18,19 +18,19 @@ class Tools(object):
     '''Class providing basic tools for other classes'''
     def _spec_test_output(self, spec):
         '''Wrapper that checks spec file and returns output'''
-        pkg = Testing.getTestedSpecPackage(spec)
-        Testing.startTest()
-        # call check_spec() directly, as check() doesn't work with
-        # getTestedSpecPackage()
-        SCLCheck.check.check_spec(pkg, pkg.name)
-        return Testing.getOutput()
+        with Testing.getTestedSpecPackage(spec) as pkg:
+            Testing.startTest()
+            # call check_spec() directly, as check() doesn't work with
+            # getTestedSpecPackage()
+            SCLCheck.check.check_spec(pkg, pkg.name)
+            return Testing.getOutput()
 
     def _rpm_test_output(self, rpm):
         '''Wrapper that checks RPM package and returns output'''
-        pkg = Testing.getTestedPackage(rpm)
-        Testing.startTest()
-        SCLCheck.check.check(pkg)
-        return Testing.getOutput()
+        with Testing.getTestedPackage(rpm) as pkg:
+            Testing.startTest()
+            SCLCheck.check.check(pkg)
+            return Testing.getOutput()
 
 
 class TestSCLBacis(Tools):
index 38eabb1..929eca1 100644 (file)
@@ -7,6 +7,9 @@ import tempfile
 import Pkg
 
 
+TEST_CONFIG = os.path.join(os.environ['TESTPATH'], 'test.config')
+exec(compile(open(TEST_CONFIG).read(), TEST_CONFIG, 'exec'))
+
 currently_testing = 0
 output = []
 
index c665210..d8ee443 100755 (executable)
@@ -1,48 +1,51 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 # Generate ISO codes for use with e.g. locale subdir checks
 # http://alioth.debian.org/projects/pkg-isocodes/
 
+import os
 import sys
+from pprint import pprint
+from urllib.request import urlopen
 from xml.etree.ElementTree import ElementTree
 
 
+iso_3166_url = os.environ.get("ISO_3166_URL", "http://anonscm.debian.org/cgit/pkg-isocodes/iso-codes.git/plain/iso_3166/iso_3166.xml")
+iso_639_url = os.environ.get("ISO_639_URL", "http://anonscm.debian.org/cgit/pkg-isocodes/iso-codes.git/plain/iso_639/iso_639.xml")
+iso_639_3_url = os.environ.get("ISO_639_3_URL", "http://anonscm.debian.org/cgit/pkg-isocodes/iso-codes.git/plain/iso_639_3/iso_639_3.xml")
+
 langs = set()
 countries = set()
 
 # 2-letter country codes
-tree = ElementTree(file="/usr/share/xml/iso-codes/iso_3166.xml")
-for entry in tree.findall("iso_3166_entry"):
-    countries.add(entry.get("alpha_2_code"))
+with urlopen(iso_3166_url) as f:
+    for entry in ElementTree(file=f).findall("iso_3166_entry"):
+        countries.add(entry.get("alpha_2_code"))
 
 # 2-letter codes
-tree = ElementTree(file="/usr/share/xml/iso-codes/iso_639.xml")
-for entry in tree.findall("iso_639_entry"):
-    for attr in ("iso_639_1_code", "iso_639_2T_code"):
-        code = entry.get(attr)
-        if code:
-            langs.add(code)
-            break
+with urlopen(iso_639_url) as f:
+    for entry in ElementTree(file=f).findall("iso_639_entry"):
+        for attr in ("iso_639_1_code", "iso_639_2T_code"):
+            code = entry.get(attr)
+            if code:
+                langs.add(code)
+                break
 
 # Remaining 2-letter codes plus 3-letter ones for which we have no 2-letter one
-tree = ElementTree(file="/usr/share/xml/iso-codes/iso_639_3.xml")
-for entry in tree.findall("iso_639_3_entry"):
-    code = entry.get("part1_code")
-    if code:
-        langs.add(code)
-    if not code:
-        langs.add(entry.get("id"))
-
-print "# Generated with %s" % sys.argv[0]
-print ""
-print "LANGUAGES = set(("
-for code in sorted(langs):
-    if code:
-        print "    \"%s\"," % code
-print "))"
-print ""
-print "COUNTRIES = set(("
-for code in sorted(countries):
-    if code:
-        print "    \"%s\"," % code
-print "))"
+with urlopen(iso_639_3_url) as f:
+    for entry in ElementTree(file=f).findall("iso_639_3_entry"):
+        langs.add(entry.get("part1_code") or entry.get("id"))
+
+# Note that we are not pprint()ing the set directly because with
+# Python 3 it results in curly brace set initializers that are not
+# compatible with Python 2.6, do it with set([...]) instead.
+
+print("# Generated with %s" % sys.argv[0])
+print("")
+print("LANGUAGES = set(")
+pprint(sorted(langs))
+print(")")
+print("")
+print("COUNTRIES = set(")
+pprint(sorted(countries))
+print(")")